欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

快速且批量删除MySQL表

程序员文章站 2022-04-10 12:30:00
...

现象

  • MySQL一个库下的表太多,导致数据库打开缓慢
    如果在同一个database下的表太多就会导致执行use database;和show tables;都会非常非常慢,通过查询mysql的执行进程:

    show processlist;
    

    快速且批量删除MySQL表
    可以从图上看到有扫描表的lock进程,这样会hang住(即使你喝再多杯的咖啡也无济于事),这个时候就需要换个思路执行下面的命令先杀掉这些进程

    kill id
    

解决方法

  • 批量导出mysql中需要删除的表

    /usr/local/mysql/bin/mysql -h127.0.0.0 -uroot -p -A -e "select concat('drop table ', TABLE_NAME, ';') from information_schema.tables where TABLE_NAME like 'test_%'" > /opt/hzj.sql
    

    注意:连接mysql的时候记得加-A,避免进行库下的表扫描,可快速得到结果

  • 进入mysql命令行并执行脚本

    source /opt/hzj.sql
    

其中/opt/hzj.sql就是第一步得到的表名文件的绝对路径

相关标签: mysql 运维