首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏一涨知识胖五斤

    MySQL异步删除的方法

    常见的删除方式对于的场景,常见的做法:小批量、分批删除;由于直接使用delete,是逐步删除,直接delete不带where条件肯定是不科学的。 table new_table to old_table;drop table old_table_del;rename命令支持多个,上面2条语句也可以合并成一条:rename table old_table 删除数据文件,使用限速删除工具操作:bt-rmTDSQL异步删除表功能如果使用的是TDSQL,基于腾讯自研TXSQL内核支持异步删除:https://cloud.tencent.com/document drop异步化相关参数已支持动态设置, 无须重启实例该功能无需用户操作,由内核自动完成,其原理是在删除时,为的数据文件在另外一个目录中创建一个硬连接。 建议数据量小的时候,清空数据,使用truncate命令,删除可直接drop数据量大的时候,使用创建硬链接的方式,drop table后再逐步删除文件;使用TDSQL的话,打开异步删除配置参数,直接drop

    5.8K110编辑于 2022-11-10
  • 来自专栏数据库干货铺

    clickhouse如何删除

    clickhouse 在单或单分区超过50GB时,将无法直接删除 1. 案例 模拟删除或单分区超过50GB时,删除报错的情况 1.1 一个中超过50GB的分区 -- 删除分区的脚本如下 ALTER TABLE testdb.test DROP PARTITION ( Size (56.20 GB) is greater than max_[table/partition]_size_to_drop (50.00 GB) 2. force_drop_table' && sudo chmod 666 '/data/clickhouse/flags/force_drop_table'. 1.3 解决方法 报错信息中已给出解决方法: 1) 增大单或单分区的可删除的大小 2) 通过执行脚本,强制删除 1.4 我们选择强制删除来解决 执行如下脚本 sudo touch '/data/clickhouse/flags/force_drop_table' && sudo

    3.2K10编辑于 2022-11-11
  • 来自专栏大大刺猬

    mysql 删除方案

    需求 有时候又删除的需求, 一般直接drop就行, 但有时候会有IO的问题. 什么叫呢? /db1/sbtest1.ibd /data/mysql_3306/mysqldata/db1/sbtest1.ibd.rm 然后在mysql上删除sbtest1 drop table sbtest1 然后删除 mysql> flush table sbtest2 for export; shell> mv /data/mysql_3306/mysqldata/db1/sbtest2.ibd /data /mysql_3306/mysqldata/db1/sbtest2.ibd.rm mysql> unlock tables; mysql> drop table sbtest2; 最后再慢慢删除sbtest2 100MB. mysql的也尽量不要整这么, 日志之类的, 可以按时间分个区.

    4K01编辑于 2023-05-27
  • 来自专栏Hadoop数据仓库

    快速安全删除MySQL

    本文链接:https://blog.csdn.net/wzy0623/article/details/102318556 目录 一、删除过程 1. buffer pool清除 2. 删除表相关的磁盘文件 二、创建硬链接 三、删除 四、删除文件释放空间 参考: ---- 在一个高负载的生产数据库上删除需要一些技巧,倘若直接drop table,将产生大量磁盘I/ 这部分的优化的难点在于涉及源码,作为应用能做是先要保证被删除上没有活动事务,最好是没有任何访问,然后在业务低峰期执行删除操作。 2. 通常可以使用以下三个步骤删除: 创建文件的硬链接。 drop table删除删除文件释放磁盘空间。 二、创建硬链接 一个磁盘上的存储文件,可以由多个文件名引用。 498115543040 Oct 7 17:14 t1.ibd -rw-rw---- 2 mysql mysql 498115543040 Oct 7 17:14 t1.ibd.h 再删除时,只是删除

    6.9K50发布于 2019-10-22
  • MySQL——如何快速删除

    前言 线上有一个,大小为24G左右,没有什么重要的数据,却一直没有优化,导致业务无法进行,在此环境上,所以我们开始了删除之路 步骤 复制表 我这里使用Navicat工具直接复制表,选择仅结构即可。 ln instruction.frm instruction.frm.bak ln instruction.ibd instruction.ibd.bak 删除 DROP TABLE "表格名"; 24G的数据删除大概用了15秒左右 修改名 将我们刚才复制的,名修改为线上正常使用的名即可。 删除物理文件 切记的物理文件不可直接删除,直接操作会导致磁盘IO和CPU利用率升高,影响线上业务可使用truncate来进行删除操作。 truncate -s 2G instruction.ibd.bak

    2.2K10编辑于 2024-08-14
  • 来自专栏ops技术分享

    安全删除MySQL(上)

    一.简介 源码地址 日期:2018/4/12 介绍:工具用于安全删除MySQL,对于一些特定场景可能有用 应用场景:大批删除不走索引但是有主键的场景[可以是单列索引,也可是多列索引] 实现思路:根据where centos6+ 语言:中文 注意:必须有主键或者非空唯一索引 1.下载 git clone https://gitee.com/mo-shan/safe_delete.git cd safe_delete 2.

    5.7K20发布于 2021-06-16
  • 来自专栏ops技术分享

    安全删除MySQL(下)

    3.帮助手册 bash bin/safe_delete -h 4.使用演示 查看表,删除手机号是“00175731528296189904”的数据,手机号不是索引字段 mysql(test@localhost varchar(80) DEFAULT NULL COMMENT '销售编号', `open_id` varchar(45) NOT NULL COMMENT 'openID', `type` int(2) NOT NULL COMMENT '1 销售,2 用户', `phone` varchar(20) NOT NULL COMMENT '手机号', `create_time` datetime NOT

    5K10发布于 2021-06-16
  • 来自专栏热爱IT

    Innodb中MySQL如何快速删除2T的

    这意味着,如果在白天,访问量非常的时候,如果你在不做任何处理措施的情况下,执行了删的命令,整个mysql就挂在那了,在删期间,QPS会严重下滑,然后产品经理就来找你喝茶了。 ps:my.cnf中的datadir就是用来设置数据存储目录 好了,上面巴拉巴拉了一堆,我只想说一个事情: 在绝大部分情况下,运维一定会为mysql选择独立空间的存储方式,因为采用独立空间的方式, 这个时候,你做了删除文件名(1)的操作,linux系统检测到,还有一个文件名(2)指向Inode Index,因此并不会真正的把文件删了,而是把文件名(1)的引用给删了,这步操作非常快,毕竟只是删除引用 接下来,你再做删除文件名(2)的操作,linux系统检测到,没有其他文件名指向该Inode Index,就会删除真正的存储文件,这步操作,是删真正的文件,所以比较慢。 OK,我们用的就是上面的原理。 删除脚本如下 TRUNCATE=/usr/local/bin/truncate   for i in `seq 2194 -10 10 `;    do      sleep 2     $TRUNCATE

    3.6K20发布于 2019-04-10
  • 来自专栏bisal的个人杂货铺

    探寻删除字段慢的原因

    删除字段为何慢?》的案例中,提到删除一张的字段,产生了很多等待,但是测试环境模拟的现象,看起来和生产,略有区别。 2. obj#=11111 obj#对应的是dba_objects视图中的字段object_id,所以,根据object_id,可以检索出object_name,就知道正是删除字段的名,说明这些等待, 关于删字段,有些老师朋友,提供了他们碰见的问题,以及建议, 1. kill删除字段的会话,再次查询会报ORA-12986,需要truncate才能继续,此时要是没备份,就凉凉了。 ? 执行完毕后再次查询test1,就OK了 2.可以尝试逻辑删除,然后再物理删除,即线上置为unused,等维护窗口,再删除这个字段,如下面这篇文章, https://blog.csdn.net/caimaohua 应用中对该字段的引用,需要删除,例如insert操作,需要删除这个字段名称,否则就会出问题。 2.

    1.7K20发布于 2019-01-30
  • 来自专栏DBA随笔

    MySQL删除工具pt-osc​

    // MySQL删除工具pt-osc // 业务场景介绍 早上刚来,有个业务需求,是要变更一张结构,我登陆到服务器上看了看之前的变结构,大概信息如下: 数据量:690w左右, 表字段数量 mysql在线ddl(加字段、加索引等修改结构之类的操作)过程如下: 1、对表加锁(此时只读) 2、复制原物理结构 3、修改的物理结构 4、把原数据导入中间中 rows in set (0.00 sec) 可以看到,直接进行alter table add的操作,会导致锁3min24s左右,这对线上业务的影响是非常的,而直接进行alter table 创建需要执行alter操作的原的一个临时,然后在临时中更改结构。 2. 在原中创建触发器(3个)三个触发器分别对应insert,update,delete操作 3. Rename 原到old中,在把临时Rename为原,最后将原删除,将原上所创建的触发器删除

    2.7K10发布于 2019-11-06
  • 来自专栏腾讯数据库技术

    如何快速删除InnoDB中的

    背景 在使用MySQL时,如果有的存储引擎是InnoDB,并且系统参数innodb_file_per_table设置为1,即每个文件对应一个独立的空间,当对这些进行DROP TABLE时,有时会发现整个数据库系统的性能会有显著下降 ,包括一些只涉及几行数据的简单SELECT查询和DML语句,而且这些语句和正在删除没有关系。 在删除一个有独立空间的时,需要对buffer pool中所有和这个空间有关的数据页做清理工作,包括从AHI,flush list和LRU list上移除,而在这个清理过程中,会一直持有buffer IO问题 尽管已经有了上述的buffer pool层面的优化,我们在使用MySQL 5.6或者5.7时依然发现删除对系统性能还是会产生显著的影响,说明DROP TABLE还有其他的性能瓶颈,尤其是对于这样一种业务场景 :并发地删除多个大

    10.2K32发布于 2018-06-05
  • 来自专栏bisal的个人杂货铺

    【求助】从删除中存在的记录问题

    A:30万,主键ID B:300万,主键ID 从B删除ID=AID的记录。 B10多个B(都是300万),串行操作相当于10次B的全扫描,因为磁盘IO性能较差,执行单个DELETE时都可能占据较大CPU,所以不能并行。 是否还有优化空间呢?请高手指点,谢谢!  1 |  HASH JOIN RIGHT SEMI   |               |   225K|    15M|  4168K| 18309  (1)| 00:03:40 | |*  2          | |   4 |     INDEX FAST FULL SCAN| P_A                |   133K|   911K|       |    88  (2) ID"="ID")    2 - filter("RN">0 AND "RN"<=50000) Statistics -------------------------------------

    8.5K30发布于 2019-01-29
  • 来自专栏小勇DW3

    如何高效的批量删除亿级数据

    最新项目一直出现线上问题,定位原因看到是由于数据过大导致的,现在有个登录,登录游戏玩家每次登录的信息,久而久之,这几个的数据量达到了两亿多条。每天都在上报,采集,由于没有定期删除,数据大量累积。 大概有一年左右的数据,一个的数据已经达到亿级别的。这样算下来,一个的数据至少是几十GB了。因此需要删除过期的数据,暂时保留近三个月的统计数据。 解决方案: 基本每个都有个字段叫create_time或者collect_time的字段,只要删除这个字段三个月之前的数据就ok了 delete from table_name where create_time ,mysql给的buffer好像只有8MB左右(网上搜到的) 后面找到DBA帮忙看,问这个建了索引没有 show index from table_name 通过查看索引,我们在create_time 客户端连接删除,使用的spring jdbcTemplate这个接口 另外,这里一次删除10k还有个原因是,事务太大,影响其他服务的运行 还用到的技术,就是使用线程池来执行sql删除,实现异步删除

    1.8K20发布于 2019-01-03
  • 来自专栏小勇DW3

    如何高效的批量删除亿级数据

    最新项目一直出现线上问题,定位原因看到是由于数据过大导致的,现在有个登录,登录游戏玩家每次登录的信息,久而久之,这几个的数据量达到了两亿多条。每天都在上报,采集,由于没有定期删除,数据大量累积。 大概有一年左右的数据,一个的数据已经达到亿级别的。这样算下来,一个的数据至少是几十GB了。因此需要删除过期的数据,暂时保留近三个月的统计数据。 解决方案: 基本每个都有个字段叫create_time或者collect_time的字段,只要删除这个字段三个月之前的数据就ok了 delete from table_name where create_time ,mysql给的buffer好像只有8MB左右(网上搜到的) 后面找到DBA帮忙看,问这个建了索引没有 show index from table_name 通过查看索引,我们在create_time 客户端连接删除,使用的spring jdbcTemplate这个接口 另外,这里一次删除10k还有个原因是,事务太大,影响其他服务的运行 还用到的技术,就是使用线程池来执行sql删除,实现异步删除

    5K20发布于 2019-01-02
  • 来自专栏Hank’s Blog

    清空删除mysql

    Mysql清空(truncate)与删除中数据(delete)的区别 为某基于wordpress搭建的博客长久未除草,某天升级的时候发现已经被插入了几万条垃圾留言,如果一条条删除那可真是累人的活。 遂考虑直接进入mysql直接清空或者删除中数据。 本文记录一下这2种操作模式的区别,目标对象是wp_comments,里面的所有留言均是垃圾留言,均可删除。 然后便有了以下2种方式(进入mysql操作界面后): truncate table wp_comments; delete * from wp_comments; 其中truncate操作中的table 这两者都是将wp_comments中数据清空,不过也是有区别的,如下: truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。 而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。 如果只需删除中的部分记录,只能使用DELETE语句配合where条件。

    10.7K20发布于 2020-09-16
  • 来自专栏腾讯云数据库(TencentDB)

    【腾讯云CDB】如何快速删除InnoDB中的

    背景 在使用MySQL时,如果有的存储引擎是InnoDB,并且系统参数innodb_file_per_table设置为1,即每个文件对应一个独立的空间,当对这些进行DROP TABLE时,有时会发现整个数据库系统的性能会有显著下降 ,包括一些只涉及几行数据的简单SELECT查询和DML语句,而且这些语句和正在删除没有关系。 在删除一个有独立空间的时,需要对buffer pool中所有和这个空间有关的数据页做清理工作,包括从AHI,flush list和LRU list上移除,而在这个清理过程中,会一直持有buffer IO问题 尽管已经有了上述的buffer pool层面的优化,我们在使用MySQL 5.6或者5.7时依然发现删除对系统性能还是会产生显著的影响,说明DROP TABLE还有其他的性能瓶颈,尤其是对于这样一种业务场景 :并发地删除多个大

    4.6K21发布于 2017-12-14
  • 来自专栏以终为始

    顺序应用2:多余元素删除之建算法(SDUT 3325)

    可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序删除,使该由一个“非纯”(值相同的元素在中可能有多个)变成一个“纯”(值相同的元素在中只保留第一个 要求:        1、必须先定义线性的结构与操作函数,在主函数中借助该定义与操作函数调用实现问题功能;       2、本题的目标是熟悉在顺序空间基础上建新的算法,要在原顺序空间的基础上完成完成删除 ,建过程不得开辟新的空间; 3、不得采用原元素移位删除的方式。 Output  输出有n行,为每个顺序删除多余元素后的结果 Sample Input 4 5 6 9 6 8 9 3 5 5 5 5 9 8 7 6 5 10 1 2 3 4 5 5 4 2 1 3 Sample Output 6 9 8 5 9 8 7 6 5 1 2 3 4 5

    33300编辑于 2023-03-09
  • 来自专栏GreenLeaves

    SqlServer 循环建删除、更新

    常用于分库分 1、批量删除 declare @outter int declare @inner int declare @tablePrefix varchar(30) declare @tableName execute('delete from '+@tableName+'') set @inner=@inner+1 end set @inner=0 set @outter=@outter+1 end 2、 批量建 declare @outter int declare @inner int declare @tablePrefix varchar(30) declare @tableName varchar

    3.9K30发布于 2019-01-07
  • 来自专栏DBA 平台和工具

    DROP删除小技巧 - 面试题解答

    在日常工作中,经常会遇到历史从主库上迁移到备份机,以便腾出主库空间,那么如果你直接drop table 后,可能会引起数据库抖动,连接数升高等问题,从而影响业务。 那么用一个小技巧,即可轻松平滑的从主库上删除历史。1、创建一个硬链接,在drop table 时,"欺骗"MySQL已经删除完毕。 ln test.ibd test.ibd.hdlk2、这个时候不要直接rm test.ibd.hdlk,这样会引起磁盘IO转速上升,MySQL会发生性能抖动。 我们这里写一个脚本,每次循环1G,休眠2秒,直至删除完。 1)先移动test.ibd.hdlk到/data/bak/目录下mv test.ibd.hdlk /data/bak/2)执行下面的脚本即可:#!

    34110编辑于 2023-12-02
  • 来自专栏我的Android开源之旅

    !RecyclerView性能提升200%,异步预加载杀器!

    那么今天我就结合之前讲的如何优化onCreateViewHolder的加载时间,讲一讲如何实现onCreateViewHolder的异步预加载,文章末尾会给出示例代码的链接地址,希望能给你带来启发。 其次可能就是想办法让设计师重新设计,将布局中的某些内容删除或者折叠了,对暂不展示的内容使用ViewStub进行延迟加载。 毫无疑问,布局异步加载将为你打开新的世界。 原理 Google官方很早就发现了XML布局加载的性能问题,于是在androidx中提供了异步加载工具AsyncLayoutInflater。 其本质就是开了一个长期等待的异步线程,在子线程中inflate view,然后把加载好的view通过接口抛出去,完成view的加载。 这里的集合类型我选择的是LinkedList,因为我们的缓存需要频繁的添加和删除操作,并且LinkedList实现了Deque接口,具备先入先出的能力。

    3K31编辑于 2023-09-01
领券