程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MYSQL教程:服務器優化和硬件優化

MYSQL教程:服務器優化和硬件優化

編輯:關於MYSQL數據庫

1. 服務器優化

優化原則:

  • 內存裡的數據要比磁盤上的數據訪問起來快;

  • 站數據盡可能長時間地留在內存裡能減少磁盤讀寫活動的工作量;

  • 讓索引信息留在內存裡要比讓數據記錄的內容留在內存裡更重要。

針對以上幾個原則,我們應該調整服務器:

  • 增加服務器的緩存區容量,以便數據在內存在停留的時間長一點,以減少磁盤I/0。下面介紹幾個重要的緩沖區:

    • 數據表緩沖區存放著與打開的數據表相的信息,它的大小可由服務器參數“table_cache”設置。Opened_tables參數記錄服務器進行過多少次數據表打開操作,如果該值變化很大,就可能是數據表緩沖區已滿,需把一些不常用的表移出緩沖區,以騰出空打開新的數據表。可用以下命令查看Opened_tables的值:

      SHOW STATUS LIKE 'Opened_tables';
      
    • 在MyISAM和ISAM數據表中,索引被緩存在“key buffer”裡,它的大小由服務器參數“key_buffer_size”來控制。系統默認的大小是8M,如果內存充足的話可適當擴大該值,以使更多索引塊緩存在該區裡,以加快索引的速度。

    • InnoDB和BDB數據表也各有一個緩沖區,分別叫innodb_buffer_pool_size和bdb_cache_size。InnoDB還有一個日志緩沖區叫innodb_log_buffer_size。

    • 自4.0.1開始,MySQL多了一個緩沖區,叫查詢緩沖區,主要用來存放重復執行的查詢文本和結果,當再次遇到相同的查詢,服務器會直接從緩沖區中返回結果。該功能是內建的功能,如不想支持該功能,可在編譯服務器時用configure腳本的--without-query-cache選項去掉該功能。

      查詢緩沖區由三個服務器參數控制,分別是:

      1、query_cache_size    
      控制緩沖區的大小,如果該值為0,則禁用查詢緩沖功能。設置方法是在選項文件中設置:
      [MySQLd]
      set-variable = query_cache_size = 16M     
      這樣就設置了一個16M的查詢緩沖區
      
      2、query_cache_limit
      緩沖結果集的最大容量(以字節為單位),如果查詢的結果集大於該值,則不緩沖該值。
      
      3、query_cache_type
      緩沖區的操作模式。
      0表示不進行緩沖;
      1表示除SELECT SQL_NO_CACHE開頭的查詢外,其余的都緩沖;
      2表示只對以SELECT SQL_ON_CACHE開頭的查詢進行緩沖。
      

      默認情況下,按服務器的設置進行緩沖,但客戶端也可通過命令改變服務器設置。客戶端可直接用SELECT SQL_NO_CACHE和SELECT SQL_CACHE命令來要求服務器緩沖或不緩沖查詢結果。如果不想每條查詢都寫參數,我們也可在客戶端用SET SQL_QUERY_CACHE_TYPE = val;來改變服務器的查詢緩沖行為。val可取值0,1,2或OFF,ON,或DEMAND。

  • 禁用用不著的數據表處理程序。如服務器是從源碼創建,就可徹底禁用ISAM,InnoDB和BDB數據表。

  • 權限表裡的權限關系應盡可能簡單,當然了,是要在保證安全的前提下。

  • 在從源碼創建服務器時,盡量使用靜態庫而不是共享庫來完成其配置工作。靜態庫的執行速度更快,但如果要加載用戶定義函數(UDF)的話,就不能使用靜態庫,因為UDF機制必須依賴動態庫才能實現。

2. 硬件優化

為了提高數據運行速度,升級硬件是最直接的解決方案。針對數據庫應用的特點,在升級硬件時應考慮以下內容:

  • 對於數據庫服務器,內存是最重要的一個影響性能因素。通過加大內存,數據庫服務器可把更多的數據保存在緩沖區,可大大減少磁盤I/O,從而提升數據庫的整體性能。

  • 配置高速磁盤系統,以減少讀盤的等待時間,提高響應速度。

  • 合理分布磁盤I/O,應把磁盤I/O分散在多個設備上,以減少資源競爭,提高並行操作能力。

  • 配置多處理器,MySQL是多線程的數據庫,多處理器可同時執行多個線程



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