具有大量插入和删除的表的MySQL分区



>我有一个表格,我们每天在其中插入大约 2000 万个条目(没有任何限制的盲插入)。我们有两个外键,其中一个是包含大约 1000 万个条目的表的引用 ID。

我计划删除此表中超过一个月的所有数据,因为不再需要此数据。但问题是,随着大量插入的发生,如果我开始删除,表将被锁定,插入将被阻止。

我想知道我们是否可以根据月份对表进行分区。这样,我希望当我尝试删除所有超过 2 个月的数据时,这些数据应该在不同的分区中,并且插入应该发生在不同的分区中,并且删除锁不会阻止读锁定。

请告诉我这是否可能。我对使用DB相当陌生,所以如果我的想法有问题,请告诉我。

来自 MySQL 文档

对于 InnoDB 和 BDB 表,MySQL 仅在以下情况下使用表锁定 使用锁定表显式锁定表。对于这些存储引擎, 完全避免使用LOCK TABLES,因为InnoDB使用自动 行级锁定和 BDB 使用页级锁定来确保 事务隔离。

我不确定你是否有问题。您是否对此进行了测试并看到了锁定问题,或者您现在只是在理论上讨论它们?

MySQL从5.1版本开始具有分区功能。

您可以运行此查询来验证您的 MySQL 版本是否支持分区:

SHOW VARIABLES LIKE 'have_partitioning';

然后,您可以阅读手册以了解如何使用它:

http://dev.mysql.com/doc/refman/5.5/en/partitioning.html

相关内容

  • 没有找到相关文章

最新更新