一些好用的mysql運維命令

  1. 查看數據庫表大小

SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS,concat(round((DATA_LENGTH+INDEX_LENGTH)/1024/1024,2), ‘MB’) as data FROM information_schema.TABLES WHERE TABLE_SCHEMA=‘database_name’; #其中database_name爲數據庫名稱

  1. 清空表

truncate table table_name;

或者

rename table1 table2;
create if no exist table table1 like table2;
drop table table2;

或者

delete from table;

注意:
delete from table_name刪除表的全部數據,對於MyISAM 會立刻釋放磁盤空間 (應該是做了特別處理,也比較合理),InnoDB 不會釋放磁盤空間;刪除部分記錄的話不管是MyISAM或InnoDB都不會釋放空間,如果需要釋放的話需要執行optimize table tablename。

三者的區別可以參考MySQL刪除數據後磁盤空間的釋放總結

  1. 查看mysql語句執行過程(查詢優化相關)

explain select …

mysql truncate具有外鍵約束的表

清空表的時候報錯(內容類似下面):

Cannot truncate a table referenced in a foreign key constraint (`表名`.`article_content`, CONSTRAINT `fk_aid` FOREIGN KEY (`aid`) REFERENCES `數據庫名`.`article` (`id`))

解決辦法:將foreign key 檢查暫時關閉,truncate後再恢復回來:

SET foreign_key_checks=0;
truncate table table name;
SET foreign_key_checks=1;
select @@foreign_key_checks; #這個命令可以查看外鍵約束檢查狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章