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

本文出自 “馬哥教育Linux運維培訓” 博客http://mageedu.blog.51cto.com



autocommit={0|1}

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

 

automatic_sp_privileges={0|1}

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

 

back_log=#

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

 

basedir=PATH, -b PATH

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

 

bind-address=ADDR

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

 

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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章