萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql優化之status和variables對比

mysql優化之status和variables對比

本文章來為各位介紹關於mysql優化之status和variables對比,希望全文章能夠對各位朋友帶來幫助哦。


mysql之status和variables區別
 
首先可以通過下屬兩個命令來查看mysql的相應的系統參數

show status like '%abc%';
show variables like '%abc%';
 
但是很多人不明白二者到底有什麼區別

status是狀態是系統的狀態不可更改,是系統現在的運行狀態參數,說明如下:

Java代碼 
mysql> show status like 'innodb_rows_%'; 
+----------------------+---------+ 
| Variable_name        | Value   | 
+----------------------+---------+ 
| Innodb_rows_deleted  | 0       | 
| Innodb_rows_inserted | 1169098 | 
| Innodb_rows_read     | 7955216 | 
| Innodb_rows_updated  | 0       | 
+----------------------+---------+ 
4 rows in set (0.00 sec) 

 一條條說明如下:

| Innodb_rows_deleted|0                  |  為innodb表刪除的行數,此處為0標示沒有刪除過
| Innodb_rows_inserted | 1169098 | 為innodb表insert的行數,此處標示現在insert了1169098 行
| Innodb_rows_read     | 7955216    | 為innodb表執行select獲取的行數
| Innodb_rows_updated  | 0              | 為innodb表執行update涉及到的行數
上述4個是innodb表的運行狀態參數,不能人為修改,只能系統去update,用途很顯然是為了告訴dba現在系統的狀態,好讓dba去做優化,上述4個記錄告訴dba此時讀大於寫(我在執行insert into a select * from a,故出上述數據),可以考慮建立適當索引,如果讀是0,寫很大,那麼可以考慮刪除index等等。

Java代碼 

mysql> show variables like 'query%'; 
+------------------------------+----------+ 
| Variable_name                | Value    | 
+------------------------------+----------+ 
| query_alloc_block_size       | 8192     | 
| query_cache_limit            | 1048576  | 
| query_cache_min_res_unit     | 4096     | 
| query_cache_size             | 16777216 | 
| query_cache_type             | ON       | 
| query_cache_wlock_invalidate | OFF      | 
| query_prealloc_size          | 8192     | 
+------------------------------+----------+ 
7 rows in set (0.00 sec) 

上述標示查看查詢緩存的相關信息,此時可以根據status做適當的優化此處注意是系統管用cache的相關配置信息,是可以通過set或者修改配置文件來修改的。

mysql優化之關鍵字variables查看各個系統配置項

mysqld服務器維護兩種變量。全局變量影響服務器的全局操作。會話變量影響具體客戶端連接相關操作。

服務器啟動時,將所有全局變量初始化為默認值。可以在選項文件或命令行中指定的選項來更改這些默認值。服務器啟動後,通過連接服務器並執行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類型數據表的支持。

32. init_file

指定一個包含SQL查詢語句的文件,該文件在MySQL啟動時將被加載,文件中的SQL語句也會被執行。

33. interactive_timeout

服務器在關上它前在一個交互連接上等待行動的秒數。一個交互的客戶被定義為對mysql_real_connect()使用CLIENT_INTERACTIVE選項的客戶。也可見wait_timeout。

34. join_buffer_size

用於全部聯合(join)的緩沖區大小(不是用索引的聯結)。緩沖區對2個表間的每個全部聯結分配一次緩沖區,當增加索引不可能時,增加該值可得到一個更快的全部聯結。(通常得到快速聯結的最佳方法是增加索引。)

35. key_buffer_size

用於索引塊的緩沖區大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔得起那樣多。如果你使它太大,系統將開始變慢慢。必須為OS文件系統緩存留下一些空間。為了在寫入多個行時得到更多的速度。

36. language

用戶輸出報錯信息的語言。

37. large_file_support

開啟大文件支持。

29. have_bdb

YES: MySQL支持伯克利類型數據表; DISABLE: 使用 --skip-bdb 關閉對伯克利類型數據表的支持。

30. have_raid

YES: 使MySQL支持RAID功能。

31. have_openssl

YES: 使MySQL支持SSL加密協議。

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個寫入鎖定數量後,開始允許一些被鎖定的讀操作開始執行。避免寫入鎖定過多,讀取操作處於長時間等待狀態。

58. myisam_recover_options


mysql優化之關鍵字Status查看系統狀態


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

服務器在關上它前在一個交互連接上等待行動的秒數。一個交互的客戶被定義為對mysql_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個寫入鎖定數量後,開始允許一些被鎖定的讀操作開始執行。避免寫入鎖定過多,讀取操作處於長時間等待狀態。

58. myisam_recover_options

mysql SHOW STATUS 詳解

SHOW STATUS提供服務器的狀態信息(象mysqladmin extended-status一樣)。輸出類似於下面的顯示,盡管格式和數字可以有點不同:
下列含義:

Aborted_clients 由於客戶沒有正確關閉連接已經死掉,已經放棄的連接數量。
Aborted_connects 嘗試已經失敗的MySQL服務器的連接的次數。
Connections 試圖連接MySQL服務器的次數。
Created_tmp_tables 當執行語句時,已經被創造了的隱含臨時表的數量。
Delayed_insert_threads 正在使用的延遲插入處理器線程的數量。
Delayed_writes 用INSERT DELAYED寫入的行數。
Delayed_errors 用INSERT DELAYED寫入的發生某些錯誤(可能重復鍵值)的行數。
Flush_commands 執行FLUSH命令的次數。
Handler_delete 請求從一張表中刪除行的次數。
Handler_read_first 請求讀入表中第一行的次數。
Handler_read_key 請求數字基於鍵讀行。
Handler_read_next 請求讀入基於一個鍵的一行的次數。
Handler_read_rnd 請求讀入基於一個固定位置的一行的次數。
Handler_update 請求更新表中一行的次數。
Handler_write 請求向表中插入一行的次數。
Key_blocks_used 用於關鍵字緩存的塊的數量。
Key_read_requests 請求從緩存讀入一個鍵值的次數。
Key_reads 從磁盤物理讀入一個鍵值的次數。
Key_write_requests 請求將一個關鍵字塊寫入緩存次數。
Key_writes 將一個鍵值塊物理寫入磁盤的次數。
Max_used_connections 同時使用的連接的最大數目。
Not_flushed_key_blocks 在鍵緩存中已經改變但是還沒被清空到磁盤上的鍵塊。
Not_flushed_delayed_rows 在INSERT DELAY隊列中等待寫入的行的數量。
Open_tables 打開表的數量。
Open_files 打開文件的數量。
Open_streams 打開流的數量(主要用於日志記載)
Opened_tables 已經打開的表的數量。
Questions 發往服務器的查詢的數量。
Slow_queries 要花超過long_query_time時間的查詢數量。
Threads_connected 當前打開的連接的數量。
Threads_running 不在睡眠的線程數量。
Uptime 服務器工作了多少秒。

關於上面的一些注釋:

如果Opened_tables太大,那麼你的table_cache變量可能太小。
如果key_reads太大,那麼你的key_cache可能太小。緩存命中率可以用key_reads/key_read_requests計算。
如果Handler_read_rnd太大,那麼你很可能有大量的查詢需要MySQL掃描整個表或你有沒正確使用鍵值的聯結(join)。
SHOW VARIABLES顯示出一些MySQL系統變量的值,你也能使用mysqladmin variables命令得到這個信息。如果缺省值不合適,你能在mysqld啟動時使用命令行選項來設置這些變量的大多數。

SHOW PROCESSLIST顯示哪個線程正在運行,你也能使用mysqladmin processlist命令得到這個信息。如果你有process權限,你能看見所有的線程,否則,你僅能看見你自己的線程。見7.20 KILL句法。如果你不使用FULL選項,那麼每個查詢只有頭100字符被顯示出來。

copyright © 萬盛學電腦網 all rights reserved