• mysql之delete


    ###############################

    一、delete和truncate区别:

    • 灵活性:delete可以条件删除数据,而truncate只能删除表的所有数据;
    delete from table_test where ...
    
    truncate table table_test
    • 效率:delete效率低于truncate,delete是一行一行地删除,truncate会重建表结构,
    • 事务:truncate是DDL语句,需要drop权限,因此会隐式提交,不能够rollback;delete是DML语句,可以使用rollback回滚。
    • 触发器:truncate 不能触发任何Delete触发器;而delete可以触发delete触发器。

    二、语法格式:

    delete [low_priority] [quick] [ignore] from tbl_name  
    [where where_definition]  
    [order by ...]  
    [limit row_count]

     在删除行的过程中,ignore关键词会使MySQL忽略所有的错误。

     删除数据的脚本:

    #!/bin/bash
    echo "delete "
    
    for i in $( seq 1 1000000)
    do
    echo "---------------"
    sleep 2s
    mysql -uroot -p123456  -h10.10.10.10  -P3306  -Dapple  -e "use apple;delete from mac WHERE  ts < 1621080000 limit 15000;"
    echo "============"
    done

    删除数据速度问题:当每2秒删除2万条数据的时候,主从延迟直线上升,当每2秒删除1.5万条数据的时候,主从延迟基本维持在5秒内,因此采取了每2秒删除1.5万行数据,

     

    每2秒删除1.5万行,则一天可以删除6.4亿行数据,还是很可观的速度:

    autopilot@10.10.10.10 ((none)) > select 30*15000*60*24/10000/10000;
    +----------------------------+
    | 30*15000*60*24/10000/10000 |
    +----------------------------+
    |                 6.48000000 |
    +----------------------------+
    1 row in set (0.00 sec)
    
    Thu Jun 10 15:11:48 2021

    机器配置:

    内存 128G
    磁盘 固态硬盘ssd
    系统 CentOS7.3
    CPU 40核
       
       

     

     

    ###################

    igoodful@qq.com
  • 相关阅读:
    JS中原型链的理解
    CSS3的笔记总结
    那些牛掰的 HTML5的API(二)
    初识 HTML5(一)
    jQuery基础知识点(下)
    jQuery基础知识点(DOM操作)
    jQuery基础知识点(上)
    [译]GC专家系列2:Java 垃圾回收的监控
    [译]GC专家系列1: 理解Java垃圾回收
    [译]深入理解JVM
  • 原文地址:https://www.cnblogs.com/igoodful/p/8997824.html
Copyright © 2020-2023  润新知