資料庫練習四: 優化經常用到的命令
SHOW INDEX
返回表索引資訊
SHOW INDEX FROM tbl_name [FROM db_name]
Table | 表的名稱 |
---|---|
Non_unique | 如果索引不能報貨重複詞,則為0,可以則為1 |
Key_name | 索引的名稱 |
Seq_in_index | 索引中的列序列號,從1開始 |
Column_name | 列名稱 |
Collation | 列以什麼方式儲存在索引中。在Mysql中,有值‘A’(升序) 或Null (無分類) |
Cardinality | 索引中唯一值的數目的估計值。通過執行ANALYZE TABLE或myisamchk -a可以更新。基數根據被儲存為整數的統計資料來計數,所以即使對於小型表,該值也沒有必要是精確的。基數越大,當進行聯合時,MySQL使用該索引的機會就越大。 |
Sub_part | 如果列只是被部分地編入索引,則為被編入索引的字元的數目。如果整列被編入索引,則為NULL。 |
Packed | 指示關鍵字如何被壓縮。如果沒有被壓縮,則為NULL。 |
Null | 如果列含有NULL,則含有YES。如果沒有,則該列含有NO |
Index_type | 用過的索引方法(BTREE,FULLTEXT,HASH,REREE) |
Comment | 多種評註 |
show create table
檢視建表資訊
show table status
查看錶結構資訊
1.Name
表名稱
2.Engine:
表的儲存引擎
3.Version:
版本
4.Row_format
行格式。對於MyISAM引擎,這可能是Dynamic,Fixed或Compressed。動態行的行長度可變,例如Varchar或Blob型別欄位。固定行是指行長度不變,例如Char和Integer型別欄位。
5.Rows
表中的行數。對於非事務性表,這個值是精確的,對於事務性引擎,這個值通常是估算的。
6.Avg_row_length
平均每行包括的位元組數
7.Data_length
整個表的資料量(單位:位元組)
8.Max_data_length
表可以容納的最大資料量
9.Index_length
索引佔用磁碟的空間大小
10.Data_free
對於MyISAM引擎,標識已分配,但現在未使用的空間,並且包含了已被刪除行的空間。
11.Auto_increment
下一個Auto_increment的值
12.Create_time
表的建立時間
13.Update_time
表的最近更新時間
14.Check_time
使用 check table 或myisamchk工具檢查表的最近時間
15.Collation
表的預設字符集和字元排序規則
16.Checksum
如果啟用,則對整個表的內容計算時的校驗和
17.Create_options
指表建立時的其他所有選項
18.Comment
包含了其他額外資訊,對於MyISAM引擎,包含了註釋徐標新,如果表使用的是innodb引擎 ,將現實表的剩餘空間。如果是一個檢視,註釋裡面包含了VIEW字樣。
show status
檢視MySQL伺服器當前記憶體資訊。
show [global | session] status [like ‘xxx’];
- global選項,檢視mysql所有連線狀態
- session選項,檢視當前連線狀態,預設session選項
1)QPS每秒query量
show global status like 'Question%';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| Questions | 39661402 |
+---------------+----------+
2)TPS每秒事務量
show global status like 'Com_commit';
+---------------+---------+
| Variable_name | Value |
+---------------+---------+
| Com_commit | 8495153 |
+---------------+---------+
show global status like 'Com_rollback';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_rollback | 0 |
+---------------+-------+
(3)key Buffer 命中率
mysql>show global status like 'key%';
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%
(4)InnoDB Buffer命中率
mysql> show status like 'innodb_buffer_pool_read%';
innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%
(5)Query Cache命中率
mysql> show status like 'Qcache%';
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;
(6)Table Cache狀態量
mysql> show global status like 'open%';
比較 open_tables 與 opend_tables 值
(7)Thread Cache 命中率
mysql> show global status like 'Thread%';
mysql> show global status like 'Connections';
Thread_cache_hits = (1 - Threads_created / connections ) * 100%
(8)鎖定狀態
mysql> show global status like '%lock%';
Table_locks_waited/Table_locks_immediate=0.3% 如果這個比值比較大的話,說明表鎖造成的阻塞比較嚴重
Innodb_row_lock_waits innodb行鎖,太大可能是間隙鎖造成的
(9)複製延時量
mysql > show slave status
檢視延時時間
(10) Tmp Table 狀況(臨時表狀況)
mysql > show status like 'Create_tmp%';
Created_tmp_disk_tables/Created_tmp_tables比值最好不要超過10%,如果Created_tmp_tables值比較大,
可能是排序句子過多或者是連線句子不夠優化
(11) Binlog Cache 使用狀況
mysql > show status like 'Binlog_cache%';
如果Binlog_cache_disk_use值不為0 ,可能需要調大 binlog_cache_size大小
(12) Innodb_log_waits 量
mysql > show status like 'innodb_log_waits';
Innodb_log_waits值不等於0的話,表明 innodb log buffer 因為空間不足而等待
13)show variables like '%timeout%';檢視連線超時配置
show variables
可以檢視系統變數
系統變數實際上用於控制資料庫的一些行為和方式的引數。比如我們啟動資料庫的時候設定多大的記憶體,使用什麼樣的隔離級別,日誌檔案的大小,存放位置等等一系列的東東。當然我們資料庫系統啟動後,有些系統變數(引數)也可以通過動態修改來及時調整資料庫