下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1、硬件層相關(guān)優(yōu)化CPU 相關(guān)在服務(wù)器的BIOS設(shè)置中,可調(diào)整下面的幾個(gè)配置,目的是發(fā)揮CPU最大性能,或者防止經(jīng)典的NUMA問題:1、選擇Performance Per Watt Optimized (DAPC)模式,發(fā)揮CPU最大性能,跑DB這種通 常需要高運(yùn)算量的服務(wù)就不要考慮節(jié)電了;2、關(guān)閉C1E和C States等選項(xiàng),目的也是為了提升CPU效率;3、Memory Frequency (內(nèi)存頻率)選擇 Maximum Performance (最正確性能);4、內(nèi)存設(shè)置菜單中,啟用Node Interleaving,防止NUMA問題;磁盤I/O相關(guān)下面幾個(gè)是按照IOPS性能提升的幅度
2、排序,對于磁盤I/O可優(yōu)化的一些措施:1、使用SSD或者PCIe SSD設(shè)備,至少獲得數(shù)百倍甚至萬倍的IOPS提升;2、購置陣列卡同時(shí)配備CACHE及BBU模塊,可明顯提升IOPS (主要是指機(jī)械盤,SSD或P Cie SSD除外。同時(shí)需要定期檢查CACHE及BBU模塊的健康狀況,確保意外時(shí)不至于喪失 數(shù)據(jù));3、有陣列卡時(shí),設(shè)置陣列寫策略為WB,甚至FORCE WB (假設(shè)有雙電保護(hù),或?qū)?shù)據(jù)平安性 要求不是特別高的話),嚴(yán)禁使用WT策略。并且閉陣列預(yù)讀策略,基本上是雞肋,用處不 大;4、盡可能選用RAID-10,而非RAID-5;5、使用機(jī)械盤的話,盡可能選擇高轉(zhuǎn)速的,例如選用15KRPM
3、,而不是7.2KRPM的盤,不 差幾個(gè)錢的;2、系統(tǒng)層相關(guān)優(yōu)化文件系統(tǒng)層優(yōu)化在文件系統(tǒng)層,下面幾個(gè)措施可明顯提升10PS性能:1、使用deadline/noop這兩種I/O調(diào)度器,千萬別用cfq (它不適合跑DB類服務(wù));2、使用xfs文件系統(tǒng),千萬別用ext3; ext4勉強(qiáng)可用,但業(yè)務(wù)量很大的話,那么一定要用 xfs;3、文件系統(tǒng) mount 參數(shù)中增加:noatime, nodiratime, nobarrier 幾個(gè)選項(xiàng)(nobarrier 是xfs文件系統(tǒng)特有的);其他內(nèi)核參數(shù)優(yōu)化針對關(guān)鍵內(nèi)核參數(shù)設(shè)定合適的值,目的是為了減少swap的傾向,并且讓內(nèi)存和磁盤I/O不會(huì)出現(xiàn)大幅波動(dòng),導(dǎo)致
4、瞬間波峰負(fù)載:1、將vm.swappiness設(shè)置為5To左右即可,甚至設(shè)置為0 (RHEL 7以上那么慎重設(shè)置為0,除非你允許OOM kill發(fā)生),以降低使用SWAP的機(jī)會(huì);2、將 vm. dirty background ratio 設(shè)置為 5T0,將 vm. dirty ratio 設(shè)置為它的兩倍左 右,以確保能持續(xù)將臟數(shù)據(jù)刷新到磁盤,防止瞬間I/O寫,產(chǎn)生嚴(yán)重等待(和MySQL中的 innodb_max_dirty_pages_pct 類似);3、將 net. ipv4. tcp_tw_recycle net. ipv4. tcp_tw_reuse 都設(shè)置為 1,減少 TIME_WA
5、IT, 提高TCP效率;4、至于網(wǎng)傳的read ahead kb、nr requests這兩個(gè)參數(shù),我經(jīng)過測試后,發(fā)現(xiàn)對讀寫混 合為主的OLTP環(huán)境影響并不大(應(yīng)該是對讀敏感的場景更有效果),不過沒準(zhǔn)是我測試方 法有問題,可自行斟酌是否調(diào)整;3、MySQL層相關(guān)優(yōu)化關(guān)于版本選擇官方版本我們稱為ORACLE MySQL ,這個(gè)沒什么好說的,相信絕大多數(shù)人會(huì) 選擇它。我個(gè)人強(qiáng)烈建議選擇Percona分支版本,它是一個(gè)相比照擬成熟的、優(yōu)秀的 MySQL分支版本,在性能提升、可靠性、管理型方面做了不少改善。它和官 方ORACLE MySQL版本基本完全兼容,并且性能大約有20%以上的提升,因 此我優(yōu)先
6、推薦它,我自己也從2008年一直以它為主。另一個(gè)重要的分支版本是MariaDB,說MariaDB是分支版本其實(shí)已經(jīng)不太合 適了,因?yàn)樗哪繕?biāo)是取代ORACLE MySQLo它主要在原來的MySQL Server層做了大量的源碼級改進(jìn),也是一個(gè)非??煽康摹?yōu)秀的分支版本。但 也由此產(chǎn)生了以GTID為代表的和官方版本無法兼容的新特性(MySQL 5.7開 始,也支持GTID模式在線動(dòng)態(tài)開啟或關(guān)閉了),也考慮到絕大多數(shù)人還是會(huì) 跟著官方版本走,因此沒優(yōu)先推薦MariaDB。關(guān)于最重要的參數(shù)選項(xiàng)調(diào)整建議建議調(diào)整下面幾個(gè)關(guān)鍵參數(shù)以獲得較好的性能:1、選擇Percona或MariaDB版本的話,強(qiáng)烈建議啟
7、用thread pool特性,可使得在高并發(fā) 的情況下,性能不會(huì)發(fā)生大幅下降。此外,還有extra_port功能,非常實(shí)用,關(guān)鍵時(shí)刻 能救命的。還有另外一個(gè)重要特色是QUERY RESPONSE TIME功能,也能使我們對整體的S QL響應(yīng)時(shí)間分布有直觀感受;2、設(shè)置default-storage-engine=IrmoDB,也就是默認(rèn)采用InnoDB引擎,強(qiáng)烈建議不要 再使用MylSAM引擎了,InnoDB引擎絕對可以滿足99%以上的業(yè)務(wù)場景;3、調(diào)整innodb_buffer_pool_size大小,如果是單實(shí)例且絕大多數(shù)是InnoDB引擎表的 話,可考慮設(shè)置為物理內(nèi)存的50%70%左右;
8、4、根據(jù)實(shí)際需要設(shè)置innodb_flush_log_at_trx_commit sync_binlog的值。如果要求數(shù) 據(jù)不能喪失,那么兩個(gè)都設(shè)為1。如果允許喪失一點(diǎn)數(shù)據(jù),那么可分別設(shè)為2和10。而如果 完全不用care數(shù)據(jù)是否喪失的話(例如在slave上,反正大不了重做一次),那么可都設(shè)為 0o這三種設(shè)置值導(dǎo)致數(shù)據(jù)庫的性能受到影響程度分別是:高、中、低,也就是第一個(gè)會(huì)另 數(shù)據(jù)庫最慢,最后一個(gè)那么相反;5、設(shè)置innodb_file_per_table=1,使用獨(dú)立表空間,我實(shí)在是想不出來用共享表空間 有什么好處了;6、設(shè)置 innodb data file path = ibdatal:
9、lG:autoextend,千萬不要用默認(rèn)的 10M,否 那么在有高并發(fā)事務(wù)時(shí),會(huì)受到不小的影響;7、設(shè)置 innodb log file size=256M, 設(shè)置 innodb log files in group=2, 基本可滿足 90%以上的場景;8、設(shè)置long_que:ry_time=1,而在5.5版本以上,已經(jīng)可以設(shè)置為小于1 了,建議設(shè)置 為0.05 (50毫秒),記錄那些執(zhí)行較慢的SQL,用于后續(xù)的分析排查;9、根據(jù)業(yè)務(wù)實(shí)際需要,適當(dāng)調(diào)整max connection (最大連接數(shù))、max connection erro r (最大錯(cuò)誤數(shù),建議設(shè)置為 10 萬以上,而 ope
10、n_files_limit、innodb_open_filestab le open cache table definition cache 這幾個(gè)參數(shù)那么可設(shè)為約 10 倍于 max connection 的大??;10常見的誤區(qū)是把tinp table size和max heap table size設(shè)置的比擬大,曾經(jīng)見過設(shè) 置為1G的,這2個(gè)選項(xiàng)是每個(gè)連接會(huì)話都會(huì)分配的,因此不要設(shè)置過大,否那么容易導(dǎo)致0 0M發(fā)生;其他的一些連接會(huì)話級選項(xiàng)例如:sort buffer_size join buffer_size read buffer size、read rnd buffer_size等
11、,也需要注意不能設(shè)置過大;11、由于已經(jīng)建議不再使用My ISAM引擎了,因此可以把key buffer size設(shè)置為32M左 右,并且強(qiáng)烈建議關(guān)閉query cache功能;33.關(guān)于Schema設(shè)計(jì)規(guī)范及SQL使用建議下面列舉了幾個(gè)常見有助于提升MySQL效率的Schema設(shè)計(jì)規(guī)范及SQL使用建議:1、所有的InnoDB表都設(shè)計(jì)一個(gè)無業(yè)務(wù)用途的自增列做主鍵,對于絕大多數(shù)場景都是如 此,真正純只讀用InnoDB表的并不多,真如此的話還不如用TokuDB來得劃算;2、字段長度滿足需求前提下,盡可能選擇長度小的。此外,字段屬性盡量都加上NOT NUL L約束,可一定程度提高性能;3、盡可能不使
12、用TEXT/BLOB類型,確實(shí)需要的話,建議拆分到子表中,不要和主表放在一 起,防止SELECT *的時(shí)候讀性能太差。4、讀取數(shù)據(jù)時(shí),只選取所需要的列,不要每次都SELECT *,防止產(chǎn)生嚴(yán)重的隨機(jī)讀問 題,尤其是讀到一些TEXT/BLOB歹U;5、對一個(gè)VARCHAR(N)列創(chuàng)立索引時(shí),通常取其50% (甚至更小)左右長度創(chuàng)立前綴索引就 足以滿足80%以上的查詢需求了,沒必要?jiǎng)?chuàng)立整列的全長度索引;6、通常情況下,子查詢的性能比擬差,建議改造成JOIN寫法;7、多表聯(lián)接查詢時(shí),關(guān)聯(lián)字段類型盡量一致,并且都要有索引;8、多表連接查詢時(shí),把結(jié)果集小的表(注意,這里是指過濾后的結(jié)果集,不一定是全表數(shù)
13、 據(jù)量小的)作為驅(qū)動(dòng)表;9、多表聯(lián)接并且有排序時(shí),排序字段必須是驅(qū)動(dòng)表里的,否那么排序列無法用到索弓I;10、多用復(fù)合索引,少用多個(gè)獨(dú)立索引,尤其是一些基數(shù)(Cardinality)太?。ū确秸f, 該列的唯一值總數(shù)少于255)的列就不要?jiǎng)?chuàng)立獨(dú)立索引了;11、類似分頁功能的SQL,建議先用主鍵關(guān)聯(lián),然后返回結(jié)果集,效率會(huì)高很多;33.其他建議關(guān)于MySQL的管理維護(hù)的其他建議有:1、通常地,單表物理大小不超過10GB,單表行數(shù)不超過1億條,行平均長度不超過8KB, 如果機(jī)器性能足夠,這些數(shù)據(jù)量MySQL是完全能處理的過來的,不用擔(dān)憂性能問題,這么 建議主要是考慮ONLINE DDL的代價(jià)較高;2、不用太擔(dān)憂mysqld進(jìn)程占用太多內(nèi)存,只要不發(fā)生OOM kill和用到大量的SWAP都還 好;3、在以往,單機(jī)上跑多實(shí)例的目的是能最大化利用計(jì)算資源,如果單實(shí)例已經(jīng)能耗盡大部 分計(jì)算資源的話,就沒必要再跑多實(shí)例了;4、定期使用pt-duplicate-key-checker檢查并刪除重復(fù)的索引。定期使用pt-index-usa ge工具檢查并刪除使用頻率很低的索引;5、定期采集slow query log,用pt-query-digest工具進(jìn)行分析,可結(jié)合Anemometer系 統(tǒng)進(jìn)行slo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人貨款合同示例
- 臨街商鋪?zhàn)赓U合同示例
- 上海機(jī)械設(shè)備出口合同(中英文對照)(范本)
- 親子樂園年度運(yùn)營承包合同
- 個(gè)人設(shè)備采購借款合同范本
- 臨時(shí)性勞動(dòng)合同標(biāo)準(zhǔn)合約
- 業(yè)務(wù)合作合同保證金協(xié)議暨執(zhí)行細(xì)則
- 二手車輛銷售合同書
- 兩公司汽車烤漆房租賃合同
- 兩公司戰(zhàn)略合作合同范本
- 2025年度院感管理工作計(jì)劃(后附表格版)
- 勵(lì)志課件-如何做好本職工作
- 化肥銷售工作計(jì)劃
- 2024浙江華數(shù)廣電網(wǎng)絡(luò)股份限公司招聘精英18人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 2024年山東省濟(jì)南市中考英語試題卷(含答案解析)
- 2024年社區(qū)警務(wù)規(guī)范考試題庫
- 2025中考英語作文預(yù)測:19個(gè)熱點(diǎn)話題及范文
- 第10講 牛頓運(yùn)動(dòng)定律的綜合應(yīng)用(一)(講義)(解析版)-2025年高考物理一輪復(fù)習(xí)講練測(新教材新高考)
- 靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)(2023版)解讀 2
- 2024年全國各地中考試題分類匯編(一):現(xiàn)代文閱讀含答案
- GB/T 30306-2024家用和類似用途飲用水處理濾芯
評論
0/150
提交評論