-
查詢緩存情況
SHOW VARIABLES LIKE '%cache%';
-
查詢慢查詢情況
SHOW VARIABLES LIKE '%slow%';
SHOW GLOBAL STATUS LIKE '%slow%';
-
查看最大鏈接數
SHOW VARIABLES LIKE 'max_connections';
-
查看最大鏈接過的用戶數
SHOW GLOBAL STATUS LIKE 'max_used_connections';
-
顯示用戶正在運行的線程
SHOW PROCESSLIST;
或
SELECT * FROM information_schema.processlist;
參考:https://zhuanlan.zhihu.com/p/30743094
如果出現有表鎖定,無法查詢的情況,可以使用 該命令來查詢出任務的線程的id,然後kill id
,即可結束線程(注意不要隨便在運行的服務上,做alter table操作,包含更改表備註,不然可能會導致表鎖定,深刻體會)。參考:https://www.cnblogs.com/digdeep/p/4892953.html
-
查詢出innodb的引擎的情況
SHOW ENGINE INNODB STATUS
參考:https://blog.csdn.net/rudygao/article/details/47151033 -
在線alter表的注意事項及注意的坑。
7.1 查詢事務:5.5 版本
SELECT
*
/**
a.trx_id,
a.trx_state,
a.trx_started,
a.trx_query,
b.ID,
b. USER,
b. HOST,
b.DB,
b.COMMAND,
b.TIME,
b.STATE,
b.INFO
**/
FROM
information_schema.INNODB_TRX a
LEFT JOIN information_schema.PROCESSLIST b ON a.trx_mysql_thread_id = b.id
WHERE
b.COMMAND = 'Sleep';
5.6版本(支持在線ddl)
SELECT
a.trx_id,
a.trx_state,
a.trx_started,
a.trx_query,
b.ID,
b.USER,
b.DB,
b.COMMAND,
b.TIME,
b.STATE,
b.INFO,
c.PROCESSLIST_USER,
c.PROCESSLIST_HOST,
c.PROCESSLIST_DB,
d.SQL_TEXT
FROM
information_schema.INNODB_TRX a
LEFT JOIN information_schema.PROCESSLIST b ON a.trx_mysql_thread_id = b.id
AND b.COMMAND = 'Sleep'
LEFT JOIN PERFORMANCE_SCHEMA.threads c ON b.id = c.PROCESSLIST_ID
LEFT JOIN PERFORMANCE_SCHEMA.events_statements_current d ON d.THREAD_ID = c.THREAD_ID;
- 查詢某個表的索引情況,一般查詢太慢都是沒有命中聯合索引.
SELECT a.TABLE_SCHEMA,
a.TABLE_NAME,
a.index_name,
GROUP_CONCAT(column_name ORDER BY seq_in_index) AS `Columns`
FROM information_schema.statistics a
GROUP BY a.TABLE_SCHEMA,a.TABLE_NAME,a.index_name
having a.TABLE_NAME='dm_yy_kxd_nationnalver_ztsj_xg_day'
-
Mysql備份數據庫:
mysqldump -h 127.0.0.1 -P 3306 -u root -ppsd --databases samego > /home/alic/MySQL/samego.sql
其中,
127.0.0.1
爲數據庫地址,3306
爲數據庫端口,root
爲數據庫賬號,psd
爲數據庫賬號密碼,samego
爲數據庫的名稱,/home/alic/MySQL/samego.sql
爲備份的數據庫的文件的地址. -
如果查詢某個表,看起來數量很少,但是實際查詢很慢,可能是因爲有些數據還沒實際刪除。一般我們執行
delete
操作並不會實際刪除表在磁盤上的數據,實際刪除表在磁盤上的數據需要執行以下兩個命令,optimize table t
或alter table t engine=InnoDB
參考:https://zhuanlan.zhihu.com/p/66336976 -
查詢數據庫或表的容量
查詢數據庫的容量select table_schema as '數據庫', table_name as '表名', table_rows as '記錄數', truncate(data_length/1024/1024, 2) as '數據容量(MB)', truncate(index_length/1024/1024, 2) as '索引容量(MB)' from information_schema.tables order by data_length desc, index_length desc;
查詢表的容量
select table_schema as '數據庫', table_name as '表名', table_rows as '記錄數', truncate(data_length/1024/1024, 2) as '數據容量(MB)', truncate(index_length/1024/1024, 2) as '索引容量(MB)' from information_schema.tables order by data_length desc, index_length desc;