小编Shw*_*taJ的帖子

为什么 PostgreSQL 数据库表上的“DELETE”操作异常缓慢?

在 PostgreSQL 数据库表上执行“DELETE”操作时,我遇到了严重的性能问题。删除 15488 条记录的执行时间为 79423.768 毫秒,与“INSERT”或“SELECT”等其他操作相比非常慢。对于为什么会发生这种情况以及优化删除操作的可能方法,我将不胜感激。

背景:我使用 PostgreSQL 引擎版本 12.14 作为应用程序的后端,并且我注意到从一个表中删除记录需要花费出乎意料的长时间。涉及的表定义了索引和约束,数据库大小相对较小,预计会增长到几 GB。然而,对于这个特定的表,这个问题似乎更加明显,而其他表则表现良好。

硬件是 AWS db.t2.micro 实例,具有 1 个 CPU 核心、1 (GiB) 内存和 20 (GiB) 通用 SSD 用于存储。

column_name_loading表架构,我们尝试从中删除的表。

列名称 数据类型 描述
ID 文本 首要的关键
散列 文本 首要的关键
日期_从 时间戳 首要的关键
日期到 时间戳
测量位置uuid 通用唯一标识符 主键、外键
列名 文本 不为空
统计类型id 文本
被忽略 布尔值
笔记 文本
更新时间 时间戳
更新者 通用唯一标识符

可以看到,上表有一个复合主键,涉及4列。有两个表具有对该column_name_loading表的外键引用

第一桌

ALTER  TABLE
logger_main_config_column_name_loading 
ADD
CONSTRAINT column_name_loading_fkey FOREIGN KEY (
column_name_loading_measurement_location_uuid,
column_name_loading_id,
column_name_loading_hash,
column_name_loading_date_from
) REFERENCES …
Run Code Online (Sandbox Code Playgroud)

postgresql delete postgresql-performance slow-query

6
推荐指数
1
解决办法
2478
查看次数