我有一张桌子,我们每天插入大约2000万个条目(盲目插入,没有任何限制)。我们有两个外键,其中一个是一个带有大约1000万个条目的表的引用ID。
我打算删除此表中超过一个月的所有数据,因为不再需要此数据。但问题是,如果发生大量插入,如果我开始删除,表将被锁定并且插入将被阻止。
我想知道我们是否可以根据月份在表格上使用分区。这样,我希望当我尝试删除超过2个月的所有数据时,这些数据应该在不同的分区中,并且插入应该在不同的分区中发生,并且删除锁定不会阻止读取锁定。 / p>
请告诉我这是否可行。我对使用DB很新,所以如果我的想法有问题,请告诉我。
答案 0 :(得分:1)
对于 InnoDB 和BDB表,MySQL仅在您使用表锁定时使用 使用LOCK TABLES显式锁定表。对于这些存储引擎, 完全避免使用LOCK TABLES,因为InnoDB使用自动 行级锁定和BDB使用页面级锁定来确保 交易隔离。
我不确定你是否有问题。你有没有对此进行测试并看到过锁定问题,或者你现在只是在理论化它们?
答案 1 :(得分:0)
MySQL从版本5.1开始进行分区。
您可以运行此查询以验证您的MySQL版本是否支持分区:
SHOW VARIABLES LIKE 'have_partitioning';
然后您可以阅读手册以了解如何使用它: