V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
luxinfl
V2EX  ›  MySQL

请教个问题,如何快速的删除 mysql 的数据

  •  
  •   luxinfl · 1 天前 · 1261 次点击

    是这样的,有张表 tableA,里面有 220 万条数据。 现在需要删除其中 130 多万条数据,而且这些数据还会有关联的业务表,通过 tableA 中的业务编号关联。 怎么才能快速清楚这些数据?直接 delete 的话应该会很慢的。 我看了执行计划,type=ALL,filter=100.00,extra=Using where

    16 条回复    2024-10-13 15:19:47 +08:00
    ZZ74
        1
    ZZ74  
       1 天前
    找个夜深人静执行 delete 或者写个程序慢慢删。
    就为了一个删除搞两张表数据同步双写之类的也耗时间,麻烦
    gitnot
        2
    gitnot  
       1 天前
    insert select 后 改表名, 这么点洒洒水
    luxinfl
        3
    luxinfl  
    OP
       1 天前
    @ZZ74 有人时时刻刻再推数据,感觉不是太保险。。
    luxinfl
        4
    luxinfl  
    OP
       1 天前
    @gitnot 把需要的数据弄到一张新表是吧?但是关联表有七八张表,这也太费劲了。。
    ZZ74
        5
    ZZ74  
       1 天前
    @luxinfl 推数据有什么不保险的,先确定一批数据比如 130W 条的主键及其关联的其他业务表的数据主键。然后低谷时定时执行,N 条一批 删除。
    securityCoding
        6
    securityCoding  
       1 天前   ❤️ 1
    没懂,这点数据你敲完键盘下一秒就删完了
    tomatocici2333
        7
    tomatocici2333  
       1 天前
    你这是要先理清除这些字段的血缘关系吧。要删得话,其他表和这个相关得数据也需要一起删?
    adoal
        8
    adoal  
       1 天前
    你这 130 万条数据之间有相互关系不,是否一定要整体做原子删除,如果不是的话,分批慢慢删也没关系啊。
    paomianshi
        9
    paomianshi  
       1 天前
    这种情况我一般是写个脚本自动分批跑
    ghost024
        10
    ghost024  
       23 小时 50 分钟前
    搞个跑批,要删的业务表应该都有删除的方法,根据表 a 的业务编号直接同步删除,然后这个操作分批进行(这种方式必须保证这些关联数据是完全独立的,要是两个记录共用一个数据就别删了),或者就是先在表 a 加个标志,逻辑删好了,也快的
    nerkeler
        11
    nerkeler  
       20 小时 13 分钟前
    其他的查出来放一张新表,旧表 truncate 命令删掉
    COW
        12
    COW  
       19 小时 47 分钟前
    搞个逻辑删除,is_deleted 置为 true 。
    akira
        13
    akira  
       16 小时 40 分钟前
    删除数据的时候 ,数据安全才是最重要的。。 速度其实并不重要。。
    Tubbs
        14
    Tubbs  
       8 小时 12 分钟前 via iPhone
    我们在生产中一般用 gh-ost 这种工具进行 ddl ,解决你说的数据在不断写入的问题,无锁无延迟的 ddl 速度会快很多
    Tubbs
        15
    Tubbs  
       8 小时 7 分钟前 via iPhone
    对于删除数据这种 dml 场景实际上也能用 gh-ost
    通过 gh-ost 复制表的结构到一个新的影子表,然后在这张表里应用删除逻辑,这样可以避免在原表上直接操作导致性能问题,操作的时候同时进行增量同步,最后切到新表就行
    siweipancc
        16
    siweipancc  
       2 小时 59 分钟前 via iPhone
    这时候 orm 就有用了,哈哈哈。
    没办法,梳理业务吧,不要删除,移动数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2480 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 10:19 · PVG 18:19 · LAX 03:19 · JFK 06:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.