2010-09-20 67 views
1

我在数据库中有一个巨大的表,我想将它分成几个物理部分,维护数据库方案。MySQL:大表拆分

例如,表名是TableName并具有2 000 000行。

我想该表分为四个部分,但我想在与表相同的方式工作,所以

select [Column List] from TableName where [Filter] 

insert into TableName ([Column List]) values([Values]) 

update TableName [Updates] where [Filter] 

delete from TableName where [filter] 

会像以前那样拆分表后,以同样的方式工作。基本上我希望我的数据库在不同的线程中处理我的查询。我怎样才能做到这一点?

在此先感谢。

+1

正如Hammerite所提到的那样,分区会是更好的解决方案。然而,200 000并不是那么多,并且具有良好的索引和精心设计的查询应该不会工作缓慢。 – Mchl 2010-09-20 12:50:19

+0

问题是几个选择是由一个自动项目完成的,该项目在多个服务器上的每个服务器上的五个线程上运行,并且该表也有很多列。有时需要很长时间才能在数据库中执行一些简单的命令。因此,我们不是在讨论运行选择查询,而是在每秒或甚至更长时间运行数十个查询,将数据复制到网站上显示的slave duplicae。因此,在我们的情况下,分区是唯一的选择。该表被索引。 – 2010-09-20 13:05:33

回答

5

也许你应该看看partitioning

+0

很好的参考资料,非常感谢。 – 2010-09-20 12:55:50

1

如果您正在查看将数据复制到单独的从站/副本;考虑通过二进制日志记录来实现,因此副本将读取二进制日志来执行复制,而不是手动或以编程方式执行。