這篇文章將為大家詳細(xì)講解有關(guān)如何理解MySQL中的SHOW VARIABLES語句,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的聞喜網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
mysqld服務(wù)器維護(hù)兩種變量。全局變量影響服務(wù)器的全局操作。會話變量影響具體客戶端連接相關(guān)操作。
服務(wù)器啟動時(shí),將所有全局變量初始化為默認(rèn)值??梢栽谶x項(xiàng)文件或命令行中指定的選項(xiàng)來更改這些默認(rèn)值。服務(wù)器啟動后,通過連接服務(wù)器并執(zhí)行SET GLOBAL var_name語句可以更改動態(tài)全局變量。要想更改全局變量,必須具有SUPER權(quán)限。
服務(wù)器還為每個(gè)客戶端連接維護(hù)會話變量。連接時(shí)使用相應(yīng)全局變量的當(dāng)前值對客戶端會話變量進(jìn)行初始化??蛻艨梢酝ㄟ^SET SESSION var_name語句來更改動態(tài)會話變量。設(shè)置會話變量不需要特殊權(quán)限,但客戶可以只更改自己的會話變量,而不更改其它客戶的會話變量。
任何訪問全局變量的客戶端都可以看見對全局變量的更改。但是,它只影響在更改后連接的從該全局變量初始化相應(yīng)會話變量的客戶端。它不會影響已經(jīng)連接上的客戶端的會話變量(甚至是執(zhí)行SET GLOBAL語句的客戶端)。
當(dāng)使用啟動選項(xiàng)設(shè)置變量時(shí),變量值可以使用后綴K、M或G分別表示千字節(jié)、兆字節(jié)或gigabytes。例如,下面的命令啟動服務(wù)器時(shí)的鍵值緩沖區(qū)大小為16 megabytes:
mysqld --key_buffer_size=16M
后綴的大小寫美關(guān)系;16M和16m是同樣的。
運(yùn)行時(shí),使用SET語句來設(shè)置系統(tǒng)變量。此時(shí),不能使用后綴,但值可以采取下列表達(dá)式:
mysql> SET sort_buffer_size = 10 * 1024 * 1024;
要想顯式指定是否設(shè)置全局或會話變量,使用GLOBAL或SESSION選項(xiàng):
mysql> SET GLOBAL sort_buffer_size = 10 * 1024 * 1024;
mysql> SET SESSION sort_buffer_size = 10 * 1024 * 1024;
兩個(gè)選項(xiàng)均沒有,則語句設(shè)置會話變量。
可以通過SHOW VARIABLES語句查看系統(tǒng)變量及其值。
mysql> SHOW VARIABLES;
1. back_log
指定MySQL可能的連接數(shù)量。當(dāng)MySQL主線程在很短的時(shí)間內(nèi)得到非常多的連接請求,該參數(shù)就起作用,之后主線程花些時(shí)間(盡管很短)檢查連接并且啟動一個(gè)新線程。
back_log參數(shù)的值指出在MySQL暫時(shí)停止響應(yīng)新請求之前的短時(shí)間內(nèi)多少個(gè)請求可以被存在堆棧中。如果系統(tǒng)在一個(gè)短時(shí)間內(nèi)有很多連接,則需要增大該參數(shù)的值,該參數(shù)值指定到來的TCP/IP連接的偵聽隊(duì)列的大小。不同的操作系統(tǒng)在這個(gè)隊(duì)列大小上有它自己的限制。 試圖設(shè)定back_log高于你的操作系統(tǒng)的限制將是無效的。
當(dāng)觀察MySQL進(jìn)程列表,發(fā)現(xiàn)大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待連接進(jìn)程時(shí),就要加大 back_log 的值。back_log默認(rèn)值為50。
2. basedir
MySQL主程序所在路徑,即:--basedir參數(shù)的值。
3. bdb_cache_size
分配給BDB類型數(shù)據(jù)表的緩存索引和行排列的緩沖區(qū)大小,如果不使用DBD類型數(shù)據(jù)表,則應(yīng)該在啟動MySQL時(shí)加載 --skip-bdb 參數(shù)以避免內(nèi)存浪費(fèi)。
4.bdb_log_buffer_size
分配給BDB類型數(shù)據(jù)表的緩存索引和行排列的緩沖區(qū)大小,如果不使用DBD類型數(shù)據(jù)表,則應(yīng)該將該參數(shù)值設(shè)置為0,或者在啟動MySQL時(shí)加載 --skip-bdb 參數(shù)以避免內(nèi)存浪費(fèi)。
5.bdb_home
參見 --bdb-home 選項(xiàng)。
6. bdb_max_lock
指定最大的鎖表進(jìn)程數(shù)量(默認(rèn)為10000),如果使用BDB類型數(shù)據(jù)表,則可以使用該參數(shù)。如果在執(zhí)行大型事物處理或者查詢時(shí)發(fā)現(xiàn) bdb: Lock table is out of available locks or Got error 12 from ... 錯(cuò)誤,則應(yīng)該加大該參數(shù)值。
7. bdb_logdir
指定使用BDB類型數(shù)據(jù)表提供服務(wù)時(shí)的日志存放位置。即為 --bdb-logdir 的值。
8. bdb_shared_data
如果使用 --bdb-shared-data 選項(xiàng)則該參數(shù)值為On。
9. bdb_tmpdir
BDB類型數(shù)據(jù)表的臨時(shí)文件目錄。即為 --bdb-tmpdir 的值。
10. binlog_cache_size
為binary log指定在查詢請求處理過程中SQL 查詢語句使用的緩存大小。如果頻繁應(yīng)用于大量、復(fù)雜的SQL表達(dá)式處理,則應(yīng)該加大該參數(shù)值以獲得性能提升。
11. bulk_insert_buffer_size
指定 MyISAM 類型數(shù)據(jù)表表使用特殊的樹形結(jié)構(gòu)的緩存。使用整塊方式(bulk)能夠加快插入操作( INSERT ... SELECT, INSERT ... VALUES (...), (...), ..., 和 LOAD DATA INFILE) 的速度和效率。該參數(shù)限制每個(gè)線程使用的樹形結(jié)構(gòu)緩存大小,如果設(shè)置為0則禁用該加速緩存功能。注意:該參數(shù)對應(yīng)的緩存操作只能用戶向非空數(shù)據(jù)表中執(zhí)行插入操作!默認(rèn)值為 8MB。
12. character_set
MySQL的默認(rèn)字符集。
13. character_sets
MySQL所能提供支持的字符集。
14. concurrent_inserts
如果開啟該參數(shù),MySQL則允許在執(zhí)行 SELECT 操作的同時(shí)進(jìn)行 INSERT 操作。如果要關(guān)閉該參數(shù),可以在啟動 mysqld 時(shí)加載 --safe 選項(xiàng),或者使用 --skip-new 選項(xiàng)。默認(rèn)為On。
15. connect_timeout
指定MySQL服務(wù)等待應(yīng)答一個(gè)連接報(bào)文的最大秒數(shù),超出該時(shí)間,MySQL向客戶端返回 bad handshake。
16. datadir
指定路徑。即為 --datadir 選項(xiàng)的值。
17. delay_key_write
該參數(shù)只對 MyISAM 類型數(shù)據(jù)表有效。有如下的取值種類:
off: 如果在建表語句中使用 CREATE TABLE ... DELAYED_KEY_WRITES,則全部忽略
DELAYED_KEY_WRITES;
on: 如果在建表語句中使用 CREATE TABLE ... DELAYED_KEY_WRITES,則使用該選項(xiàng)(默認(rèn));
all: 所有打開的數(shù)據(jù)表都將按照 DELAYED_KEY_WRITES 處理。
如果 DELAYED_KEY_WRITES 開啟,對于已經(jīng)打開的數(shù)據(jù)表而言,在每次索引更新時(shí)都不刷新帶有
DELAYED_KEY_WRITES 選項(xiàng)的數(shù)據(jù)表的key buffer,除非該數(shù)據(jù)表關(guān)閉。該參數(shù)會大幅提升寫入鍵值的速
度。如果使用該參數(shù),則應(yīng)該檢查所有數(shù)據(jù)表:myisamchk --fast --force。
18.delayed_insert_limit
在插入delayed_insert_limit行后,INSERT DELAYED處理模塊將檢查是否有未執(zhí)行的SELECT語句。如果有,在繼續(xù)處理前執(zhí)行允許這些語句。
19. delayed_insert_timeout
一個(gè)INSERT DELAYED線程應(yīng)該在終止之前等待INSERT語句的時(shí)間。
20. delayed_queue_size
為處理INSERT DELAYED分配的隊(duì)列大小(以行為單位)。如果排隊(duì)滿了,任何進(jìn)行INSERT DELAYED的客戶必須等待隊(duì)列空間釋放后才能繼續(xù)。
21. flush
在啟動MySQL時(shí)加載 --flush 參數(shù)打開該功能。
22. flush_time
如果該設(shè)置為非0值,那么每flush_time秒,所有打開的表將被關(guān),以釋放資源和sync到磁盤。注意:只建議在使用 Windows9x/Me 或者當(dāng)前操作系統(tǒng)資源嚴(yán)重不足時(shí)才使用該參數(shù)!
23. ft_boolean_syntax
搜索引擎維護(hù)員希望更改允許用于邏輯全文搜索的操作符。這些則由變量 ft_boolean_syntax 控制。
24. ft_min_word_len
指定被索引的關(guān)鍵詞的最小長度。注意:在更改該參數(shù)值后,索引必須重建!
25. ft_max_word_len
指定被索引的關(guān)鍵詞的最大長度。注意:在更改該參數(shù)值后,索引必須重建!
26. ft_max_word_len_for_sort
指定在使用REPAIR, CREATE INDEX, or ALTER TABLE等方法進(jìn)行快速全文索引重建過程中所能使用的關(guān)鍵詞的最大長度。超出該長度限制的關(guān)鍵詞將使用低速方式進(jìn)行插入。加大該參數(shù)的值,MySQL將會建立更大的臨時(shí)文件(這會減輕CPU負(fù)載,但效率將取決于磁盤I/O效率),并且在一個(gè)排序取內(nèi)存放更少的鍵值。
27. ft_stopword_file
從 ft_stopword_file 變量指定的文件中讀取列表。在修改了 stopword 列表后,必須重建 FULLTEXT 索引。
28. have_innodb
YES: MySQL支持InnoDB類型數(shù)據(jù)表; DISABLE: 使用 --skip-innodb 關(guān)閉對InnoDB類型數(shù)據(jù)表的支持。
29. have_bdb
YES: MySQL支持伯克利類型數(shù)據(jù)表; DISABLE: 使用 --skip-bdb 關(guān)閉對伯克利類型數(shù)據(jù)表的支持。
30. have_raid
YES: 使MySQL支持RAID功能。
31. have_openssl
YES: 使MySQL支持SSL加密協(xié)議。
32. init_file
指定一個(gè)包含SQL查詢語句的文件,該文件在MySQL啟動時(shí)將被加載,文件中的SQL語句也會被執(zhí)行。
33. interactive_timeout
服務(wù)器在關(guān)上它前在一個(gè)交互連接上等待行動的秒數(shù)。一個(gè)交互的客戶被定義為對_real_connect()使用CLIENT_INTERACTIVE選項(xiàng)的客戶。也可見wait_timeout。
34. join_buffer_size
用于全部聯(lián)合(join)的緩沖區(qū)大小(不是用索引的聯(lián)結(jié))。緩沖區(qū)對2個(gè)表間的每個(gè)全部聯(lián)結(jié)分配一次緩沖區(qū),當(dāng)增加索引不可能時(shí),增加該值可得到一個(gè)更快的全部聯(lián)結(jié)。(通常得到快速聯(lián)結(jié)的最佳方法是增加索引。)
35. key_buffer_size
用于索引塊的緩沖區(qū)大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負(fù)擔(dān)得起那樣多。如果你使它太大,系統(tǒng)將開始變慢慢。必須為OS文件系統(tǒng)緩存留下一些空間。為了在寫入多個(gè)行時(shí)得到更多的速度。
36. language
用戶輸出報(bào)錯(cuò)信息的語言。
37. large_file_support
開啟大文件支持。
38. locked_in_memory
使用 --memlock 將mysqld鎖定在內(nèi)存中。
39. log
記錄所有查詢操作。
40. log_update
開啟update log。
41. log_bin
開啟 binary log。
42. log_slave_updates
如果使用鏈狀同步或者多臺Slave之間進(jìn)行同步則需要開啟此參數(shù)。
43. long_query_time
如果一個(gè)查詢所用時(shí)間超過該參數(shù)值,則該查詢操作將被記錄在Slow_queries中。
44. lower_case_table_names
1: MySQL總使用小寫字母進(jìn)行SQL操作;
0: 關(guān)閉該功能。
注意:如果使用該參數(shù),則應(yīng)該在啟用前將所有數(shù)據(jù)表轉(zhuǎn)換為小寫字母。
45. max_allowed_packet
一個(gè)查詢語句包的最大尺寸。消息緩沖區(qū)被初始化為net_buffer_length字節(jié),但是可在需要時(shí)增加到max_allowed_packet個(gè)字節(jié)。該值太小則會在處理大包時(shí)產(chǎn)生錯(cuò)誤。如果使用大的BLOB列,必須增加該值。
46. net_buffer_length
通信緩沖區(qū)在查詢期間被重置到該大小。通常不要改變該參數(shù)值,但是如果內(nèi)存不足,可以將它設(shè)置為查詢期望的大小。(即,客戶發(fā)出的SQL語句期望的長度。如果語句超過這個(gè)長度,緩沖區(qū)自動地被擴(kuò)大,直到max_allowed_packet個(gè)字節(jié)。)
47. max_binlog_cache_size
指定binary log緩存的最大容量,如果設(shè)置的過小,則在執(zhí)行復(fù)雜查詢語句時(shí)MySQL會出錯(cuò)。
48. max_binlog_size
指定binary log文件的最大容量,默認(rèn)為1GB。
49. max_connections
允許同時(shí)連接MySQL服務(wù)器的客戶數(shù)量。如果超出該值,MySQL會返回Too many connections錯(cuò)誤,但通常情況下,MySQL能夠自行解決。
50. max_connect_errors
對于同一主機(jī),如果有超出該參數(shù)值個(gè)數(shù)的中斷錯(cuò)誤連接,則該主機(jī)將被禁止連接。如需對該主機(jī)進(jìn)行解禁,執(zhí)行:FLUSH HOST;。
51. max_delayed_threads
不要啟動多于的這個(gè)數(shù)字的線程來處理INSERT DELAYED語句。如果你試圖在所有INSERT DELAYED線程在用后向一張新表插入數(shù)據(jù),行將被插入,就像DELAYED屬性沒被指定那樣。
52. max_heap_table_size
內(nèi)存表所能使用的最大容量。
53. max_join_size
如果要查詢多于max_join_size個(gè)記錄的聯(lián)合將返回一個(gè)錯(cuò)誤。如果要執(zhí)行沒有一個(gè)WHERE的語句并且耗費(fèi)大量時(shí)間,且返回上百萬行的聯(lián)結(jié),則需要加大該參數(shù)值。
54. max_sort_length
在排序BLOB或TEXT值時(shí)使用的字節(jié)數(shù)(每個(gè)值僅頭max_sort_length個(gè)字節(jié)被使用;其余的被忽略)。
55. max_user_connections
指定來自同一用戶的最多連接數(shù)。設(shè)置為0則代表不限制。
56. max_tmp_tables
(該參數(shù)目前還沒有作用)。一個(gè)客戶能同時(shí)保持打開的臨時(shí)表的最大數(shù)量。
57. max_write_lock_count
當(dāng)出現(xiàn)max_write_lock_count個(gè)寫入鎖定數(shù)量后,開始允許一些被鎖定的讀操作開始執(zhí)行。避免寫入鎖定過多,讀取操作處于長時(shí)間等待狀態(tài)。
關(guān)于如何理解MYSQL中的SHOW VARIABLES語句就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。