国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL數(shù)據(jù)庫服務(wù)器端核心參數(shù)詳解和推薦配置

2020-01-19 00:02:59
字體:
供稿:網(wǎng)友
MySQL手冊(cè)上也有服務(wù)器端參數(shù)的解釋,以及參數(shù)值的相關(guān)說明信息,現(xiàn)針對(duì)我們大家重點(diǎn)需要注意、需要修改或影響性能 的服務(wù)器端參數(shù),作其用處的解釋和如何配置參數(shù)值的推薦,此事情拖了不少時(shí)間,為方便大家?guī)兔m錯(cuò)(注:總是斷斷續(xù)續(xù)寫的,可能存在筆誤),先以文章的方 式發(fā)布到網(wǎng)站,后續(xù)確定沒問題,將會(huì)通過新浪微博的微盤提供PPT下載,方便學(xué)習(xí)和參考。
l lower_case_table_names
Linux或類Unix平臺(tái),對(duì)文件名稱大小寫敏感,也即對(duì)數(shù)據(jù)庫、表、存儲(chǔ)過程等對(duì)象名稱大小寫敏 感,為減少開發(fā)人員的開發(fā)成本,為此推薦大家設(shè)置該參數(shù)使對(duì)象名稱都自動(dòng)轉(zhuǎn)換成小寫;
l max_connect_errors
max_connect_errors默認(rèn)值為10,也即mysqld線程沒重新啟動(dòng)過,一臺(tái)物理服務(wù)器只要連接 異常中斷累計(jì)超過10次,就再也無法連接上mysqld服務(wù),為此建議大家設(shè)置此值至少大于等于10W; 若異常中斷累計(jì)超過參數(shù)設(shè)置的值,有二種解決辦法,執(zhí)行命令:FLUSH HOSTS;或者重新啟動(dòng)mysqld服務(wù);

l interactive_timeout and wait_timeout
u interactive_timeout
處于交互狀態(tài)連接的活動(dòng)被服務(wù)器端強(qiáng)制關(guān)閉,而等待的時(shí)間,單位:秒;
u wait_timeout
與服務(wù)器端無交互狀態(tài)的連接,直到被服務(wù)器端強(qiáng)制關(guān)閉而等待的時(shí)間,此參數(shù)只對(duì)基于TCP/IP或基于 Socket通信協(xié)議建立的連接才有效,單位:秒;
u 推薦設(shè)置
interactive_timeout = 172800
wait_timeout = 172800
l transaction-isolation and binlog-format
u transaction-isolation
可供設(shè)置的值:READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ、
SERIALIZABLE,默認(rèn)的值為: REPEATABLE-READ,事務(wù)隔離級(jí)別設(shè)置的不同,對(duì)二進(jìn)制日志登記格
式影響非常大,詳細(xì)信息可見文章解讀MySQL事務(wù)的隔離級(jí)別和日志登記模式選擇技巧;
u binlog-format
復(fù)制的模式,可供設(shè)置的值:STATEMENT、ROW、MIXED(注:5.0.*只有命令行式復(fù)制),
5.1.*版本默認(rèn)設(shè)置:MIXED;
u 推薦配置
① 只讀為主的業(yè)務(wù)應(yīng)用場(chǎng)景
transaction-isolation = read-committed
binlog-format = mixed #5.1.*版本,5.0.*只能設(shè)置為 statement
① 非只讀為主的業(yè)務(wù)應(yīng)用場(chǎng)景
transaction-isolation = repeatabled-read
binlog-format = mixed #5.1.*版本,5.0.*只能設(shè)置為 statement
l event_scheduler
事務(wù)調(diào)度默認(rèn)是關(guān)閉狀態(tài),也推薦源碼編譯的版本可不編譯進(jìn)來,以及實(shí)際生產(chǎn)環(huán)境保持默認(rèn)禁用 狀態(tài),當(dāng)真正需要用的時(shí)候,可以臨時(shí)打開,命令:SET GLOBAL event_scheduler=1;
l skip_external_locking
外部鎖,也即操作系統(tǒng)所實(shí)施的鎖,只對(duì)MyISAM引擎有效,且容易造成死鎖發(fā)生,為此我們一律禁用;
l innodb_adaptive_hash_index
InnoDB引擎會(huì)根據(jù)數(shù)據(jù)的訪問頻繁度,把表的數(shù)據(jù)逐漸緩到內(nèi)存,若是一張表的數(shù)據(jù)大量緩存在 內(nèi)存中,則使用散列索引(注:Hash Index)會(huì)更高效。InnoDB內(nèi)有Hash Index機(jī)制,監(jiān)控?cái)?shù)據(jù)的訪 問情況,可以自動(dòng)創(chuàng)建和維護(hù)一個(gè)Hash Index,以提供訪問效率,減少內(nèi)存的使用;
l innodb_max_dirty_pages_pct
InnoDB主線程直接更新Innodb_buffer_pool_size中存在的數(shù)據(jù),并且不實(shí)時(shí)刷回磁盤,而是等待 相關(guān)的處罰事件發(fā)生,則允許緩存空間的數(shù)據(jù)量不實(shí)時(shí)刷回磁盤的最大百分比。比例設(shè)置較小,有利于 減少mysqld服務(wù)出現(xiàn)問題的時(shí)候恢復(fù)時(shí)間,缺點(diǎn)則是需要更多的物理I/O,為此我們必須根據(jù)業(yè)務(wù)特點(diǎn) 和可承受范圍進(jìn)行一個(gè)折中,一般范圍建議設(shè)置為5%~90%,像我們SNS游戲行業(yè)的寫非常厲害,綜合 各方面因素,設(shè)置為20%;
l innodb_commit_concurrency
含義:同一時(shí)刻,允許多少個(gè)線程同時(shí)提交InnoDB事務(wù),默認(rèn)值為0,范圍0-1000。
0 ― 允許任意數(shù)量的事務(wù)在同一時(shí)間點(diǎn)提交;
N>0 ― 允許N個(gè)事務(wù)在同一時(shí)間點(diǎn)提交;
注意事項(xiàng):
① mysqld提供服務(wù)時(shí),不許把 innodb_commit_concurrency 的值從0改為非0,或非0的值改為0;

② mysqld提供時(shí),允許把 innodb_commit_concurrency 的值N>0改為M,且M>0;
l innodb_concurrency_tickets
含義:
同一時(shí)刻,能訪問InnoDB引擎數(shù)據(jù)的線程數(shù),默認(rèn)值為500,范圍1-4294967295。
補(bǔ)充說明:當(dāng)訪問InnoDB引擎數(shù)據(jù)的線程數(shù)達(dá)到設(shè)置的上線,線程將會(huì)被放到隊(duì)列中,等待其他線程釋放ticket。
建議:
MySQL數(shù)據(jù)庫服務(wù)最大線程連接數(shù)參數(shù)max_connections,一般情況下都會(huì)設(shè)置在128-1024的范圍,再結(jié)合實(shí)際業(yè)務(wù)可能的最大事務(wù)并發(fā)度,innodb_concurrency_tickets保持默認(rèn)值一般情況下足夠。
l innodb_fast_shutdown and innodb_force_recovery
innodb_fast_shutdown:
含義:設(shè)置innodb引擎關(guān)閉的方式,默認(rèn)值為:1,正常關(guān)閉的狀態(tài);
0 ― mysqld服務(wù)關(guān)閉前,先進(jìn)行數(shù)據(jù)完全的清理和插入緩沖區(qū)的合并操作,若是臟數(shù)據(jù)
較多或者服務(wù)器性能等因素,會(huì)導(dǎo)致此過程需要數(shù)分鐘或者更長(zhǎng)時(shí)間;
1 ― 正常關(guān)閉mysqld服務(wù),針對(duì)innodb引擎不做任何其他的操作;
2 ― 若是mysqld出現(xiàn)崩潰,立即刷事務(wù)日志到磁盤上并且冷關(guān)閉mysqld服務(wù);沒有提交
的事務(wù)將會(huì)丟失,但是再啟動(dòng)mysqld服務(wù)的時(shí)候會(huì)進(jìn)行事務(wù)回滾恢復(fù);
innodb_force_recovery:
含義:
mysqld服務(wù)出現(xiàn)崩潰之后,InnoDB引擎進(jìn)行回滾的模式,默認(rèn)值為0,可設(shè)置的值0~6;
提示:
只有在需要從錯(cuò)誤狀態(tài)的數(shù)據(jù)庫進(jìn)行數(shù)據(jù)備份時(shí),才建議設(shè)置innodb_force_recovery的值大于0。 若是把此參數(shù)作為安全選項(xiàng),也可以把參數(shù)的值設(shè)置大于0,防止InnoDB引擎的數(shù)據(jù)變更,設(shè)置不同值的作用:
0 ― 正常的關(guān)閉和啟動(dòng),不會(huì)做任何強(qiáng)迫恢復(fù)操作;
1 ― 跳過錯(cuò)誤頁,讓mysqld服務(wù)繼續(xù)運(yùn)行。跳過錯(cuò)誤索引記錄和存儲(chǔ)頁,嘗試用
SELECT * INOT OUTFILE ‘../filename' FROM tablename;方式,完成數(shù)據(jù)備份;
2 ― 阻止InnoDB的主線程運(yùn)行。清理操作時(shí)出現(xiàn)mysqld服務(wù)崩潰,則會(huì)阻止數(shù)據(jù)恢復(fù)操作;
3 ― 恢復(fù)的時(shí)候,不進(jìn)行事務(wù)回滾;
4 ― 阻止INSERT緩沖區(qū)的合并操作。不做合并操作,為防止出現(xiàn)mysqld服務(wù)崩潰。不計(jì)算
表的統(tǒng)計(jì)信息
5 ― mysqld服務(wù)啟動(dòng)的時(shí)候不檢查回滾日志:InnoDB引擎對(duì)待每個(gè)不確定的事務(wù)就像提交
的事務(wù)一樣;
6 ― 不做事務(wù)日志前滾恢復(fù)操作;
推薦的參數(shù)組合配置:
innodb_fast_shutdown = 1
#若是機(jī)房條件較好可設(shè)置為0(雙路電源、UPS、RAID卡電池和供電系統(tǒng)穩(wěn)定性)
innodb_force_recovery =0
#至于出問題的時(shí)候,設(shè)置為何值,要視出錯(cuò)的原因和程度,對(duì)數(shù)據(jù)后續(xù)做的操作
l innodb_additional_mem_pool_size
含義:開辟一片內(nèi)存用于緩存InnoDB引擎的數(shù)據(jù)字典信息和內(nèi)部數(shù)據(jù)結(jié)構(gòu)(比如:自適應(yīng)HASH索引結(jié)構(gòu));
默認(rèn)值:build-in版本默認(rèn)值為:1M;Plugin-innodb版本默認(rèn)值為:8M;
提示:若是mysqld服務(wù)上的表對(duì)象數(shù)量較多,InnoDB引擎數(shù)據(jù)量很大,且 innodb_buffer_pool_size的值設(shè)置 較大,則應(yīng)該適當(dāng)?shù)卣{(diào)整innodb_additional_mem_pool_size的值。若是出現(xiàn)緩存區(qū)的內(nèi)存不足,則會(huì)直接向操作系統(tǒng)申請(qǐng)內(nèi)存分 配,并且會(huì)向MySQL的error log文件寫入警告信息;
l innodb_buffer_pool_size
含義:開辟一片內(nèi)存用于緩存InnoDB引擎表的數(shù)據(jù)和索引;
默認(rèn)值:歷史默認(rèn)值為:8M,現(xiàn)在版本默認(rèn)值為:128M;
參數(shù)最大值:受限于CPU的架構(gòu),支持32位還是支持64位,另外還受限于操作系統(tǒng)為32位還是64位;
提示:
innodb_buffer_pool_size的值設(shè)置合適,會(huì)節(jié)約訪問表對(duì)象中數(shù)據(jù)的物理IO。官方手冊(cè)上建議專用 的數(shù)據(jù)庫服務(wù)器,可考慮設(shè)置為物理內(nèi)存總量的80%,但是個(gè)人建議要看物理服務(wù)器的物理內(nèi)存總量,以及考慮: 是否只使用InnoDB引擎、mysqld內(nèi)部管理占用的內(nèi)存、最大線程連接數(shù)和臨時(shí)表等因素,官方提供的80%值作為一個(gè)參考,舉而個(gè)例子方便大家作決 定(前提:物理服務(wù)器為mysqld服務(wù)專用,且只用InnoDB引擎,假設(shè)數(shù)據(jù)量遠(yuǎn)大于物理內(nèi)存):
1).內(nèi)存配置:24G 則 innodb_buffer_pool_size=18G
1).內(nèi)存配置:32G 則 innodb_buffer_pool_size=24G
出現(xiàn)下列哪些情況,則可以考慮減小innodb_buffer_pool_size的值:
1).出現(xiàn)物理內(nèi)存的競(jìng)爭(zhēng),可能導(dǎo)致操作系統(tǒng)的分頁;
2).InnoDB預(yù)分配額外的內(nèi)存給緩沖區(qū)和結(jié)構(gòu)管理,當(dāng)分配的總內(nèi)存量超過innodb_buffer_pool_size值的10%;
3).地址空間要求必須為連續(xù)的,在windows系統(tǒng)有一個(gè)嚴(yán)重問題,DLL需要加載在特定的地址空間;
4).初始化緩沖區(qū)的時(shí)間消耗,與緩沖區(qū)的大小成正比。官方提供的數(shù)據(jù) Linux X86 64位系統(tǒng) 初始化 innodb_buffer_pool_size=10G 大概需要6秒鐘;
l innodb_flush_log_at_trx_commit AND sync_binlog
innodb_flush_log_at_trx_commit = N:
N=0 主站蜘蛛池模板: 吴旗县| 双流县| 监利县| 仙桃市| 五指山市| 仙居县| 叙永县| 嘉禾县| 山阴县| 通道| 准格尔旗| 文昌市| 澄迈县| 东阳市| 彭泽县| 达日县| 西藏| 英山县| 南涧| 上虞市| 东乡县| 荥经县| 阿克陶县| 怀柔区| 杨浦区| 渝北区| 甘肃省| 曲周县| 杭锦后旗| 海晏县| 昭苏县| 武鸣县| 吉隆县| 上林县| 车险| 梅州市| 琼中| 宝清县| 湾仔区| 余江县| 台中县|