吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

總結一下MySQL常用的調優方法

阿銘linux ? 來源:阿銘linux ? 2023-02-08 17:14 ? 次閱讀

前言

作為一名運維,工作中跟MySQL打交道一定少不了,那么當面試官問,你是如何優化MySQL的,想必你心中多多少少會有答案。今天我就總結一下常用的調優方法。

架構層面

俗話說,眾人拾柴火焰高。當一臺MySQL頂不住時,我們就增加一臺或者多臺唄。最簡單的方法,就是做一個主從架構,然后給它加一層代理(如mysql-proxy),然后設置其讀寫分離,將讀和寫分開,當讀操作時,可以到所有MySQL服務器上去請求,從而實現負載均衡。 再高級一點,將單臺MySQL做成MySQL Cluster模式,也會提升整體性能。

系統層面

增加內存,MySQL服務是比較耗費內存的,將內存加大,然后調整其參數,從而使其處理更多請求;

給磁盤做raid10或者raid5以增加磁盤的讀寫速度;

可以重新掛載磁盤,并加上noatime參數,這樣可以減少磁盤的i/o;

MySQL自身層面

如果未配置主從同步,可以把bin-log功能關閉,減少磁盤i/o;

在my.cnf中加上skip-name-resolve,這樣可以避免由于解析主機名延遲造成mysql執行慢;

調整幾個關鍵的buffer和cache。調整的依據,主要根據數據庫的狀態來調試;

針對某些數據量很大的庫或者表,進行分開分表,從而使其查詢速度更快;

應用層面

查看慢查詢日志,根據慢查詢日志優化程序中的SQL語句,比如增加索引。首先要保證慢查詢日志已經配置:

slow_query_log= ON #開啟慢查詢日志
slow_query_log_file=/data/mysql/slow.log #慢查詢日志路徑
long_query_time=1#查詢超過多少秒就會記錄日志

buffer和cache

key_buffer_size 首先可以根據系統的內存大小設定它,大概的一個參考值:1G以下內存設定128M;2G/256M; 4G/384M;8G/1024M;16G/2048M。這個值可以通過檢查狀態值Key_read_requests和Key_reads,可以知道key_buffer_size設置是否合理。比例key_reads / key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以使用SHOW STATUS LIKE 'key_read%'獲得)。注意:該參數值設置的過大反而會使服務器整體效率降低!

table_open_cache 打開一個表的時候,會臨時把表里面的數據放到這部分內存中,一般設置成1024就夠了,它的大小我們可以通過這樣的方法來衡量:如果你發現 open_tables等于table_cache,并且opened_tables在不斷增長,那么你就需要增加table_cache的值了(上述狀態值可以使用SHOW STATUS LIKE 'Open%tables'獲得)。注意,不能盲目地把table_cache設置成很大的值。如果設置得太高,可能會造成文件描述符不足,從而造成性能不穩定或者連接失敗。

sort_buffer_size 查詢排序時所能使用的緩沖區大小,該參數對應的分配內存是每連接獨占!如果有100個連接,那么實際分配的總共排序緩沖區大小為100 × 4 = 400MB。所以,對于內存在4GB左右的服務器推薦設置為4-8M。

read_buffer_size 讀查詢操作所能使用的緩沖區大小。和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享!

join_buffer_size 聯合查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享!

myisam_sort_buffer_size 這個緩沖區主要用于修復表過程中排序索引使用的內存或者是建立索引時排序索引用到的內存大小,一般4G內存給64M即可。

query_cache_size MySQL查詢操作緩沖區的大小,通過以下做法調整:SHOW STATUS LIKE 'Qcache%'; 如果Qcache_lowmem_prunes該參數記錄有多少條查詢因為內存不足而被移除出查詢緩存。通過這個值,用戶可以適當地調整緩存大小。如果該值非常大,則表明經常出現緩沖不夠的情況,需要增加緩存大小;Qcache_free_memory:查詢緩存的內存大小,通過這個參數可以很清晰的知道當前系統的查詢內存是否夠用,是多了,還是不夠用,我們可以根據實際情況做出調整。一般情況下4G內存設置64M足夠了。

thread_cache_size 表示可以重新利用保存在緩存中線程的數,參考如下值:1G —> 8 2G —> 16 3G —> 32 3G —> 64。

除此之外,還有幾個比較關鍵的參數:

thread_concurrency 這個值設置為cpu核數的2倍即可。

wait_timeout 表示空閑的連接超時時間,默認是28800s,這個參數是和interactive_timeout一起使用的,也就是說要想讓wait_timeout 生效,必須同時設置interactive_timeout,建議他們兩個都設置為10。

max_connect_errors 是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼的情況。與性能并無太大關系。為了避免一些錯誤我們一般都設置比較大,比如說10000。

max_connections 最大的連接數,根據業務請求量適當調整,設置500足夠

max_user_connections 是指同一個賬號能夠同時連接到mysql服務的最大連接數。設置為0表示不限制。通常我們設置為100足夠。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • MySQL
    +關注

    關注

    1

    文章

    829

    瀏覽量

    26743
  • cache技術
    +關注

    關注

    0

    文章

    41

    瀏覽量

    1086

原文標題:你是如何優化MySQL的

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    史上最全性能調總結

    在說什么是性能調之前,我們先來說一下,計算機的體系結構。
    的頭像 發表于 05-13 08:57 ?6439次閱讀
    史上最全性能<b class='flag-5'>調</b><b class='flag-5'>優</b><b class='flag-5'>總結</b>

    功耗調時經常用到的幾個方法

    動手實際操作,這個階段做的深入,不僅對整個系統功耗摸底清楚,對接下來的功耗管理,提供了很大的幫助。以下為功耗調時經常用到的幾個方法:【整機功耗測量】如果產品是電池供電,需要使用【假電
    發表于 12-21 06:31

    基于全HDD aarch64服務器的Ceph性能調實踐總結

    如ISA-L也都在arm平臺上進行了優化。- 對于SPDK,也是從軟件層面在arm平臺上進行了優化。4.3 操作系統調從Linux內核來調Ceph性能,這是
    發表于 07-05 14:26

    AutoCAD中輸入Φ的的常用方法

    AutoCAD中輸入Φ的的常用方法 總結一下,在AutoCAD中Φ的的常用輸入法大致有以下幾種:
    發表于 11-08 10:24 ?1533次閱讀

    如何對電機進行調調的好處是什么?

    如何自動對電機進行調
    的頭像 發表于 08-22 00:03 ?3186次閱讀

    DWIN屏使用方法總結

    DWIN屏使用方法總結)DWIN屏使用方法總結)數據幀
    發表于 12-31 18:56 ?10次下載
    DWIN屏使用<b class='flag-5'>方法</b><b class='flag-5'>總結</b>(<b class='flag-5'>下</b>)

    總結幾種常用的單片機加密方法

    總結前人的經驗,摸索著寫點實用的方法,供大家參考:在這里不講加密算法,只討論結合軟硬件的加密方法總結
    發表于 02-09 11:23 ?0次下載
    <b class='flag-5'>總結</b>幾種<b class='flag-5'>常用</b>的單片機加密<b class='flag-5'>方法</b>

    Linux用電功耗調的筆記分享

    整理些Linux用電功耗調的筆記,分享給小伙伴,關于用電調個人覺得
    的頭像 發表于 06-23 15:19 ?4210次閱讀

    總結一下OpenCV遍歷圖像的幾種方法

    在圖形處理中,遍歷每個像素點是最基本的功能,是做算法的基礎,這篇文章來總結一下OpenCV遍歷圖像的幾種方法
    的頭像 發表于 01-18 15:08 ?1769次閱讀

    常用的遠程控制方法總結

    開個新系列,寫一下在調試工作中,常用的遠程控制方法
    的頭像 發表于 09-06 15:32 ?2359次閱讀
    <b class='flag-5'>常用</b>的遠程控制<b class='flag-5'>方法</b><b class='flag-5'>總結</b>

    javajvm調有幾種方法

    JVM調是Java應用程序性能優化過程中的重要步驟,它通過針對JVM進行優化來提高應用程序的性能和可靠性。JVM調可以根據具體的場景和需求,采用不同的
    的頭像 發表于 12-05 11:11 ?2180次閱讀

    jvm調主要是調哪里

    ,棧內存存儲方法調用和局部變量,非堆內存用于存儲加載的類信息以及些靜態變量等。 1.1 堆內存調 堆內存是JVM中最主要的內存區域,常見的調
    的頭像 發表于 12-05 11:37 ?1607次閱讀

    jvm調常用命令

    JVM調是提升Java應用性能的個重要方面,通過合理設置JVM參數可以達到優化應用性能、提高系統穩定性的目的。本文將為你詳細介紹JVM調
    的頭像 發表于 12-05 11:43 ?764次閱讀

    jvm調工具有哪些

    JVM調是提高Java應用程序性能的重要手段,而JVM調工具則是輔助開發人員進行調工作的利
    的頭像 發表于 12-05 11:44 ?1167次閱讀

    鴻蒙開發實戰:【性能調組件】

    性能調組件包含系統和應用調框架,旨在為開發者提供套性能調
    的頭像 發表于 03-13 15:12 ?515次閱讀
    鴻蒙開發實戰:【性能<b class='flag-5'>調</b><b class='flag-5'>優</b>組件】
    乐宝百家乐官网的玩法技巧和规则 | 在线百家乐怎么下注| 威尼斯人娱乐城信誉好吗| 百家乐官网U盘下载| 皇家百家乐官网的玩法技巧和规则 | 刀把状的房子做生意| 全讯网娱乐| 百家乐官网桌蓝盾在线| 百家乐策略与心得| 百家乐投住系统| 百家乐官网补牌规律| 至尊百家乐2014| 皇家国际娱乐| 24山72向吉凶断| 钱大发888扑克| 安桌百家乐官网游戏百家乐官网 | 百家乐棋牌外挂| 景泰县| 免水百家乐官网的玩法技巧和规则 | 客服| 百家乐游戏真人游戏| 皇家一号娱乐城| 杨公风水24山| 威尼斯人娱乐城 老品牌值得信赖| 澳门百家乐官网常赢打法| 全讯网百家乐的玩法技巧和规则| 百家乐官网扑克牌耙| 百家乐金海岸软件| 百家乐官网路单网下载| 百家乐永利娱乐场| 金臂百家乐官网开户送彩金| 不夜城百家乐的玩法技巧和规则 | 百家乐官网娱乐下载| 大发888娱乐场开户注册| 粤港澳百家乐官网娱乐平台| 二八杠游戏| 赌场百家乐官网的玩法技巧和规则| 大发888游戏客户端下载| 大集汇百家乐官网的玩法技巧和规则 | 赌百家乐官网的高手| 真人百家乐游戏网址|