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