drop table tblname -- 彻底删除该表
truncate table tblname -- 快速删除数据,但是保存数据结构
更快删除大表请百度(直接给链接怕违规):
mysql删除大表更快的办法
1,停止Mys服务,卸载MyS2,删除安装目录及数据存放目录
3,在注册表查询mysql,全部删除(这一步很关键,安装失败主要原因就是注册表删不干净)
以下是彻底删除注册表方法:
(1)进入注册表:运行>>regedit
(2)再清理以下三个目录:
a. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL
b. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL
c. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL
MySQL注册表中的ControlSet001,ControlSet002,不一定是001和002,可能是ControlSet005、006之类,删除的时候,都删除就可以
检查C:\WINDOWS目录下是否有my.ini文件,将其删除
4,在c盘查询MySQL(可能会隐藏,显示隐藏文件就行了),全部删除
5,重新安装MySQL,配置过程中选择之前未用过的名字(MySql4,若仍使用原来的MySql,则无法启动服务)
最近遇到了一个坑,MySQL数据库服务器硬盘容量告警,而且因为非技术原因,还不能追加硬盘。 通过监控发现,磁盘IO一直100%。直接影响就是系统处理时间越来越长,接口响应耗时也越来越多。 经过分析,发现mysql业务数据库里有好几张大表,而且这几张大表行数都在5000万以上,文件大小都在100G和150G之间。 因为这些表都是备份表,第一反应就是找DBA直接清理掉这些表。 潜意识里以为drop table 和 truncate table效率很高,都会快速完成,但事实上不是。 但意外的是,在执行drop table时,直接导致数据库挂起了,而且还发生了主从切换。 第一次尝试失败。 第一次失败反应出来的问题是,如果数据文件过大,drop table *** 作也得慎用。 那我们可以在drop table之前,想办法把数据文件逻辑清空。比如Linux硬连接的方式,具体步骤如下(假如目标表名是test): ln test.ibd test.ibd.hdlk drop table test 此时,磁盘上真实的数据其实没删除,但数据库里的表,已经删除了。 rm test.ibd.hdlk 到此,数据就能快速清理成功了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)