綠色資源網:您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件(jiàn)專題|廠商大全

綠色資源網

技術教程
您的位置:首頁數據庫(kù)類MySQL → MySQL數據庫優化經(jīng)驗詳談

MySQL數據(jù)庫優化(huà)經驗詳談

我要評論(lùn) 2010/02/07 13:03:26 來(lái)源:綠色資源(yuán)網 編輯:綠色資源站(zhàn) [ ] 評論:0 點擊:330次

同時在線訪問量繼(jì)續增大 對於1G內存的服務器明顯感覺到(dào)吃(chī)力嚴重時甚至每天(tiān)都會死機(jī) 或者時不時的服務器卡一下 這個問題曾經困擾了我(wǒ)半個多月MySQL使用是很具伸縮性的算法,因此(cǐ)你通常能用很少(shǎo)的內存(cún)運行(háng)或給MySQL更多的被存以得到更好的性能。

安裝好mysql後,配製文件應該在/usr/local/mysql/share/mysql目錄中,配製文件有幾個,有my- huge.cnf my-medium.cnf my-large.cnf my-small.cnf,不同的(de)流量的網站(zhàn)和不同配製的服務器環境,當然需(xū)要有不同的配製文件了。

一般的情況下,my-medium.cnf這個配製文件就能滿足我們的大多需要(yào);一般我們會把配置文件拷貝(bèi)到/etc/my.cnf 隻需要修改這個配置文件就可以了,使用mysqladmin variables extended-status –u root –p 可以(yǐ)看到目前的參數,有3個配置參數是(shì)最重要的,即:


key_buffer_size
query_cache_size
table_cache

key_buffer_size隻對MyISAM表(biǎo)起(qǐ)作用。

key_buffer_size指定索引緩衝區的(de)大小,它(tā)決定索引處理的速度(dù),尤其是索引讀的速度。一般我們設為16M,實際上稍微大一點的站點 這個(gè)數字(zì)是遠遠不夠的,通過檢查狀態值Key_read_requests和Key_reads,可以知道key_buffer_size設置是否合理。比例key_reads / key_read_requests應該盡可能的低,至少是1:100,1:1000更好(上述狀態值可以(yǐ)使用SHOW STATUS LIKE ‘key_read%’獲(huò)得)。 或者如(rú)果你裝了phpmyadmin 可以通過服(fú)務器運行狀態看到,筆者推薦用(yòng)phpmyadmin管理mysql,以(yǐ)下的狀態值都是本人通過phpmyadmin獲得的實例分析:

這個(gè)服務器已經運行了20天


key_buffer_size – 128M
key_read_requests – 650759289
key_reads - 79112

比例接近1:8000 健康狀況(kuàng)非常好

另外一個估(gū)計key_buffer_size的辦法(fǎ):把(bǎ)你網站數據庫的每個表的索引所占空間大小加起來看看以此服務器為例:比較大的(de)幾個表索引加起(qǐ)來大概(gài)125M 這(zhè)個數字會(huì)隨著表變大而變大。

從4.0.1開始,MySQL提供了查詢(xún)緩衝機製(zhì)。使用查詢緩衝,MySQL將SELECT語句和查詢結果存放(fàng)在緩衝區中,今後對於同樣的SELECT語(yǔ)句(區分大(dà)小寫),將直接從緩衝區(qū)中讀(dú)取(qǔ)結果。根據MySQL用戶手冊(cè),使用查詢緩衝最多可以達到238%的(de)效率。

通(tōng)過調節以下幾個參數可以知道query_cache_size設置得是否合理


Qcache inserts
Qcache hits
Qcache lowmem prunes
Qcache free blocks
Qcache total blocks

Qcache_lowmem_prunes的值非常大,則表明經常出現緩衝(chōng)不夠的情況,同時Qcache_hits的值非常大,則表明查詢緩(huǎn)衝使用非常頻(pín)繁,此時需要(yào)增加(jiā)緩衝大小Qcache_hits的值不大,則表明你的查詢重複率很低,這種情況下使用查詢緩衝反而會(huì)影響效率,那麽可以考慮不用查詢緩衝。此外,在SELECT語(yǔ)句中加入SQL_NO_CACHE可以明確表示不使(shǐ)用查詢緩衝。

Qcache_free_blocks,如果該值非常大,則表明緩(huǎn)衝區中(zhōng)碎片很多query_cache_type指定(dìng)是否使用查詢緩衝(chōng)

我設置:


query_cache_size = 32M
query_cache_type= 1

得(dé)到如下(xià)狀態值:


Qcache queries in cache 12737 表明目前緩存的條數(shù)
Qcache inserts 20649006
Qcache hits 79060095  看來重複查詢率還挺高的
Qcache lowmem prunes 617913 有這麽多次出現緩存過低的情況
Qcache not cached 189896   
Qcache free memory 18573912  目前剩餘緩存空間
Qcache free blocks 5328 這個數字似乎有點大 碎片不(bú)少
Qcache total blocks 30953

如果內存允許32M應(yīng)該(gāi)要往上加點

table_cache指定表高速緩存的大小(xiǎo)。每當MySQL訪問一個表時,如果在表緩衝區中還有空間,該表就被打(dǎ)開並放入其中,這樣可以更快地訪問表(biǎo)內容(róng)。通過檢查峰值時間的狀態值Open_tables和Opened_tables,可以決定是否需要增加table_cache的值(zhí)。如果你發現open_tables等於(yú)table_cache,並且opened_tables在不斷增長,那(nà)麽你就需要增加table_cache的值了(上(shàng)述狀態值可以使用SHOW STATUS LIKE ‘Open%tables’獲得)。注意,不能盲目地把table_cache設置成很大的值。如(rú)果設置得太高,可能會造成文件描述符(fú)不足,從而造(zào)成(chéng)性能不穩定或者連(lián)接(jiē)失敗。

對於有1G內存的機器(qì),推薦值(zhí)是128-256。

筆者設置table_cache = 256

得到以(yǐ)下狀態:


Open tables 256
Opened tables 9046

雖(suī)然open_tables已經等於table_cache,但是相對於服務器運行時間來說,已經運行了20天,opened_tables的值也非常低。因此,增加(jiā)table_cache的值應該用處不大。如果(guǒ)運行了6個小時就出現上述值(zhí) 那就要考慮增(zēng)大table_cache。

如果你(nǐ)不需要記錄2進製log 就把這個功能關掉,注意關掉(diào)以後就不能恢複出問題前的數據了,需要(yào)您手動備份,二進製日誌包含所有(yǒu)更新數據的語句,其目的是在恢複數據庫時用(yòng)它來把數據盡可能恢複到最後(hòu)的狀態。另外,如果做同步複製( Replication )的話,也需要使用二進(jìn)製日誌傳(chuán)送修改情況。

log_bin指定(dìng)日誌文件,如果不提供文件名,MySQL將自己產生缺省文件名。MySQL會在文件名(míng)後麵自動添加數字引,每次啟動服務時,都會重新生成一個新的二進(jìn)製文件(jiàn)。

此外,使用log-bin-index可以指(zhǐ)定索引文件(jiàn);使用binlog-do-db可以(yǐ)指定記錄的數據庫;使用binlog-ignore-db可以指定不記錄的數(shù)據庫。注意的(de)是:binlog-do-db和binlog-ignore-db一次隻指定一個數據庫,指定多個數據庫需要多個(gè)語(yǔ)句。而且,MySQL會將所有的數據庫名稱改成小寫(xiě),在(zài)指(zhǐ)定(dìng)數(shù)據庫時必須全部使用小(xiǎo)寫名字,否則不會起作用。

關掉這個功能隻需要在他前麵加上#號

#log-bin

開啟慢查詢日誌( slow query log ) 慢查詢日誌對(duì)於跟蹤有問題(tí)的查詢非常有用。它記錄所有查過(guò)long_query_time的查(chá)詢,如果需要,還可(kě)以記錄不使用索(suǒ)引的(de)記錄。下麵是一個慢查詢日誌(zhì)的例子(zǐ):

開啟慢查(chá)詢日誌,需要(yào)設置參數log_slow_queries、long_query_times、log-queries-not-using-indexes。

log_slow_queries指定日誌文(wén)件,如果不提供(gòng)文件名,MySQL將自(zì)己產(chǎn)生缺省文件名。

long_query_times指定慢查詢(xún)的

關鍵(jiàn)詞:MySQL,數據庫優化

閱讀(dú)本文後您有什麽感想? 已有 人給出評價(jià)!

  • 0 歡(huān)迎喜歡
  • 0 白癡(chī)
  • 0 拜托
  • 0 哇
  • 0 加(jiā)油
  • 0 鄙視
免费人欧美成又黄又爽的视频丨一本色道久久88综合日韩精品丨国产专区日韩精品欧美色丨午夜无遮挡男女啪啪视频丨国产欧美日韩综合精品一区二区丨亚洲精品无码不卡在线播HE丨亚洲精品国产精品国自产观看丨日韩国产高清av不卡