将分区用于大型MySQL表

时间:2010-03-27 12:16:36

标签: mysql database-partitioning

我在MacBook Pro上尝试在MySQL上实现505,000,000行表的更新: 根据给出的建议,我已经分区了我的表,tr:

i UNSIGNED INT NOT NULL,
j UNSIGNED INT NOT NULL,
A FLOAT(12,8) NOT NULL,
nu BIGINT NOT NULL,
KEY (nu), key (A)

范围为nu。 nu应该是一个实数,但因为我只有6-d.p。准确度和nu的最大值是30000.我乘以10 ^ 8使它成为BIGINT - 我收集一个不能使用FLOAT或DOUBLE值来PARTITION一个MySQL表。无论如何,我有15个分区(p0:nu <25,000,000,000,p1:nu <50,000,000,000等)。 我认为这应该加速典型的SELECT:

SELECT * FROM tr WHERE nu>95000000000 AND nu<100000000000 AND A.>1.

到仅包含相关分区中的数据(<30秒)的表上的相同查询的顺序。但是,如果查询是针对跨越两个(连续)分区的行,则需要30分钟+来返回分区内查询的行,并加倍。 我意识到我可以只有15个不同的表,并分别查询它们,但有没有办法用分区“自动”执行此操作?有没有人有任何建议?

0 个答案:

没有答案