您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL超大表怎么快速删除

2025/4/21 13:39:17发布69次查看
mysql 超大表快速删除如果在mysql中直接删除大表可能会导致mysql挂起,这可能会对业务产生负面影响。删除超大表的前提是该表是独立表空间,这样删除才有效。
表创建一个硬链接# du -sh pay_bills.ibd 175g pay_bills.ibd# 创建硬链接# ln pay_bills.ibd pay_bills.ibd_hdlk
执行表删除在linux中,每个存储文件都会有指向该文件的inode index,多个文件名可以通过相同inode index指向相同一个存储文件。
如果该文件名引用的inode index上还被其他文件名引用,则只会删除该文件名和inode index之间的引用
如果该文件名引用的inode index上没有被其他文件名引用,则删除该文件名和inode index之间的引用并删除inode index指向的存储文件。
实际上只是删除了对 pay_bills.ibd 的一个文件引用,我们 pay_bills.ibd_hdlk 对物理文件的引用还是存在的,就不会执行os级别的删除操作,io波动不大,降低对mysql的影响。
mysql> drop table pay_bills;query ok, 0 rows affected (3.24 sec)
执行文件删除安装 truncate 工具
# yum install coreutils -y
执行删除脚本
#!/bin/bashtruncate=/usr/bin/truncate# 从175g开始每次删除2g,最后如果脚本truncate后还剩下部分文件,使用rm删除for i in `seq 175 -2 1`; do $truncate -s ${i}g pay_bills.ibd_hdlk sleep 1donerm -f pay_bills.ibd_hdlk
mysql快速清空大表数据 项目初次上线,进行性能测试造的数据量巨大,都是些不可用数据,但又有一些是必须保留的,很多时候需要进行系统性的清理数据或者是,将有用的数据筛选出来之后再插入到表中!保留表结构或者重新建表(导出数据库中的表结构),重新执行sql语句。
mysql删除或清空表数据
清空表数据的五种方式1、truncate–删除所有数据,保留表结构,不能撤销还原
2、delete–是逐行删除速度极慢,不适合大量数据删除
3、drop–删除表,数据和表结构一起删除
4、导出表结构,再次执行一遍;
5、导出数据库所有表结构,再次执行一遍,清空所有表(与4一致)
清空表数据语法truncate table 表名;(仅保留表结构,速度很快)
delete from 表名;
delete from 表名 where 列名="value ";
drop `t_product_events` if exist;create table `t_product_events` (`id` bigint(20) unsigned not null auto_increment comment '事件id',`level` int(11) null default null,`product_id` bigint(20) not null comment '产品类型id',`identifier` varchar(64) character set utf8 collate utf8_general_ci null default null,`name` varchar(64) character set utf8mb4 collate utf8mb4_general_ci not null comment '事件名称',`description` varchar(256) character set utf8mb4 collate utf8mb4_general_ci null default null comment '事件描述',`type` int(11) not null comment '事件类型,0:info(信息)、1:alert(告警)、2:error(故障)',`ref_id` int(11) unsigned null default 0 comment '引入模板时有意义',`original_required` tinyint(2) not null,`update_required` tinyint(2) not null default 0 comment '是否是标准功能的必选事件,0:可选,1:必选',`custom` tinyint(2) not null comment '0:模板导入,1:自定义',`method` varchar(128) character set utf8mb4 collate utf8mb4_general_ci not null comment '事件对应的方法名称(根据identifier生成)',`create_time` datetime(0) not null default current_timestamp,`update_time` datetime(0) not null default current_timestamp on update current_timestamp(0),`ref` bigint(20) null default null,`related` int(11) null default 0 comment '被预发布或者已发布关联个数',`copyright` tinyint(2) null default 0 comment '是否发布过, 1 发布过 0未发布',`prerelease` tinyint(2) null default 0 comment '是否预发布过, 1 预发布过 0未预发布',primary key (`id`) using btree,index `idx_product_id`(`product_id`) using btree comment '查询优化') engine = innodb auto_increment = 497560 character set = utf8mb4 collate = utf8mb4_general_ci comment = '产品类型事件表' row_format = compact;
以上就是mysql超大表怎么快速删除的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product