亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL常見的底層優化操作教程及相關建議

2024-07-24 13:08:22
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了MySQL常見的底層優化操作教程及相關建議,包括對運行操作系統的硬件方面及存儲引擎參數的調整等零碎方面的小整理,需要的朋友可以參考下
 

1、硬件層相關優化

1.1、CPU相關

   在服務器的BIOS設置中,可調整下面的幾個配置,目的是發揮CPU最大性能,或者避免經典的NUMA問題:

(1)、選擇Performance Per Watt Optimized(DAPC)模式,發揮CPU最大性能,跑DB這種通常需要高運算量的服務就不要考慮節電了;
(2)、關閉C1E和C States等選項,目的也是為了提升CPU效率;
(3)、Memory Frequency(內存頻率)選擇Maximum Performance(最佳性能);

(4)、內存設置菜單中,啟用Node Interleaving,避免NUMA問題;
1.2、磁盤I/O相關

   下面幾個是按照IOPS性能提升的幅度排序,對于磁盤I/O可優化的一些措施:

(1)、使用SSD或者PCIe SSD設備,至少獲得數百倍甚至萬倍的IOPS提升;
(2)、購置陣列卡同時配備CACHE及BBU模塊,可明顯提升IOPS(主要是指機械盤,SSD或PCIe SSD除外。同時需要定期檢查CACHE及BBU模塊的健康狀況,確保意外時不至于丟失數據);

(3)、有陣列卡時,設置陣列寫策略為WB,甚至FORCE WB(若有雙電保護,或對數據安全性要求不是特別高的話),嚴禁使用WT策略。并且閉陣列預讀策略,基本上是雞肋,用處不大;

(4)、盡可能選用RAID-10,而非RAID-5;

(5)、使用機械盤的話,盡可能選擇高轉速的,例如選用15KRPM,而不是7.2KRPM的盤,不差幾個錢的;
2、系統層相關優化

2.1、文件系統層優化

   在文件系統層,下面幾個措施可明顯提升IOPS性能:

(1)、使用deadline/noop這兩種I/O調度器,千萬別用cfq(它不適合跑DB類服務);
(2)、使用xfs文件系統,千萬別用ext3;ext4勉強可用,但業務量很大的話,則一定要用xfs;

(3)、文件系統mount參數中增加:noatime, nodiratime, nobarrier幾個選項(nobarrier是xfs文件系統特有的);
2.2、其他內核參數優化

   針對關鍵內核參數設定合適的值,目的是為了減少swap的傾向,并且讓內存和磁盤I/O不會出現大幅波動,導致瞬間波峰負載:

(1)、將vm.swappiness設置為5-10左右即可,甚至設置為0(RHEL 7以上則慎重設置為0,除非你允許OOM kill發生),以降低使用SWAP的機會;
(2)、將vm.dirty_background_ratio設置為5-10,將vm.dirty_ratio設置為它的兩倍左右,以確保能持續將臟數據刷新到磁盤,避免瞬間I/O寫,產生嚴重等待(和MySQL中的innodb_max_dirty_pages_pct類似);

(3)、將net.ipv4.tcp_tw_recycle、net.ipv4.tcp_tw_reuse都設置為1,減少TIME_WAIT,提高TCP效率;

(4)、至于網傳的read_ahead_kb、nr_requests這兩個參數,我經過測試后,發現對讀寫混合為主的OLTP環境影響并不大(應該是對讀敏感的場景更有效果),不過沒準是我測試方法有問題,可自行斟酌是否調整;

3、MySQL層相關優化

3.1、關于版本選擇

   官方版本我們稱為ORACLE MySQL,這個沒什么好說的,相信絕大多數人會選擇它。

   我個人強烈建議選擇Percona分支版本,它是一個相對比較成熟的、優秀的MySQL分支版本,在性能提升、可靠性、管理型方面做了不少改善。它和官方ORACLE MySQL版本基本完全兼容,并且性能大約有20%以上的提升,因此我優先推薦它,我自己也從2008年一直以它為主。

   另一個重要的分支版本是MariaDB,說MariaDB是分支版本其實已經不太合適了,因為它的目標是取代ORACLE MySQL。它主要在原來的MySQL Server層做了大量的源碼級改進,也是一個非??煽康?、優秀的分支版本。但也由此產生了以GTID為代表的和官方版本無法兼容的新特性(MySQL 5.7開始,也支持GTID模式在線動態開啟或關閉了),也考慮到絕大多數人還是會跟著官方版本走,因此沒優先推薦MariaDB。

3.2、關于最重要的參數選項調整建議

   建議調整下面幾個關鍵參數以獲得較好的性能:
(1)、選擇Percona或MariaDB版本的話,強烈建議啟用thread pool特性,可使得在高并發的情況下,性能不會發生大幅下降。此外,還有extra_port功能,非常實用, 關鍵時刻能救命的。還有另外一個重要特色是 QUERY_RESPONSE_TIME 功能,也能使我們對整體的SQL響應時間分布有直觀感受;

(2)、設置default-storage-engine=InnoDB,也就是默認采用InnoDB引擎,強烈建議不要再使用MyISAM引擎了,InnoDB引擎絕對可以滿足99%以上的業務場景;

(3)、調整innodb_buffer_pool_size大小,如果是單實例且絕大多數是InnoDB引擎表的話,可考慮設置為物理內存的50% ~ 70%左右;

(4)、根據實際需要設置innodb_flush_log_at_trx_commit、sync_binlog的值。如果要求數據不能丟失,那么兩個都設為1。如果允許丟失一點數據,則可分別設為2和10。而如果完全不用care數據是否丟失的話(例如在slave上,反正大不了重做一次),則可都設為0。這三種設置值導致數據庫的性能受到影響程度分別是:高、中、低,也就是第一個會另數據庫最慢,最后一個則相反;

(5)、設置innodb_file_per_table = 1,使用獨立表空間,我實在是想不出來用共享表空間有什么好處了;

(6)、設置innodb_data_file_path = ibdata1:1G:autoextend,千萬不要用默認的10M,否則在有高并發事務時,會受到不小的影響;

(7)、設置innodb_log_file_size=256M,設置innodb_log_files_in_group=2,基本可滿足90%以上的場景;

(8)、設置long_query_time = 1,而在5.5版本以上,已經可以設置為小于1了,建議設置為0.05(50毫秒),記錄那些執行較慢的SQL,用于后續的分析排查;

(9)、根據業務實際需要,適當調整max_connection(最大連接數)、max_connection_error(最大錯誤數,建議設置為10萬以上,而open_files_limit、innodb_open_files、table_open_cache、table_definition_cache這幾個參數則可設為約10倍于max_connection的大?。?/p>

(10)、常見的誤區是把tmp_table_size和max_heap_table_size設置的比較大,曾經見過設置為1G的,這2個選項是每個連接會話都會分配的,因此不要設置過大,否則容易導致OOM發生;其他的一些連接會話級選項例如:sort_buffer_size、join_buffer_size、read_buffer_size、read_rnd_buffer_size等,也需要注意不能設置過大;

(11)、由于已經建議不再使用MyISAM引擎了,因此可以把key_buffer_size設置為32M左右,并且強烈建議關閉query cache功能;
3.3、關于Schema設計規范及SQL使用建議

   下面列舉了幾個常見有助于提升MySQL效率的Schema設計規范及SQL使用建議:

(1)、所有的InnoDB表都設計一個無業務用途的自增列做主鍵,對于絕大多數場景都是如此,真正純只讀用InnoDB表的并不多,真如此的話還不如用TokuDB來得劃算;

(2)、字段長度滿足需求前提下,盡可能選擇長度小的。此外,字段屬性盡量都加上NOT NULL約束,可一定程度提高性能;

(3)、盡可能不使用TEXT/BLOB類型,確實需要的話,建議拆分到子表中,不要和主表放在一起,避免SELECT * 的時候讀性能太差。

(4)、讀取數據時,只選取所需要的列,不要每次都SELECT *,避免產生嚴重的隨機讀問題,尤其是讀到一些TEXT/BLOB列;

(5)、對一個VARCHAR(N)列創建索引時,通常取其50%(甚至更小)左右長度創建前綴索引就足以滿足80%以上的查詢需求了,沒必要創建整列的全長度索引;

(6)、通常情況下,子查詢的性能比較差,建議改造成JOIN寫法;

(7)、多表聯接查詢時,關聯字段類型盡量一致,并且都要有索引;

(8)、多表連接查詢時,把結果集小的表(注意,這里是指過濾后的結果集,不一定是全表數據量小的)作為驅動表;

(9)、多表聯接并且有排序時,排序字段必須是驅動表里的,否則排序列無法用到索引;

(10)、多用復合索引,少用多個獨立索引,尤其是一些基數(Cardinality)太小(比如說,該列的唯一值總數少于255)的列就不要創建獨立索引了;

(11)、類似分頁功能的SQL,建議先用主鍵關聯,然后返回結果集,效率會高很多;
3.4、其他建議

   關于MySQL的管理維護的其他建議有:

(1)、通常地,單表物理大小不超過10GB,單表行數不超過1億條,行平均長度不超過8KB,如果機器性能足夠,這些數據量MySQL是完全能處理的過來的,不用擔心性能問題,這么建議主要是考慮ONLINE DDL的代價較高;

(2)、不用太擔心mysqld進程占用太多內存,只要不發生OOM kill和用到大量的SWAP都還好;

(3)、在以往,單機上跑多實例的目的是能最大化利用計算資源,如果單實例已經能耗盡大部分計算資源的話,就沒必要再跑多實例了;

(4)、定期使用pt-duplicate-key-checker檢查并刪除重復的索引。定期使用pt-index-usage工具檢查并刪除使用頻率很低的索引;

(5)、定期采集slow query log,用pt-query-digest工具進行分析,可結合Anemometer系統進行slow query管理以便分析slow query并進行后續優化工作;

(6)、可使用pt-kill殺掉超長時間的SQL請求,Percona版本中有個選項 innodb_kill_idle_transaction 也可實現該功能;

(7)、使用pt-online-schema-change來完成大表的ONLINE DDL需求;

(8)、定期使用pt-table-checksum、pt-table-sync來檢查并修復mysql主從復制的數據差異;



注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品免高潮费视频| 57pao国产成人免费| 国产精品激情自拍| 91成人性视频| 欧美性高潮在线| 91久久精品一区| 国产精品视频网站| 国内精品一区二区三区| 日韩日本欧美亚洲| 国产精品天天狠天天看| 亚洲激情第一页| 亚洲有声小说3d| 日韩激情片免费| 亚洲在线免费观看| 亚洲国产精品99| 精品精品国产国产自在线| 国产v综合ⅴ日韩v欧美大片| 欧美激情免费在线| www.亚洲成人| 国产成人短视频| 中文字幕国产精品| 久久久亚洲国产天美传媒修理工| 国产精品国产亚洲伊人久久| 色妞在线综合亚洲欧美| 欧美日韩中文字幕在线| 欧美在线观看网址综合| 亚洲精品资源在线| 亚洲精品美女在线| 国产精品一区电影| 欧美精品videos性欧美| 国产精品精品一区二区三区午夜版| 亚洲欧洲高清在线| 久久久久中文字幕2018| 久久精品精品电影网| 国产亚洲精品一区二555| 亚洲电影免费观看高清完整版在线| 国产久一一精品| 高清欧美性猛交xxxx| 亚洲午夜精品久久久久久久久久久久| 91视频国产一区| 日韩欧美极品在线观看| 亚洲free性xxxx护士白浆| 综合av色偷偷网| 欧美成人免费一级人片100| 日韩av在线网站| 日韩高清电影好看的电视剧电影| 亚洲福利影片在线| 国语自产在线不卡| 26uuu国产精品视频| 78m国产成人精品视频| 欧美另类极品videosbest最新版本| 欧美裸体xxxxx| 久久久国产一区| 福利一区福利二区微拍刺激| 亚洲精品aⅴ中文字幕乱码| 欧美精品九九久久| 97视频在线观看网址| 国产精品一区二区三区免费视频| 成人黄色在线观看| 亚洲一区中文字幕在线观看| 日韩亚洲一区二区| 亚洲女人天堂成人av在线| 黑人精品xxx一区| 欧美极品在线视频| 中文字幕国产精品久久| 欧美在线观看网站| 精品一区二区电影| 97国产真实伦对白精彩视频8| 91最新国产视频| 午夜精品久久久久久久男人的天堂| 青青a在线精品免费观看| 亚洲大胆美女视频| 欧美精品18videos性欧美| 在线观看日韩专区| 国产美女高潮久久白浆| 欧美一级片在线播放| 亚洲福利视频专区| 国产日韩在线一区| 欧美裸体xxxxx| 久久免费在线观看| 亚洲国产精品yw在线观看| 韩国欧美亚洲国产| 久久精品视频亚洲| 国内精品久久久| 亚洲中国色老太| 欧美成年人视频网站| 亚洲理论片在线观看| 日日狠狠久久偷偷四色综合免费| 日韩av电影免费观看高清| 高清欧美一区二区三区| 亚洲视频在线免费观看| 91精品久久久久久久久久久久久| 日本欧美黄网站| 97在线视频一区| 中文字幕久热精品在线视频| 亚洲精品成人久久电影| 亚洲成人亚洲激情| 欧美有码在线观看视频| 欧美日韩午夜激情| 日韩在线观看免费高清完整版| 亚洲精品美女网站| 日韩亚洲欧美中文高清在线| 国产99视频精品免视看7| 亚洲18私人小影院| 欧美日韩国产一区在线| 欧美日韩综合视频网址| 亚洲美女中文字幕| 久久夜精品香蕉| 色中色综合影院手机版在线观看| 欧美成人中文字幕| 国语自产精品视频在免费| 午夜剧场成人观在线视频免费观看| 亚洲自拍高清视频网站| 久久久精品中文字幕| www.亚洲免费视频| 九九久久久久99精品| 国产视频精品xxxx| 亚洲欧美www| 欧美大片免费观看在线观看网站推荐| 中文字幕亚洲综合久久筱田步美| 欧美午夜丰满在线18影院| 亚洲最大的免费| 欧美日韩亚洲精品内裤| 成人国产精品一区| 亚洲国产日韩一区| 欧美一级淫片丝袜脚交| 国产精品人成电影在线观看| 91av国产在线| 91高清免费在线观看| 欧美日韩福利视频| 国产精品69av| 丝袜美腿精品国产二区| 欧美午夜精品久久久久久久| 欧美激情va永久在线播放| 久久久久久久久国产精品| 日韩av电影免费观看高清| 国产精品久久久久久久久久尿| 日韩精品视频在线观看网址| 久久久伊人欧美| 国产精品久久77777| 18性欧美xxxⅹ性满足| 国产精品综合久久久| 亚洲成人精品视频在线观看| 久久躁狠狠躁夜夜爽| 亚洲综合中文字幕在线| 日韩免费不卡av| 久久69精品久久久久久久电影好| 欧美极品美女视频网站在线观看免费| 欧美亚洲视频在线观看| 精品久久久久人成| 在线观看中文字幕亚洲| 91精品在线观看视频| 亚洲人成在线一二| 菠萝蜜影院一区二区免费| 久久理论片午夜琪琪电影网| 韩国三级日本三级少妇99| 国产日韩欧美在线播放| 亚洲va欧美va国产综合久久| 久久福利网址导航| 久久精品国产亚洲7777| 成人乱人伦精品视频在线观看| 欧美日韩综合视频网址| 国产免费一区视频观看免费| 亚洲国产高清高潮精品美女|