LAMP系統MySQL數據庫服務器優化技巧:進程的設置調優
LAMP系統MySQL數據庫服務器優化技巧:進程的設置調優
MySQL 服務器(也稱為 mysqld)進行調優。對這個進程進行調優意味著適當地分配內存,并讓 mysqld 了解將會承受何種類型的負載。加快磁盤運行速度不如減少所需的磁盤訪問次數。類似地,確保 MySQL 進程正確操作就意味著它花費在服務查詢上的時間要多于花費在處理后臺任務(如處理臨時磁盤表或打開和關閉文件)上的時間。對 mysqld 進行調優是本文的重點。
對查詢進行緩存
很多 LAMP 應用程序都嚴重依賴于數據庫,但卻會反復執行相同的查詢。每次執行查詢時,數據庫都必須要執行相同的工作 —— 對查詢進行分析,確定如何執行查詢,從磁盤中加載信息,然后將結果返回給客戶機。MySQL 有一個特性稱為查詢緩存,它將(后面會用到的)查詢結果保存在內存中。在很多情況下,這會極大地提高性能。不過,問題是查詢緩存在默認情況下是禁用的。
將 query_cache_size = 32M 添加到 /etc/my.conf 中可以啟用 32MB 的查詢緩存。
監視查詢緩存
在啟用查詢緩存之后,重要的是要理解它是否得到了有效的使用。MySQL 有幾個可以查看的變量,可以用來了解緩存中的情況。清單 2 給出了緩存的狀態。
清單 2. 顯示查詢緩存的統計信息
- mysql> SHOW STATUS LIKE 'qcache%';
- +-------------------------+------------+
- | Variable_name | Value |
- +-------------------------+------------+
- | Qcache_free_blocks | 5216 |
- | Qcache_free_memory | 14640664 |
- | Qcache_hits | 2581646882 |
- | Qcache_inserts | 360210964 |
- | Qcache_lowmem_prunes | 281680433 |
- | Qcache_not_cached | 79740667 |
- Qcache_queries_in_cache | 16927 |
- Qcache_total_blocks | 47042 |
- +-------------------------+------------+
- 8 rows in set (0.00 sec)
通常,間隔幾秒顯示這些變量就可以看出區別,這可以幫助確定緩存是否正在有效地使用。運行 FLUSH STATUS 可以重置一些計數器,如果服務器已經運行了一段時間,這會非常有幫助。
使用非常大的查詢緩存,期望可以緩存所有東西,這種想法非常誘人。由于 mysqld 必須要對緩存進行維護,例如當內存變得很低時執行剪除,因此服務器可能會在試圖管理緩存時而陷入困境。作為一條規則,如果 FLUSH QUERY CACHE 占用了很長時間,那就說明緩存太大了。
【編輯推薦】