MySQL 5.5 伺服器變數詳解(一)

來源:互聯網
上載者:User

 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_sizeMyISAM引擎使用一個特殊的樹狀結構的緩衝來加速批量插入操作,如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=STRINGmysqld伺服器啟動時將主機名稱賦值給此變數。作用範圍為全域,屬非動態變數。 identitylast_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。

本文出自 “馬哥教育” 部落格,轉載請與作者聯絡!

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.