mysql服務器為我們提供了豐富啲參數,以調整服務器滿足不同環境啲要求。下面分別討論一下這些參數:
服務器參數變量啲設置。mysql服務器參數可在服務器啟動時設置,在mysql4.0.3及以后啲版本中,有些參數也允許在線設置。在mysql4.0.2及以后de版本里,可以把一個變量名視為一個選項名來設置。如數據表緩沖區de尺寸由服務器參數talbe_cache來設置。如果需把它設置為128,則可以在命令行里增加
–table_cache=128
也可在選項文件中設置:
[mysqld]
table_cache=128
在命令行選項中_可寫-,變成:
–table-cache=128 #這種寫法更像一個標準選項
還有一種是使用–set-variable或-o選項,如:
–set-variable=table_cache=128
or
-o table_cache=128
在選項文件中可寫成:
[mysqld]
set-variable=table_cache=128
服務器參數分為全局級和會話級兩個級別。全局級參數將影響整個服務器,會話級參數則只影響某給定客戶連接上de工作。如果某個變量同時存在于兩個級別,則服務器在客戶建立連接時用全局變量de值去初始化相應啲會話級參數,一旦客戶連接建立起來后,對全局參數所作啲修改不會影響到相應啲會話級參數當前值。設置全局參數和會話級參數的語句:
全局級:
mysql> set global variable = value;
mysql> set @@global.variable = value;
會話級:
mysql> set session variable = value;
mysql> set @@session.variable = value;
默認不帶級別限定符的set語句修改的參數屬會話級,如:
mysql> set variable = value;計算機基礎知識
mysql> set @@variable = value;
可用一條set語句設置多個參數,參數間用逗號分隔,如:
set session variable = value1,value2,value3;
session和local是同義語,可用local代替session,如:@@local
具備super權限才能設置全局參數,新設置值的效力將持續到該參數被再次修改或服務器退出。設置會話級參數不用特殊的權限,新設置值的效力將持續到該值被再次修改或連接斷開。顯示參數的語句如下:
show global variables;
show global variables like test;
show session variables;
show session variables like test;
如不帶限定符,則返回會話級參數,如會話級參數不存在則返回全局級參數。
也可用命令行方式顯示服務器參數變量,如:
% mysqladmin variables
下面介紹一些mysql服務器通用的參數變量:
back_log,當多個客戶同時連接服務器時,客戶處理過程需進入一個隊列排隊等待服務器處理。該值定義服務器等待處理隊列長度的最大值,如果站點訪問量大,需加大該值。電腦基礎
delayed_queue_size,在實際插入數據表前,來自insert delayed語句的數據行會進入一個隊列等待服務器處理。該值定義該隊列能容納的數據行的最大個數。當隊列滿時,會阻塞后續的語句。加大該值能提高insert delayed語句的執行速度。
flush_time,自動存盤間隔。如果系統經常死機或重啟,把這個變量設置為一個適當的非零值,使mysql服務器每隔flush_time稱去刷新一次數據表緩沖區,將其中的信息寫入磁盤。這將導致系統性能下降,但可減少數據表被破壞或丟失數據的概率。在命令行上用–flush選項啟動服務器可使數據表在每次修改后被自動存盤。
key_buffer_size,用來容納索引塊的緩沖區的長度。加大該值可加快索引創建和修改操作的速度,該索引緩沖區越大,在內存中找到鍵值的可能性就越大,讀盤次數就越少。mysql3.23前的版本里,該參數叫key_buffer。3.23版本之后,兩種叫法都可以。
max_allowed_packet,服務器與客戶程序之間通信時使用的緩沖區在最大值。mysql 4版本之前,該最大值可取16mb,mysql 4版本以后,該值的最大值是1gb。如果客戶端與服務器需傳送大容量的數據,如blob或text值,就要加大該值。客戶端也有一個同名的變量,默認是16mb,該值也要加大。客戶端的啟動命令為:
% mysql –set-variable=max_allowed_packet=64m
max_connections,允許同時打開的連接數,如果站點繁忙,需加大該值。
table_cache,數據表緩存區的尺寸。加大該值可使服務器能夠同時打開更多的數據表,從而減少文件打開/關閉操作的次數。
注意:加大max_connections和table_cache參數的值,會使服務器占用更多的文件描述符。運行多個服務器可繞過該限制。對一些分配給每個客戶的資源變量,設置時不能過大,因為當連接數快速增長時會很快耗盡服務器的資源,造成服務器性能下降。計算機
innodb處理程序變量:
innodb_buffer_pool_size,innodb數據庫緩沖池的大小,如果有足夠的內存,可把該值設置得大些以減少讀盤操作。
innodb_log_file_size和innodb_log_files_in_group,前者設置日志文件的長度,后者設置日志文件的個數。innodb日志文件的總長度是兩者的乘積,它的總長度不得超過4gb。