MySQL 5.5 服務器變量詳解(一)

autocommit={0|1}html

設定MySQL事務是否自動提交,1表示當即提交,0表示須要顯式提交。做用範圍爲全局或會話,可用於配置文件中(但在5.5.8以前的版本中不可用於配置文件),屬於動態變量。mysql

 

automatic_sp_privileges={0|1}算法

設定MySQL服務器是否爲存儲例程的建立賦予其建立存儲例程上的EXECUTE和ALTER ROUTINE權限,默認爲1(賦予此兩個權限給其建立者)。做用範圍爲全局。sql

 

back_log=#數據庫

當MySQL的主線程在短期內收到大量鏈接請求時,其會花些時間檢測已經有線程併爲新請求啓動新線程,back_log參數的值即爲短期內到達的請求中有多少能夠被接受並等待主MySQL線程進行後續處理。做用範圍爲全局,能夠用配置文件,非動態變量。緩存

 

basedir=PATH, -b PATH安全

用於指定MySQL的安裝目錄,全部其它的經常使用相對路徑都相對於此處的路徑而言。做用範圍爲全局,可用於配置文件中,但屬於非動態變量。服務器

 

bind-address=ADDR併發

指定mysqld服務監聽的IP地址,默認爲0.0.0.0,表示本機已配置的全部IP地址。做用範圍爲全局,可用於配置文件中,但屬於非動態變量。ide

 

binlog-format={ROW|STATEMENT|MIXED}

指定二進制日誌的類型,默認爲STATEMENT。若是設定了二進制日誌的格式,卻沒有啓用二進制日誌,則MySQL啓動時會產生警告日誌信息並記錄於錯誤日誌中。做用範圍爲全局或會話,可用於配置文件,且屬於動態變量。

 

buld_insert_buffer_size

MyISAM引擎使用一個特殊的樹狀結構的緩存來加速批量插入操做,如INSERT...SELECT, INSERT...VALUES(...),(...),...和LOAD DATA INFILE命令完成的插入操做。對於每一個線程來講,此buffer的大小是獨立的,其配置的數值單位爲字節,有效取值範圍爲0至「2^CPU字長」次方,默認大小爲8MB。做用範圍爲全局或會話,可用於配置文件,屬動態變量。

 

chroot=PATH, -r PATH

設定MySQL基於chroot模式工做時的工做目錄,在安全問題尤其重要的環境中,這是推薦使用的機制。但此時,LOAD DATA INFILE等命令的工做可能會受到影響。可用於配置文件。

 

console

僅用於Windows平臺的選項,用於實現將錯誤日誌信息發送至標準輸入和錯誤輸出,即便配置了--log-error選項,此功能也同樣有效。

 

concurrent_insert={NEVER|AUTO|ALWAYS} 或分別使用{0|1|2}

設定是否容許在MyISAM表上並行執行INSERT和SELECT語句。做用範圍爲全局,可用於配置文件,屬動態變量。

 

connect_timeout=#

mysqld服務器端在響應「失敗的握手操做」信息給客戶端以前所等待的秒數,默認爲10秒。做用範圍爲全局,可用於配置文件,屬動態變量。

 

core-file

當MySQL進程宕掉時將信息保存爲一個core文件,在Linux平臺上,core文件一般被保存至當前進程的工做目錄中,並命名爲core.pid,其文件名後綴pid爲當前進程的進程號;對MySQL而言,保存目錄爲數據文件目錄。

 

datadir=PATH, -h PATH

指定MySQL服務的數據目錄。做用範圍爲全局,可用於配置文件中,但屬於非動態變量。

 

default_storage_engine={Engine_Name}

設定MySQL服務器的默認存儲引擎。MySQL 5.5.5版本以前默認爲MyISAM,以後的版本默認爲InnoDB。做用範圍爲全局,可用於配置文件,屬動態變量。

 

delay-key-write={ON|OFF|ALL}

僅用於MyISAM表,且要求在建立表時使用了DELAY_KEY_WRITE選項。在啓用時,key buffer不會在每一次索引更新時都予以清空,而是在表關閉時才執行key buffer清空操做。OFF表示忽略DELAY_KEY_WRITE,ON表示MySQL接受CREATE TABLE時使用的任何DELAY_KEY_WRITE選項,ALL表示全部新打開的表遵循此特性。

 

error-count

上一條SQL語句致使的錯誤信息的數目,此爲只讀變量。

 

event-scheduler={ON|OFF|DISABLED}

設定MySQL服務器是否啓用以及否啓動Event Scheduler。OFF表示中止,此爲默認值;ON表示啓動,其處於運行狀態並執行全部的調度事務;DISABLED表示禁用Event Scheduler,即其不能切換爲啓動狀態。做用範圍爲全局,可用於配置文件,屬動態變量。

 

expire_logs_days={0..99}

設定二進制日誌的過時天數,超出此天數的二進制日誌文件將被自動刪除。默認爲0,表示不啓用過時自動刪除功能。若是啓用此功能,自動刪除工做一般發生在MySQL啓動時或FLUSH日誌時。做用範圍爲全局,可用於配置文件,屬動態變量。

 

external_user=name

在MySQL服務器上基於認證插件進行用戶認證時,此插件會把發起鏈接請求用戶看成另外一個用戶以達到權限檢查的目的,這樣可使得外部用戶做第二用戶的代理用戶,並擁有第二用戶的全部權限。當使用MySQL的內部認證機制或沒有插件爲其設定值時,此變量的值爲NULL。做用範圍爲會話級別,不可用於配置文件,屬非動態變量。

 

flush={ON|OFF}

設定MySQL服務器是否單獨爲每一個SQL語句執行數據同步(將數據寫入磁盤)。正常狀況下,MySQL爲每一個語句執行數據同步工做,並將後續的同步過程交由操做系統完成。默認爲OFF。做用範圍爲全局,可用於配置文件,屬動態變量。

 

flush-time={0..}

爲非0值時,MySQL服務器會將全部打開的表每隔flush_time指定的時長進行關閉,使用其釋放全部資源並將數據同步至磁盤中。只有在系統資源極其稀缺的狀況下才須要啓用此功能。默認值是0,即爲禁用此功能。做用範圍爲全局,可用於配置文件,屬動態變量。

 

foreign-key-checks={0|1}

設定是否爲InnoDB表查檢外鍵約束,默認爲1,即檢查。在不確保按原有順序從新裝載全部InnoDB表時,禁用此功能會避免外鍵約束的反作用。

 

general_log={ON|OFF}

設定是否啓用查詢日誌,默認值爲取決於在啓動mysqld時是否使用了--general_log選項。如若啓用此項,其輸出位置則由--log_output選項進行定義,若是log_output的值設定爲NONE,即便用啓用查詢日誌,其也不會記錄任何日誌信息。做用範圍爲全局,可用於配置文件,屬動態變量。

 

general_log_file=FILE_NAME

查詢日誌的日誌文件名稱,默認爲「hostname.log"。做用範圍爲全局,可用於配置文件,屬動態變量。

 

group_concat_max_len={4..}

設定GROUP_CONCAT()函數返回值的最大長度,默認爲1024。有效取值範圍爲4至「2^CPU字長」次方。做用範圍爲全局或會話級別,用於配置文件,屬動態變量。

 

have-compress={YES|NO}

zlib壓縮庫是否能爲MySQL服務器所用。當其值爲NO時,COMPRESS()和UNCOMPRESS()函數均不可用。

 

have_crypt={YES|NO}

crypt()系統調用是否可爲MySQL服務器所用。當其值爲NO時,ENCRYPT()函數則不可用。

 

have_csv={YES|NO}

mysqld支持CSV引擎時爲YES,不然爲NO。

 

have_dynamic_loading={YES|NO}

mysqld支持動態加載插件時爲YES,不然爲NO。

 

have_geometry={YES|NO}

mysqld支持空間數據類型時爲YES,不然爲NO。

 

have_innodb={YES|NO}

mysqld支持InnoDB存儲引擎時爲YES,不然爲NO。

 

have_openssl={YES|NO}

此爲have_ssl選項的別名;

 

have_ssl={YES|NO}

mysqld支持SSL鏈接時爲YES,不然爲NO。DISABLED表示mysqld編譯時啓用了對SSL的支持,但在啓動mysqld時沒能使用正確的ssl-xxx類(如ssl_cert)的選項。

 

have_partitioning={YES|NO}

mysqld是否支持partitioning,此選項已經基本廢棄,且在MySQL-5.6中已經移除,使用SHOW ENGINES可獲取此相關信息。

 

have_profiling={YES|NO}

mysqld支持語句性能分析時則爲YES,不然爲NO。若是支持profiling功能,則--profiling變量則用於控制是否啓動此功能。

 

have_query_cache={YES|NO}

mysqld支持查詢緩存則爲YES,不然爲NO。

 

have_rtree_keys={YES|NO}

mysqld支持RTREE索引則爲YES,不然爲NO。RTREE索引用於MyISAM表的空間索引。

 

have_symlink={YES|NO}

mysqld支持符號連接則爲YES,不然爲NO。在Unix主機上,此功能對數據目錄和索引目錄有用。

 

hostname=STRING

mysqld服務器啓動時將主機名稱賦值給此變量。做用範圍爲全局,屬非動態變量。

 

identity

last_insert_id變量的同義詞,其存在的主要目的是爲了兼容其它數據庫系統。會話級別的變量。

 

init_connect=STRING

設定在每一個客戶端與mysqld創建鏈接時事先執行的一個或多個(彼此間用分號隔開)SQL語句,但對於具備SUPER權限的用戶來講,此功能無效。例如,在5.5.8以前的MySQL中還沒有出現autocommit變量,此時若要爲每位用戶默認禁用autocommit功能,就能夠在mysqld的配置文件中使用init_connect='SET autocommit=0'來實現,固然也可使用SET GLOBAL init_connect='SET autocommit=0';命令完成。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

init-file=/PATH/TO/SOMEFILE

定義在mysqld啓動時使用的初始化文件,此文件每行包含一個單獨的SQL語句(不能有註釋,不須要且不能使用語句結束符),並會在mysqld啓動時逐個執行。

 

insert_id

爲某表中設定了AUTO_INCREMENT的字段執行INSERT或ALTER_TABLE語句時將使用此變量的值。主要爲二進制日誌所用。

 

interactive_timeout=#

mysqld進程等待一個已經創建鏈接的交互式客戶端的後續命令以前所通過的秒數,默認爲28800。做用範圍爲全局或會話級別,用於配置文件,屬動態變量。

 

join_buffer_size=#

mysqld用於平面索引掃描(plain index scans)、範圍索引掃描或不使用索引的全表掃描時所可以使用的最小緩衝。正常狀況下,添加索引是加快鏈接執行速度的有效手段,而沒法添加索引時,增大join_buffer_size的值能夠加快徹底鏈接的執行速度。兩表之間的每一個徹底鏈接會使用一個單獨的join buffer,多表之間的非基於索引的複雜徹底鏈接則有可能使用多個join buffer。將此變量值設定的大過每一個匹配的行的大小等並不能帶來太多的益處,所以,不該該在全局範圍內將此值設定的過大。建議使用較小的全局設定,只爲須要的會話中使用較大鏈接時設定較大值。其最大值取決平臺,如32bit平臺上的最大值爲4G。

 

keep_files_on_create={ON|OFF}

此項默認值爲OFF。建立MyISAM類型的表時,mysqld會在數據目錄中爲其建立一個.MYD文件和一個.MYI文件,若是數據目錄中已經存在一個同名的文件,默認設定爲覆蓋操做,當設定此變量爲OFF時,則會返回一個錯誤信息。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

key_buffer_size=#

全部線程共享的、用於MyISAM表的索引緩衝空間大小,其也一般被稱做key cache。在32位平臺上其最大值爲4G,64位平臺上容許使用更大的值,但較爲有效的值取決於可用物理RAM資源的大小和每進程可用RAM大小的限制。mysqld啓動時會盡量分配接近於指定大小的RAM空間給key_buffer_size,而非必定是指定大小。增大此值能夠加速讀寫操做時對索引的處理速度,所以,在一個以MyISAM爲主要表類型的應用場景中能夠將此值設定到物理內存空間的25%,然而,比此者再大的值則反而可能引發系統性能降低了,好比設定到物理內容間的50%時則可能帶來嚴重的性能問題。更況且,還須要考慮其它類型存儲引擎對內存的須要。

當向表中同時插入多行數據時,使用LOCK TABLES會加速其執行過程。固然,也能夠觀察SHOW STATUS命令輸出中的Key_read_requests, Key_reads, Key_write_requests和Key_writes值也斷定mysqld的性能表現。正常狀況下,Key_reads/Key_read_requests的比值應該小於0.01,而Key_writes/Key_write_requests的比值一般會接近於1,不過在啓用了DELAY_KEY_WRITE選項的場景中,這個比值可能會更小。

 

key_cache_block_size=#

MyISAM存儲引擎的索引存放於「.MYI」文件中,每一個「.MYI」文件由文件頭和實際的索引數據共同組成。在「.MYI」的相關概念中,其邏輯上表現爲多個Index Block,但並不是物理結構。在物理上,索引是以文件塊(File Block)的形式來存放在磁盤上面的。在Key Cache中緩存的索引信息是以緩存塊(Cache Block)的形式組織存放的,緩存塊是一組相同大小的存儲空間,和「.MYI」文件物理存儲的Block(File Block)相似。

在一條查詢語句經過索引檢索表數據的時候,首先會檢查索引緩存(key_buffer_cache)中是否已經存儲了須要的索引信息,若是沒有,則會讀取「.MYI」文件,將相應的索引數據讀入Key Cache中的內存空間中,並存儲爲緩存塊格式。此時,若是整個Key Cache中已經沒有空閒的緩存塊空間可使用的話,mysqld將會經過LRU算法將某些緩存塊予以清除。

key_cache_block_size參數則用於設定cache block的大小,默認爲1024。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

key_cache_division_limit=#

實際上,在MySQL的Key Cache中所使用的LRU算法並不像傳統的算法同樣僅僅只是經過訪問頻率以及最後訪問時間來經過一個惟一的鏈表實現,而是將其分紅了兩部分。一部分用來存放使 用比較頻繁的Hot Cache Lock(Hot Chain),被稱做Hot Area,另一部分則用來存放使用不太頻繁的Warm Cache Block(Warm Chain),也被稱做Warm Area。這樣作的目的主要是爲了保護使用比較頻繁的Cache Block更不容易被換出。而key_cache_division_limit參數則正是用於告訴MySQL該如何劃分整個Cache Chain劃分爲Hot Chain和Warm Chain兩部分,參數值爲Warm Chain佔整個Chain 的百分比值。設置範圍1~100,系統默認爲100,也就是隻有Warm Chain。

 

key_cache_age_threshold=#

控制Hot Area中的Cache Block什麼時候該被降級到Warm Area中。系統默認值爲300,最小能夠設置爲100。值越小,被降級的可能性越大。

 

large_files_support={YES|NO}

mysqld是否在編譯時的編譯選項中指定了支持大文件。其做用域爲全局,爲非動態變量。

 

large_pages={YES|NO}

Linux平臺上專用的參數,用於設定mysqld是否支持使用大內存頁。使用大內存而能夠提升TLB的命中率,進行提升系統性能。其做用域爲全局,能夠用於配置文件中,爲非動態變量。

 

large_page_size=#

Linux平臺上專用的參數,用於設定mysqld使用的大內存頁的大小,通常爲4MB,在其它平臺上此參數的值爲0,即爲禁用。其做用域爲全局,爲非動態變量。

 

last_insert_id

此參數的值由LAST_INSERT_ID()函數返回,在更新表的語句中使用LAST_INSERT_ID()時其對應的確切值會存儲於二進制日誌中。

 

lc_messages=STRING

錯誤信息的區域設定(即語言區域),mysqld將此值轉換爲語言名稱,並結合lc_messages_dir參數指定的路徑中的區域相關的語言文件來返回錯誤信息。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

lc_messages_dir=/PATH/TO/SOME_DIR

錯誤信息的存儲目錄,經過與lc_messages參數設定的語言區域來返回錯誤信息。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

lc_time_names=STRING

設定基於語言區域來顯示日、月及其簡寫方式等日期信息的語言區域,其值如en_US等,但與系統的locale無關。此設定將影響DATE_FORMAT(), DAYNAME()和MONTHNAME()函數的輸出結果。做用範圍爲全局或會話級別,屬動態變量。

 

local_infile={YES|NO}

設定mysqld是否支持使用LOAD DATA INFILE語句。默認爲ON。做用範圍爲全局級別,屬動態變量。

 

local_wait_timeout=#

以秒爲單位設定全部SQL語句等待獲取元數據鎖(metadata lock)的超時時長,默認爲31536000(1年),有效取值範圍爲0-31536000。其影響的SQL語句包括用於表、視圖、存儲過程和存儲函數的DML和DDL語句,以及LOCK TABLES、FLUSH TABLES WITH READ LOCK和HANDLER語句等。但其做用的全部對象不包括mysql數據庫中的系統表及用於記錄日誌的表上的GRANT或REVOKE語句,但包括SELECT或UPDATE語句。

另外,此超時時長分別應用於每一個元數據鎖,所以,一個語句可能會持有多個元數據鎖,那麼其最後的生效超時時長有可能會長時這個設定值。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

locked_in_memory={YES|NO}

mysqld是否使用--memlock選項鎖定在了內存中。做用範圍爲全局級別,屬非動態變量。

 

log={YES|NO}

是否啓用記錄全部語句的日誌信息於通常查詢日誌(general query log)中,默認一般爲OFF。MySQL 5.6已經棄用此選項。

 

log-bin={YES|NO}

是否啓用二進制日誌,若是爲mysqld設定了--log-bin選項,則其值爲ON,不然則爲OFF。其僅用於顯示是否啓用了二進制日誌,並不反應log-bin的設定值。做用範圍爲全局級別,屬非動態變量。

 

log_bin_trust_function_creators={TRUE|FALSE}

此參數僅在啓用二進制日誌時有效,用於控制建立存儲函數時若是會致使不安全的事件記錄二進制日誌條件下是否禁止建立存儲函數。默認值爲0,表示除非用戶除了CREATE ROUTING或ALTER ROUTINE權限外還有SUPER權限,不然將禁止建立或修改存儲函數,同時,還要求在建立函數時必需爲之使用DETERMINISTIC屬性,再否則就是附帶READS SQL DATA或NO SQL屬性。設置其值爲1時則不啓用這些限制。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

log_error=/PATH/TO/ERROR_LOG_FILENAME

定義錯誤日誌文件。做用範圍爲全局或會話級別,可用於配置文件,屬非動態變量。

 

log_output={TABLE|FILE|NONE}

定義通常查詢日誌和慢查詢日誌的保存方式,能夠是TABLE、FILE、NONE,也能夠是TABLE及FILE的組合(用逗號隔開),默認爲TABLE。若是組合中出現了NONE,那麼其它設定都將失效,同時,不管是否啓用日誌功能,也不會記錄任何相關的日誌信息。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

log_query_not_using_indexes={ON|OFF}

設定是否將沒有使用索引的查詢操做記錄到慢查詢日誌。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

log_slave_updates

用於設定複製場景中的從服務器是否將從主服務器收到的更新操做記錄進本機的二進制日誌中。本參數設定的生效須要在從服務器上啓用二進制日誌功能。

 

log_slow_queries={YES|NO}

是否記錄慢查詢日誌。慢查詢是指查詢的執行時間超出long_query_time參數所設定時長的事件。MySQL 5.6將此參數修改成了slow_query_log。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

log_warnings=#

設定是否將警告信息記錄進錯誤日誌。默認設定爲1,表示啓用;能夠將其設置爲0以禁用;而其值爲大於1的數值時表示將新發起鏈接時產生的「失敗的鏈接」和「拒絕訪問」類的錯誤信息也記錄進錯誤日誌。

 

long_query_time=#

設定區別慢查詢與通常查詢的語句執行時間長度。這裏的語句執行時長爲實際的執行時間,而非在CPU上的執行時長,所以,負載較重的服務器上更容易產生慢查詢。其最小值爲0,默認值爲10,單位是秒鐘。它也支持毫秒級的解析度。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

low_priority_updates={TRUE|FALSE}

設定是否下降更新操做的優先級,僅對只支持表級別鎖的存儲引擎有效,如MyISAM、MEMORY或MERGE。其值爲1則表示全部的INSERT、UPDATE、DELETE或LOCK TABLE WRITE語句只能在沒有等待執行的SELECT或LOCK TABLE READ語句時才能執行。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

lower_case_file_system={ON|OFF}

用於描述數據目錄所在的文件系統是否區分文件名稱字符大小寫,OFF表示區分大小寫,ON表示不區分大小寫。此變量是隻讀的,其是否區分大小寫取決於文件系統。

 

lower_case_table_name={0|1|2}

設定是否區分表、表別名或者數據庫名稱中的字符大小寫。0表示區分大小寫,1表示不區分大小寫且一概存儲爲小寫字符,2表示按給定的大小寫進行存儲但不區分大小寫。對於自己不支持區分文件名稱大小寫功能的文件系統來說,不該該設定爲0值;而在設定爲0值的系統上,對於MyISAM存儲引擎來講,使用大小寫不對應的名稱進行訪問可能會致使索引文件崩潰。Windows系統上,其默認值爲1,Mac OS X上其默認值爲2。

對於InnoDB存儲引擎來講,應該將其設定爲1,不管基於什麼平臺。同時,也不該該爲主從複製集羣中的主機使用不一樣的設定,否則,其可能致使複製失敗。做用範圍爲全局級別,可用於配置文件,屬非動態變量。

 

max_allowed_packet={YES|NO}

設定單個報文或任何中間字符串(intermediate string)的最大長度,單位是字節。報文消息緩衝由net_buffer_length參數進行設定,但其最終能夠按需增加至max_allowed_packet參數設定的大小。此參數的默認值較小,在使用了BLOB列或長字符串的場景中,應該增大其值至能容納最大BLOB數據的長度。協議自己限定此值最大爲1G,參數只接受1024整數倍的數值,非1024的整數倍將會被自動圓整至離其最近的1024整數倍的數值。

最終生效的報文長度還取決於客戶端的設定。客戶端程序如mysql或mysqldump的默認設定爲1G。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

max_connect_errors=#

設定客戶端鏈接至mysqld時的最大錯誤嘗試次數。在某客戶端嘗試鏈接當前mysqld的錯誤次數鏈接達到max_connect_errors所設定的值時,其後續的鏈接嘗試將被直接阻止。管理員能夠經過FLUSH HOSTS語句或mysqladmin flush-hosts命令清空主機緩存(host cache)來解除對此前阻止主機的訪問鎖定。若是某客戶端的在其錯誤嘗試次數達到此參數設定的值以前成功創建了鏈接,其錯誤嘗試次數的計數器將會被清空。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

max_connections=#

設定mysqld容許客戶端同時發起的最大併發鏈接數。增長此值將增長mysqld進程須要同時訪問的文件描述符數目。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

max_delayed_threads=#

設定爲INSERT DELAYED語句所可以啓動的最大線程數。若是當前相關的線程數目已經達到此參數所設定的值,後續的INSERT DELAYED語句將無視其DELAYED屬性。若是將其值高精爲0,mysqld將不爲INSERT DELAYED建立任何線程,即禁用DELAYED功能。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

max_error_count=#

設定爲SHOW ERRORS或SHOW WARNINGS語句所保留的關於錯誤、警告或注意信息條目的最大數。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

max_heap_table_size=#

設定每一個用戶建立的MEMORY表所可以使用的最大內存空間。修改其值對當前已經建立的MEMORY表沒有影響,除非使用CREATE TABLE、ALTER TABLE或TRUNCATE TABLE對錶進行了重建。其最在小值爲16384,單位是字節。最大值受限於平臺字長,如32位平臺爲4G。此參數與tmp_table_size參數聯合使用可用於限制內部內存表的大小。另外,max_heap_table_size不會被複制。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

max_insert_delayed_threads=#

max_delayed_threads的同義詞。做用範圍爲全局級別,動態變量。

 

max_join_size=#

設定SELECT語句執行時所可以檢查的行數(單表)或行組合(多表查詢)的最大值。此參數能夠阻止對鍵的錯誤使用而致使的須要執行較長時間的查詢操做,所以,其尤爲適用於有用戶常用不帶WHERE子句的查詢場景中。有效取值範圍爲1-18446744073709551615,默認爲18446744073709551615,這能夠被理解爲不限制。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

max_length_for_sort_data=#

filesort算法改進版所可以使用的字段最大長度值。有效取值範圍是4-8388608。MySQL的filesort算法有兩個版本,即原始版本和修改版本,字段長度大於max_length_for_sort_data設定的將使用原始版本,小於此參數值的則使用修改版本在排序緩衝(sort buffer)中完成排序。在使用超出字段超出指定長度時使用修改版本算法,因爲可能須要更多的I/O操做,將會致使修改版算法執行速度更慢,而不是更快。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

max_long_data_size=#

設定能夠由mysql_stmt_send_long_data()這個C API函數所傳送的參數值的最大長度,若是沒有在mysqld啓動時設定,其默認爲max_allowed_packet變量的值。MySQL 5.6已經棄用此變量。 做用範圍爲全局級別,可用於配置文件,屬非動態變量。

 

max_prepared_stmt_count={0..1048576}

設定mysqld所容許的全部鏈接會話中執行的準備語句的總數。大量的準備語句同時執行會消耗大量的內存資源,這會帶來潛在的「拒絕服務」的風險,所以,應該根據生產須要仔細設定此參數的值。若是新設定的值低於目前已經打開的準備語句總數,其不會對原有的語句產生影響,但再也不接受新的執行請求,直到有新的空餘額度。默認值是16382,0表示禁用準備語句。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

max_relay_log_size={4096..1073741824}

設定從服務器上中繼日誌的體積上限,到達此限度時其會自動進行中繼日誌滾動。此參數值爲0時,mysqld將使用max_binlog_size參數同時爲二進制日誌和中繼日誌設定日誌文件體積上限。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

max_seeks_for_key={1 .. 18446744073709547520}

設定基於某key執行查詢時所容許的最大查找次數。在經過掃描索引的方式在某表中搜尋與查詢條件匹配的行時,不管其索引的基數是什麼,MySQL優化器都會假定其查找次數不須要超過此參數設定的數值。較小的值能夠強制MySQL更傾向於索引掃描而非表掃描。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

max_sort_length={4 .. 8388608}

設定mysqld執行數值排序時所使用的字節數,剩餘的將被忽略。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

max_sp_recoursion_depth={0 .. 255}

設定存儲過程可被遞歸調用的最大次數。遞歸調用會增大對線程棧空間的須要,所以,增大此參數的值,可能還須要在啓動時調整thread_stack參數的值。默認值爲0,表示禁止遞歸;最大值爲255。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

max_user_connections={ 0 .. 4294967295 }

設定單個用戶容許同時向mysqld發起的最大併發鏈接請求個數。默認值爲0,表示無上限。可爲mysqld爲此參數指定全局(GLOBAL)參數值,也可將某用戶賬號的此參數值設定爲只讀覺得其設定有效併發上限(經過GRANT語句實現)。這意味着,若是用戶的此參數有個非0值,則以此限定爲準;不然,mysqld會將用戶的此參數值設定爲全局值。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

max_write_lock_count=#

mysqld已施加的寫鎖個數達到此參數值指定的個數時,將容許處理一些掛起的讀請求。其最小值爲1,最大值取決於平臺字長。做用範圍爲全局級別,屬非動態變量。

 

metadata_locks_cache_size={1 .. 1048576}

設定mysqld元數據鎖緩存的上限。此緩存可用來避免建立或銷燬同步對象(synchronization object),這對於此類操做代價較高的操做系統(如Windows XP)來講尤其有用。默認值爲1024。做用範圍爲全局級別,屬非動態變量。

 

min_examined_row_limit=#

所檢查的行數低於此參數設定的數值的查詢操做將不被記入慢查詢日誌。默認值爲0,最大值取決於平臺字長。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

myisam_data_point_size={2 .. 7}

建立MyISAM表時若是沒有設定MAX_ROWS選項,則經過此參數設定其默認指針的大小,單位爲字節。默認值是6。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

myisam_max_sort_file_size=#

設定在MySQL在使用REPARE TABLE、ALTER TABLE或LOAD DATA INFILE命令時爲MyISAM表從新建立索引所可以使用的臨時文件的體積上限,單位是字節。若是臨時文件的大小大過了此上限值,則mysqld會使用key cache建立索引。默認值是2G,而若是MyISAM索引文件自己大過此值且其所在的文件系統有足夠的空閒空間,增大此值會提高MySQL性能。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

myisam_mmap_size=#

設定基於內存映射壓縮MyISAM文件時可使用的內存上限。在有着不少壓縮格式MyISAM表的場景中,下降此值能夠幫助減小出現內存交換的可能性。其最小值爲7,默認值和最大值取決於平臺位數。做用範圍爲全局級別,可用於配置文件,屬非動態變量。

 

myisam_recover_options

用於保存mysqld命令行選項--myisam-revover-options的值。此選項用於設定MyISAM存儲引擎的恢復模式,其可接受的值有OFF、DEFAULT(恢復模式,但無備份、強制或快速檢測)、BACKUP(若是恢復過程當中數據發生了改變,則將原表文件備份爲table_name-datatime.BAK)、FORCE(強制恢復,哪怕會丟失數據)和QUICK(快速修復),能夠以逗號爲分隔爲此選項同時指定多個值。也能夠不爲其提供任何參數值,默認爲DEFAULT,而「」則表示爲OFF,即禁用恢復模式。

若是啓用恢復模式,mysqld每次打開一個MyISAM表時都會檢測其是否標記爲損壞或非正常關閉。若是損壞,則mysqld會嘗試修復它;若是爲非正常關閉,mysqld將會對其進行檢測。

 

myisam_repair_threads=#

在經過排序修復過程當中爲MyISAM表建立索引的線程的個數,默認爲1;若是給定大於1的值,則能夠啓動多個並行建立索引的線程(每一個索引只能由一個線程建立)。最大值取決於平臺位數。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

myisam_sort_buffer_size=#

在REPAIR TABLE過程當中,或經過CREATE INDEX/ALTER TABLE爲MyISAM表添加索引時爲了對索引排序所可以使用的緩衝空間大小。最小值爲4,32位系統上所可以使用的最大值爲4294967295,即4G;64位系統上可使用更大的空間。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

myisam_stats_method={nulls_equal|nulls_unequal|nulls_ignored}

定義在爲MyISAM表收集索引分佈相關的統計信息時處理NULL值的方式。nulls_equal表示全部的NULL值都視做相同值,nulls_unequal表示全部的NULL值都視做不一樣值,nulls_ignored表示全部的NULL值都將被忽略。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量。

 

myisam_use_mmap={ON|OFF}

在讀寫MyISAM表時可否使用內存映射。默認值爲OFF。做用範圍爲全局級別,可用於配置文件,屬動態變量。

 

net_buffer_length={1024 .. 1048576}

每一個客戶端線程都有一個鏈接緩衝(connection buffer)和一個結果緩衝(result buffer),此參數能夠設定這兩個緩衝的大小,但它們均可以按需動態增加至max_allowed_packet參數所設定的大小。但每一個SQL語句完成後,結果緩衝都會收縮至net_buffer_length參數所定義的大小。通常說來不須要修改此參數的值,除非是內存資源較吃緊的場景中能夠將其調小至客戶端預期的SQL語句長度。如SQL語句超出此長度,鏈接緩衝會自動調節其值。其默認值爲16384,單位是字節。做用範圍爲全局或會話級別,可用於配置文件,屬動態變量,但對於會話級別來講,此變量是隻讀的。

 

net_read_timeout=#

設定mysqld等待從客戶端接收更多數據的超時時長,默認值爲30。做用範圍爲全局和會話級別,可用於配置文件,屬動態變量。

 

net_write_timeout=#

設定mysqld等待向客戶端傳輸數據的超時時長,默認值爲60。做用範圍爲全局和會話級別,可用於配置文件,屬動態變量。

 

net_retry_timeout=#

設定mysqld與客戶端的通信中斷時,其停止與客戶端的鏈接以前須要重試的次數。默認值爲10,其最大取值取決於平臺位數。做用範圍爲全局和會話級別,可用於配置文件,屬動態變量。

 

new={ON|OFF}

用於MySQL 4.0中以啓用支持MySQL 4.1版本上的某些新特性的能力,但仍然能夠保持向後兼容。在MySQL 5.5無須設置,故其值爲OFF。

 

old={ON|OFF}

用於定義兼容老版本MySQL的變量,默認是禁用的,但能夠在mysqld啓動時將其啓用以兼容較老的MySQL版本。

 

參考連接 http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_insert_id

 

做者原創,開源文檔。轉載請務必保留此連接,http://mageedu.blog.51cto.com。

本文出自 「馬哥Linux培訓」 博客,轉載請與做者聯繫!

相關文章
相關標籤/搜索