MySql 常用语句
-- 查看当前打开的表 SHOW OPEN TABLES WHERE IN_USE > 0; -- 查看当前的MYSQL执行进程详细 SHOW FULL PROCESSLIST; -- 结束某个进程 kill pid -- 命令是用来查看当前运行的所有事务: SELECT * FROM information_schema.INNODB_TRX; -- 命令是用来查看当前出现的锁; SELECT * FROM information_schema.INNODB_LOCKs; -- 命令是用来查看锁等待的对应关系; SELECT * FROM information_schema.INNODB_LOCK_waits; -- 查看每个表 SHOW TABLE STATUS; -- 查看表状态明细 SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dss' and table_name='AC_DOOR_ACCESS_RECORD' ORDER BY TABLE_ROWS DESC; -- 删除表的全部数据 delete from table_name; 1.对于MyISAM会立刻释放磁盘空间(应该是做了特别处理,也比较合理) 2.InnoDB不会释放磁盘空间 -- 带条件的删除 delete from table_name where xxx 1.不管是 Innodb 还是MyISAM都不会释放磁盘空间 2.delete操作以后使用optimize table table_name会立刻释放空间 3.不管是Innodb还是MyISAM,所以想要达到清理数据的目的,请delete以后执行optimize table操作 4.delete from 表以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间。 -- mysql优化表释放表空间 法一: optimize table table_name; 这是我们经常见到的方法,这里就不在过多介绍。 方法二: alter table table_name engine=engine_name; 该方法通常用于切换表的引擎,例如MyISAM转为InnoDB,但是同样适用于释放表空间,
只不过切换后的引擎和原来的engine相同罢了。 注意事项 1.这两种方式都适用于我们常用的表,myisam和innodb。 2.优化表的时候会锁表,数据表越大,耗时越长,因此不要在网站忙时进行表优化。 方法三: truncate table table_name; 会保留表结构,立刻释放表空间,表空间和索引占用的空间恢复如初,但是会删除所有数据,删除速度快。