1. 程式人生 > >資料庫練習四: 優化經常用到的命令

資料庫練習四: 優化經常用到的命令

SHOW INDEX

返回表索引資訊
SHOW INDEX FROM tbl_name [FROM db_name]
image.png

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

檢視建表資訊
image.png

show table status

查看錶結構資訊
image.png

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

可以檢視系統變數
系統變數實際上用於控制資料庫的一些行為和方式的引數。比如我們啟動資料庫的時候設定多大的記憶體,使用什麼樣的隔離級別,日誌檔案的大小,存放位置等等一系列的東東。當然我們資料庫系統啟動後,有些系統變數(引數)也可以通過動態修改來及時調整資料庫