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

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 本文介绍了异步删除大表的方法。

背景信息

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。
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
3月前
|
存储 关系型数据库 分布式数据库
PolarDB 并行查询问题之分布式查询执行过程中的数据分发如何解决
PolarDB 并行查询问题之分布式查询执行过程中的数据分发如何解决
45 1
|
3月前
|
XML 监控 Java
异步日志:性能优化的金钥匙
本文主要介绍了Log4j2框架的核心原理、实践应用以及一些实用的小Tips,力图揭示Log4j2这一强大日志记录工具在现代分布式服务架构运维中的关键作用。
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之帮助处理实时性分析查询如何解决
PolarDB 并行查询问题之帮助处理实时性分析查询如何解决
40 1
|
3月前
|
SQL 数据处理 数据库
SQL进阶之路:深入解析数据更新与删除技巧——掌握批量操作、条件筛选、子查询和事务处理,提升数据库维护效率与准确性
【8月更文挑战第31天】在数据库管理和应用开发中,数据的更新和删除至关重要,直接影响数据准确性、一致性和性能。本文通过具体案例,深入解析SQL中的高级更新(UPDATE)和删除(DELETE)技巧,包括批量更新、基于条件的删除以及使用子查询和事务处理复杂场景等,帮助读者提升数据处理能力。掌握这些技巧能够有效提高数据库性能并确保数据一致性。
77 0
|
5月前
|
NoSQL 测试技术 MongoDB
使用同步和异步方式更新插入MongoDB数据的性能对比
在这篇文章中,我将探讨如何使用同步和异步方式插入数据到MongoDB,并对两种方式的性能进行对比。并将通过Python中的 pymongo 和 motor 库分别实现同步和异步的数据插入,并进行测试和分析。
|
6月前
|
消息中间件 NoSQL MongoDB
实时计算 Flink版产品使用合集之抽取数据时,表结构发生变化,从而导致程序抛出异常,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
存储 缓存 前端开发
两种异步日志方案的介绍
两种异步日志方案的介绍
181 0
|
6月前
|
缓存 分布式计算 分布式数据库
巧用ChatGPT 解决 Hbase 快照方式读性能优化问题
巧用ChatGPT 解决 Hbase 快照方式读性能优化问题
90 0
|
存储 监控 测试技术
ClickHouse中的异步数据插入
ClickHouse中的异步数据插入
 ClickHouse中的异步数据插入
|
11月前
|
NoSQL Cloud Native Redis
【性能优化下】组织结构同步优化二,全量同步/增量同步,断点续传实现方式
【性能优化下】组织结构同步优化二,全量同步/增量同步,断点续传实现方式
下一篇
无影云桌面