最佳实践—如何异步删除大表

简介: 本文介绍了异步删除大表的方法。

背景信息

PolarDB-X底层存储节点,默认使用InnoDB引擎时,直接删除大表后会触发表文件的删除,导致POSIX文件系统出现严重的稳定性问题,因此InnoDB会启动一个后台线程来异步清理数据文件。当删除单个表空间时,会将对应的数据文件先重命名为临时文件,然后清除线程将异步、缓慢地清理文件。


说明 提供清除文件日志来保证DDL语句的原子性。

操作步骤

  1. 使用如下命令查看实例全局变量设置:
SHOW GLOBAL VARIABLES LIKE '%data_file_purge%';
  1. 返回结果如下:
+----------------------------------------+-------+

| Variable_name | Value |
+----------------------------------------+-------+
| innodb_data_file_purge | ON |
| innodb_data_file_purge_all_at_shutdown | OFF |
| innodb_data_file_purge_dir | |
| innodb_data_file_purge_immediate | OFF |
| innodb_data_file_purge_interval | 100 |
| innodb_data_file_purge_max_size | 128 |
| innodb_print_data_file_purge_process | OFF |
+----------------------------------------+-------+
  1. 参数说明如下:
参数 说明
innodb_data_file_purge 是否启用异步清除策略。
innodb_data_file_purge_all_at_shutdown 正常关机时全部清理。
innodb_data_file_purge_dir 临时文件目录。
innodb_data_file_purge_immediate 取消数据文件的链接但不清理。
innodb_data_file_purge_interval 清理时间间隔。单位:ms。
innodb_data_file_purge_max_size 每次清理单个文件大小的最大值。单位:MB。
innodb_print_data_file_purge_process 是否打印文件清理工作进程。
  1. 可以使用如下命令设置参数:
set global INNODB_DATA_FILE_PURGE = on;
set global INNODB_DATA_FILE_PURGE_INTERVAL = 100;
set global INNODB_DATA_FILE_PURGE_MAX_SIZE = 128;

  1. 说明 默认情况下PolarDB-X并不支持直接使用set global指令设置参数,建议在控制台上进行的存储层参数设置。
  2. 使用如下命令查看清理进度:
select * from information_schema.innodb_purge_files;
  1. 返回结果如下:
+--------+---------------------+--------------------+---------------+-------------------------+--------------+
| log_id | start_time | original_path | original_size | temporary_path | current_size |
+--------+---------------------+--------------------+---------------+-------------------------+--------------+
| 0 | 2021-05-14 14:40:01 | ./file_purge/t.ibd | 146800640 | ./#FP_210514 14:40:01_9 | 79691776 |
+--------+---------------------+--------------------+---------------+-------------------------+--------------+
  1. 参数说明如下:
参数 说明
start_time 清理操作的开始时间。
original_path 表数据文件的原始路径。
original_size 表数据文件的原始大小,单位:byte。
temporary_path 清理中的临时文件路径。
current_size 待清理的剩余临时文件大小,单位:byte。
相关文章
|
存储 数据可视化 Serverless
使用蒙特卡罗模拟的投资组合优化
在金融市场中,优化投资组合对于实现风险与回报之间的预期平衡至关重要。蒙特卡罗模拟提供了一个强大的工具来评估不同的资产配置策略及其在不确定市场条件下的潜在结果。
725 1
|
JavaScript
5. 解决 nativeTags 不被 Vue - Office 插件兼容的问题
5. 解决 nativeTags 不被 Vue - Office 插件兼容的问题
287 0
|
存储 数据处理 UED
计算机随机存取存储器(RAM )
【8月更文挑战第4天】
4398 8
|
存储 缓存 关系型数据库
MySQL8 中文参考(二)(3)
MySQL8 中文参考(二)
296 1
|
SQL 关系型数据库 MySQL
走进RDS之MySQL内存分配与管理(上)
MySQL的内存分配、使用、管理的模块较多,本篇文章主要介绍InnoDB层和SQL层内存分配管理器,主要包括ut_allocator、mem_heap_allocator和MEM_ROOT,代码版本主要基于8.0.25。
|
存储 设计模式 算法
Blink Tree 比 B+Tree 性能猛多少???
Blink 树和 B+ 树都是一种类似于B树的数据结构,用于在磁盘上存储和索引数据以实现高效查找和操作。它们的主要区别在于内部节点和叶子节点的结构以及指针的使用方式。总的来说,Blink 树的特点是将内部节点和叶子节点合并为一个节点,减少了树的高度;而 B+ 树通过叶子节点之间的有序链表提高了范围查询和顺序遍历的性能。Blink tree 真的牛啊!# 如果键已经存在,更新值else:# 如果根节点已满,进行分裂else:# 如果是叶子节点,直接插入index = 0index += 1。
693 1
|
Dart JavaScript
项目中安装并使用scss.(不需要安装node-sass)
项目中安装并使用scss.(不需要安装node-sass)
639 0
|
AliSQL 关系型数据库 MySQL
RDS AliSQL 面向 Binlog 的性能优化大揭密(下)——强效瓶颈消除
本篇将继续揭秘AliSQL在binlog高并发性能上做的企业级优化。
RDS AliSQL 面向 Binlog 的性能优化大揭密(下)——强效瓶颈消除
|
存储 运维 容灾
为什么游戏行业喜欢用PolarDB
PolarDB 在游戏行业的最佳实践
22220 4
为什么游戏行业喜欢用PolarDB
|
算法 关系型数据库 MySQL
长路漫漫, 从Blink-tree 到Bw-tree (上)
在前面的文章 路在脚下, 从BTree 到Polar Index中提到, 我们已经将InnoDB 里面Btree 替换成Blink Tree, 高并发压力下, 在标准的TPCC 场景中最高能够有239%的性能提升, 然后我们对InnoDB 的file space模块也进行了优化, 在分配新pag...
524 0