MySQL:分区是处理删除的好方法吗?

标签 mysql performance database-design partitioning

我有一个 MySQL 表:

CREATE TABLE responses (
    id INT NOT NULL AUTO_INCREMENT,
    other_id INT NOT NULL,
    details TEXT,
    deleted BOOLEAN,
    PRIMARY KEY (id)
);

用户可以删除响应中的记录。

我的计划是使用字段deleted来实现删除。每当用户删除记录时,我都会将 deleted 设置为 1

时不时地,我可能想要删除所有已删除的记录或将它们存档。我正在考虑使用分区来加快速度:

PARTITION BY LIST(deleted) (
    PARTITION pActive VALUES IN (0),
    PARTITION pDeleted VALUES IN (1)
);

我的问题是这会使删除操作变慢吗?现在,当我更改记录的“已删除”字段时,MySQL 需要将记录移动到一个完全不同的分区。这看起来可能很慢。

如有任何建议,我们将不胜感激。

最佳答案

是的,为了在分区之间传递,我希望两种状态之间的转换会更慢。但是对现有值的已删除/未删除查询会更快,尽管不涉及删除状态的查询不会得到改进。

一切都是关于表中最常见的操作是什么,并接受可能存在的妥协。

关于MySQL:分区是处理删除的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115732/

相关文章:

ios - 核心数据并发导入性能

database-design - 带有回退计划的企业设置中的 RavenDB 设置

sql - *不*使用 GUID 作为主键的原因是什么?

php - 如何在查询中有变量的where子句中使用SQL UNION

python - mysql.connector SELECT 查询是并发运行还是顺序运行?

mysql - Laravel Eloquent 和 3 表关系

mysql - 如何获取 SQL 中的最新行?

java - 为什么这个 Android 代码这么慢?

mysql - 为什么第二次运行 MySQL 查询速度更快?

c++ - 并行程序与线性程序相比没有速度增加