Mysql優(yōu)化調(diào)優(yōu)中兩個(gè)重要參數(shù)table_cache和key_buffer
本文根據(jù)作者的一點(diǎn)經(jīng)驗(yàn),討論了Mysql服務(wù)器優(yōu)化中兩個(gè)非常重要的參數(shù),分別是table_cache,key_buffer_size。
table_cache指示表高速緩存的大小。當(dāng)Mysql訪問一個(gè)表時(shí),如果在Mysql表緩沖區(qū)中還有空間,那么這個(gè)表就被打開并放入表緩沖區(qū),這樣做的好處是可以更快速地訪問表中的內(nèi)容。一般來(lái)說,可以通過查看數(shù)據(jù)庫(kù)運(yùn)行峰值時(shí)間的狀態(tài)值Open_tables和Opened_tables,用以判斷是否需要增加table_cache的值,即如果open_tables接近table_cache的時(shí)候,并且Opened_tables這個(gè)值在逐步增加,那就要考慮增加這個(gè)值的大小了。
在mysql默認(rèn)安裝情況下,table_cache的值在2G內(nèi)存以下的機(jī)器中的值默認(rèn)時(shí)256到512,如果機(jī)器有4G內(nèi)存,則默認(rèn)這個(gè)值是2048,但這決意味著機(jī)器內(nèi)存越大,這個(gè)值應(yīng)該越大,因?yàn)閠able_cache加大后,使得mysql對(duì)SQL響應(yīng)的速度更快了,不可避免的會(huì)產(chǎn)生更多的死鎖(dead lock),這樣反而使得數(shù)據(jù)庫(kù)整個(gè)一套操作慢了下來(lái),嚴(yán)重影響性能。所以平時(shí)維護(hù)中還是要根據(jù)庫(kù)的實(shí)際情況去作出判斷,找到最適合你維護(hù)的庫(kù)的table_cache值,有人說:“性能優(yōu)化是一門藝術(shù)”,這話一點(diǎn)沒錯(cuò)。大凡藝術(shù)品,大都是經(jīng)過千錘百煉,精雕細(xì)琢而成。
這里還要說明一個(gè)問題,就是table_cache加大后碰到文件描述符不夠用的問題,在mysql的配置文件中有這么一段提示
引用
“The number of open tables for all threads. Increasing this value increases the number of file descriptors that mysqld requires.
Therefore you have to make sure to set the amount of open files allowed to at least 4096 in the variable "open-files-limit" in” section [mysqld_safe]”
說的就是要注意這個(gè)問題,一想到這里,部分兄弟可能會(huì)用ulimit -n 作出調(diào)整,但是這個(gè)調(diào)整實(shí)際是不對(duì)的,換個(gè)終端后,這個(gè)值又會(huì)回到原始值,所以最好用sysctl或者修改/etc/sysctl.conf文件,同時(shí)還要在配置文件中把open_files_limit這個(gè)參數(shù)增大,對(duì)于4G內(nèi)存服務(wù)器,相信現(xiàn)在購(gòu)買的服務(wù)器都差不多用4G的了,那這個(gè)這個(gè)open_files_limit至少要增大到4096,如果沒有什么特殊情況,設(shè)置成8192就可以了。
下面說說key_buffer_size這個(gè)參數(shù),key_buffer_sizeO表示索引緩沖區(qū)的大小,嚴(yán)格說是它決定了數(shù)據(jù)庫(kù)索引處理的速度,尤其是索引讀的速度。根據(jù)網(wǎng)絡(luò)一些高手寫的文章表示可以檢查狀態(tài)值Key_read_requests和Key_reads,即可知道key_buffer_size設(shè)置是否合理。比例key_reads / key_read_requests應(yīng)該盡可能的低,至少是1:100,1:1000更好,雖然我還沒有找到理論的依據(jù),但是,我在自己維護(hù)的幾臺(tái)實(shí)際運(yùn)行良好的庫(kù)做過的測(cè)試后表明,這個(gè)比值接近1:20000,這從結(jié)果證明了他們說這話的正確性,我們不妨用之。
相關(guān)文章
mysql下mysqladmin日常管理命令總結(jié)(必看篇)
下面小編就為大家?guī)?lái)一篇mysql下mysqladmin日常管理命令總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-03-03
Mysql數(shù)據(jù)庫(kù)之Binlog日志使用總結(jié)(必看篇)
下面小編就為大家?guī)?lái)一篇Mysql數(shù)據(jù)庫(kù)之Binlog日志使用總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-03-03
關(guān)于MySQL的索引之最左前綴優(yōu)化詳解
這篇文章主要介紹了關(guān)于MySQL的索引之最左前綴優(yōu)化詳解,多個(gè)普通字段組合在一起創(chuàng)建的索引叫做聯(lián)合索引, 也被稱之為組合索引,需要的朋友可以參考下2023-05-05
如何解決mysql表輸入中文出現(xiàn)問號(hào)的問題
這篇文章主要介紹了如何解決mysql表輸入中文出現(xiàn)問號(hào)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

