在linux下安裝mysql不是什麼難事,但是預設配置安裝的mysql卻未必工作在最佳效能狀態,這時就需要我們對其進行優化了。一般認為在mysql的配置檔案中,下列系統引數是比較關鍵的:
(1)interactive_timeout
伺服器在關閉它前在一個互動連線上等待行動的秒數。一個互動的客戶被定義為對mysql_real_connect()使用client_interactive選項的客戶。預設數值是28800,我把它改為7200.
(2)back_log
要求mysql能有的連線數量。當主要mysql執行緒在一個很短時間內得到非常多的連線請求,這個引數就會起作用,然後主執行緒花些時間(儘管很短)檢查連線並且啟動一個新程序。
back_log值指出了在mysql暫時停止回答新請求之前的短時間內多少個請求可以被存在堆疊中。只有如果期望在一個短時間內有很多連線,你需要增加它,換句話說,這值對到來的tcp/ip連線的偵聽佇列的大小。每個作業系統在這個佇列大小上都有它自己的限制。試圖設定back_log高於作業系統的限制將是無效的。
在mysql中back_log的設定取決於作業系統
在linux下這個引數的值不能大於系統引數tcp_max_syn_backlog的值
通過以下命令可以檢視tcp_max_syn_backlog的當前值
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
(3)max_connections
表示資料庫的最大連線數。這個連線數不是越大越好,因為連線會浪費記憶體的資源;這個數字應該增加,否則,你將經常看到too many connections錯誤。預設數值是100,我把它改為1024.
(4)key_buffer_size
索引塊是緩衝的並且被所有的執行緒共享。key_buffer_size是用於索引塊的緩衝區大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔得起那麼多。如果你使它太大,系統將開始換頁並且真的變慢了。預設數值是8388600(8m),我的mysql主機有2g記憶體,所以我把它改為402649088(400mb)。
是否要增加這個引數的值主要看以下兩點:
1、key_reads/key_read_requests:比例應該接近於0.01甚至越小越好
2、key_writes/key_write_requests:比例接近1較好
解決的辦法當然是增加key_buffer_size的值啦,來實在的到控制檯下面執行程式**:
set global key_buffer_size=16777218
這是設定當局的,如果只是當前會話的話,將global換成session即可。
(5)record_buffer
每個進行一個順序掃描的執行緒為其掃描的每張表分配這個大小的緩衝區。如果你做很多順序掃描,你可能想要增加該值。預設數值是131072(128k),我把它改為16773120(16m)。
(6)sort_buffer_size
排序快取區的大小,這個值越大,排序就越快。增加該值加速order by或group by操作。預設數值是2097144(2m),我把它改為16777208(16m)。
(7)table_cache
為所有執行緒開啟表的數量。這個值越大,能同時開啟的表的個數就越多。這個值不是越大越好,因為同時開啟的表過多會影響作業系統的效能。mysql對每個唯一開啟的表需要2個檔案描述符。預設數值是64,我把它改為512。
(8)thread_cache_size
可以複用的儲存在快取中的執行緒的數量。如果有,新的執行緒從快取中取得,當斷開連線的時候如果有空間,客戶的線置在快取中。如果有很多新的執行緒,為了提高效能可以改變這個值。通過比較connections和threads_created狀態的變數,可以看到這個變數的作用。我把它設定為80。
(9)wait_timeout
伺服器在關閉它之前在一個連線上等待行動的秒數。預設數值是28800,我把它改為7200。
(10)innodb_buffer_pool_size
表示innodb型別的表和索引的最大快取。這個值越大,查詢的速度就會越大。這個值太大了就會影響作業系統的效能。
注:引數的調整可以通過修改/etc/my.cnf檔案並重啟mysql實現。很明顯的,根據伺服器的硬體配置的不同,和mysql資料庫負載的不同,引數的設定也是不同的,所以不能照搬上面的引數和別人的引數過來到自己的實際應用當中,而是要根據不同的硬體和負載修改為最合適自己的引數。
MySQL 效能優化
訪問量越來越大,mysql 自然成為瓶頸,因此最近我一直在研究mysql的優化,第一步自然想到的是mysql系統 引數的優化,作為一個訪問量很大的 日20萬人次以上 的資料庫 系統,不可能指望mysql預設的系統引數能夠讓mysql執行得非常順暢。通過在網路上查詢資料和自己的嘗試,我認為以下系統引數...
MySQL 效能優化
做點東西要用到mysql故近來在學習mysql,和學習其他的資料庫一樣,總覺得建表容易,但是要讓資料庫良好的執行卻不那麼簡單.下面是一些mysql效能優化方面的知識 看了一下,受益非淺.注意 index name,age 表示在name,age兩列上建立聯合索引 由於索引對資料庫的查詢效能有著至關重...
MySQL效能優化
效能優化是通過某些有效的方法來提高mysql的執行速度,減少佔用的磁碟空間。效能優化包含很多方面,例如優化查詢速度,優化更新速度和優化mysql伺服器等。本文介紹方法的主要有 資料庫管理人員可以使用show status語句來查詢mysql資料庫的效能。語法 show statue like val...