背景:MySQL 5.7,InnoDB引擎
我们有一个巨大的事务日志表(每天600万个新行),我们希望将这个巨大的表分成多个mysql实例和表(所以我们有table_001,table_002等)。用户经常查询他们最近的行,这意味着最近的行是热的,而旧行是冷的。
我想知道在这种情况下每个分片表(table_001,table_002等)中是否还需要mysql分区。我的意见不是。如果我们已经将数据分片到许多子表中,为什么我们需要使用分区的另一种子表? (分区内部实际上是单独的表吗?)
答案 0 :(得分:0)
有四种方法可以拆分表:
table_001
,依此类推-一次又一次地在此论坛上建议这样做。总是把它当作一个坏主意。您要删除“旧”数据吗?如果是这样,PARTITION BY RANGE(TO_DAYS(..))
可使清除效率更高。但这并不一定提高SELECT
的效果;让我们看看您的SELECTs
。
您是否会像数据仓库的“报告”那样“汇总”数据?如果是这样,我们可以进一步讨论。
re:插入率
使用InnoDB,单个大表实际上很容易INSERT
成为多个小表或多个分区。 200不是很大的插入率。
INSERT ... VALUES (...), (...), ...;
?还是使用LOAD DATA
?这些都可能维持在1000 /秒以上。INDEXes
吗?它们在一定程度上给高插入率带来了负担。让我们看看SHOW CREATE TABLE
,以便我们进一步讨论。INSERTs
吗?