MySQL服務器有幾個影響其操作的參數(變量)。如果缺省的參數值不合適,可以將其修改為對服務器運行環境更合適的值。例如,如果您有大量的內存,可以告訴服務為磁盤和索引操作使用較大的緩沖區。這將使內存持有更多的信息並減少了必須進行的磁盤訪問的數
量。如果是一般的系統,可以告訴服務器使用較小的緩沖區,以防止它擾亂系統資源損害其他的進程。
系統變量的當前值可以通過執行mysqladmin variables 命令來檢查。變量可利用- - set - variable var_name = value 選項在命令行設置( -ovar_name = value 是等價的)。如果要想設置幾個變量,可使用多個--set-variable 選項,還可以使用下列語法在一個選項文件的[MySQLd] 組中設置變量:
set -variale=var_name=value
在附錄E的mysql程序的條款下給出了服務器變量的全部清單。有關性能優化比較常用的變量已在以下列表中給出。您還可以在MySQL參考手冊的“從MySQL中獲得最高性能”一章中找到該主題的附加討論。
back_log 引入的客戶機連接請求的數量,這些請求在從當前客戶機中處理時排隊。如果您有一個很忙的站點,可以增加該變量的值。
delayed_queue_size 此變量控制被排隊的INSERT DELAYED 語句中的行數。如果該隊列已滿,則更多的INSERT DELAYED 將堵塞,直到隊列有空間為止,這樣可防止發布那些語句的客戶機繼續進行操作。如果您有許多執行這種INSERT 的客戶機,且發現它們正在堵塞,那麼應增加該變量,使更多的客戶機更快地進行工作( INSERT D E L AYED 在4 . 5節“調度與鎖定問題”中討論)
flush_time 如果系統有問題並且經常鎖死或重新引導,應將該變量設置為非零值,這將導致服務器按flush_time 秒來刷新表的高速緩存。用這種方法來寫出對表的修改將降低性能,但可減少表訛誤或數據丟失的機會。
在Windows 中,可以在命令行上用--flush 選項啟動服務器,以迫使表的修改在每次更新後被刷新。
key _ buffer_size 用於存放索引塊緩沖區的大小。如果增加該變量值,將加快創建和修改索引操作的時間。值越大MySQL就越有可能在內存中查找鍵值,這將減少索引處理所需的磁盤訪問次數。
在MySQL3.23 以前的版本中,該變量名為key _ buffer。MySQL3.23 及後來的版本同時識別這兩個名字。
max_allowed_packet 客戶機通信所使用的緩沖區大小的最大值。如果有客戶機要發送大量的BLOB 或TEXT 的值,該服務器變量值可能需要增大。
客戶機目前使用大小為24MB 的缺省緩沖區。如果有使用較小緩沖區的舊客戶機。可能需要使該客戶機的緩沖區大一些。例如, MySQL可以按如下調用來指定一個2 4 MB 信息包的限制值:
MySQL--set-varibale max_allowed_packet=24M
max_connections 服務器允許的客戶機同時連接的最大數量。如果服務器繁忙,可能需要增加該值。例如,如果您的MySQL服務器被Web 服務器使用來處理由DBI 或PHP 腳本產生的查詢,並且還有大量的Web 通信,如果該變量設置太低的話,則您站點的訪問者會發現請求被拒絕。
table_cache 表的高速緩存的大小。增加該值可以使MySQLd 保持更多的表,同時打開並減少必須進行的文件打開和關閉操作的次數。
如果增加了max_connections 或table_cache 值的大小,服務器將需要大量的文件描述符。這將引起有關操作系統對文件描述符總進程數量限定的問題,在這種情況下您需要增加該限制值或逐步解決它。由於增加文件描述符數量的限制值,過程會發生變化,所以您可能會在一個運行腳本中使用ulimit 命令時來這樣做,該腳本可用於啟動服務器,或用於重新配置您的系統。有些系統可以通過編輯系統描述文件來簡單地配置和重新引導。對於其他一些系統,則必須編輯一個內核描述文件並重建該內核。如何繼續進行下去,請參考您系統的文檔。
解決總進程文件描述符限制的一個方法是:將數據目錄分離成多個數據目錄並運行多個服務器。這樣,通過運行多個服務器使可用的描述符數量成倍增長。但另一方面,其他的復雜因素可能會引起問題。由於命名了兩個服務器,您不能從一個單個的服務器上訪問不同數
據目錄中的數據庫,並且還需要在不同服務器之間復制授權表的權限,以便用戶需要訪問一個以上的服務器。
有兩個變量是管理員為提高性能時常增加的,它們是record _ buffer 和sort _ buffer。這些緩沖區在連接和分類操作中使用,但其值是屬於每個連接的。也就是說,每個客戶機都獲得屬於自己的緩沖區。如果使這些變量的值很大,性能可能會由於昂貴的系統資源的消耗而遭受實際的損失。如果想要修改這些變量,先執行MySQLadmin variables 查看一下它們當前的值,然後增量調整其值。這個操作使您能估計為減少嚴重的性能降低所進行的修改的效果。