程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL查詢優化講座之管理員的優化措施

MySQL查詢優化講座之管理員的優化措施

編輯:關於MYSQL數據庫

  前面的部分中講解的優化措施都是沒有特權的MySQL用戶能夠執行的。可以控制MySQL服務器或計算機的系統管理員能夠執行額外的優化措施。例如,有些服務器參數附屬於查詢處理過程,並且是可以調整的,而且某些硬件配置因素對查詢處理速度有直接的影響。在很多情況下,這些優化措施提高了整個服務器的性能,因此可以讓所有的MySQL用戶都受益。

  一般來說,當你執行管理員優化的時候,應該緊記以下規則:

  · 訪問內存中的數據快於訪問磁盤上的數據。

  · 盡量把數據保存在內存中可以減少磁盤操作。

  · 保留索引中的信息比保留數據記錄的內容更重要。

  我們在後面將討論如何應用這些規則。

  增加服務器緩存的大小。服務器擁有很多參數(系統變量),你可以改變這些參數來影響服務器的操作。其中的幾個參數直接地影響查詢處理的速度。你可以改變的最重要的參數是數據表緩存的大小和存儲引擎用於緩沖索引操作信息的緩存大小。如果你擁有可用的內存,就把它分配給服務器的緩存,以允許信息存儲在內存中並減少磁盤操作。這會有很好的效果,因為訪問內存中的信息比從磁盤讀取信息的速度快得多。

  · 當服務器打開表文件的時候,它試圖保持這些文件的打開狀態,以減少打開文件操作的數量。為了實現這樣的功能,它在表緩存中維護打開文件的信息。table_cache系統變量控制著這個緩存的大小。如果服務器訪問了大量的表,表緩存就會被填滿,並且服務器會關閉那些有一段時間沒有使用的表,為打開新表留出空間。你可以通過檢查Opened_tables狀態指示器來訪問表緩存的效果:

SHOW STATUS LIKE ’Opened_tables’;

  Opened_tables顯示了某個數據表必須打開的次數(因為它還沒有打開)。這個值也顯示為MySQLadmin狀態命令的輸出信息中的Opens值。如果這個數字是穩定的或緩慢增長,那麼它的設置可能是正確的。如果這個數字增長得很快,就意味著這個緩存太小了,必須經常關閉數據表來為打開其它的數據表留出空間。如果你擁有文件描述信息,增加表緩存大小將減少數據表打開操作的數量。

  · MyISAM存儲引擎使用鍵緩沖來保持與索引相關的操作的索引信息塊。它的大小是由key_buffer_size系統變量控制的。這個值越大,MySQL就一次性在內存中保持更多的索引信息塊,可以增加在內存中(而不用從磁盤上讀取新的信息塊)找到鍵值的可能性。鍵緩存的默認大小是8MB。如果你擁有很多的內存,這是一個很保守的值,你可以直接增加它的大小,並且會看到基於索引的檢索、索引的建立和修改操作的性能有很大改善。

  在MySQL 4.1以上版本中,你可以為MyISAM數據表建立附加的鍵緩存,並指定某些表使用它們。這樣可以幫助提高這些數據表上的查詢處理速度。

  · InnoDB和BDB引擎擁有自己的用於緩沖數據和索引值的緩存。它們的大小是由innodb_buffer_pool_size和bdb_cache_size變量控制的。InnoDB引擎還維護了一個日志緩沖。innodb_log_buffer_size變量可以控制它的大小。

  · 另一個專用的緩存是查詢緩存,我們在"使用查詢緩存"部分中解釋。

  當你改變這些參數值的時候,應該遵循下面一些原則:

  · 每次只改變一個參數。如果你一次改變多個相互獨立的變量,那麼就很難評估每種改變的效果了。

  · 逐漸地增加系統變量值。根據理論,數量越多,性能越好,但是如果你使某個變量變得太大了,有可能造成系統資源匮乏,導致逆向效果,降低速度。

  · 不要在運行業務MySQL數據庫的服務器上做調整參數的實驗,最好建立一個獨立的測試

[1] [2] [3] [4] [5] 下一頁

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved