MySql 常用语句

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; 会保留表结构,立刻释放表空间,表空间和索引占用的空间恢复如初,但是会删除所有数据,删除速度快。
原文地址:https://www.cnblogs.com/rinack/p/14151703.html