一些好用的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; #这个命令可以查看外键约束检查状态

你可能感兴趣的:(mysql,数据库)