我们有一个名为posts_content的mysql表。Mysql'分区'vs将数据分割成不同的表
的结构如下:
CREATE TABLE IF NOT EXISTS `posts_content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`post_id` int(11) NOT NULL,
`forum_id` int(11) NOT NULL,
`content` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=79850 ;
的问题是,该表越来越漂亮巨大。许多千兆字节的数据(我们有一个爬行引擎)。
我们每天都会在表格中插入数据,但我们很少检索数据。现在,桌子变得非常大,难以处理桌子。
我们讨论了两种可能性
- 使用MySQL的分区功能使用forum_id(大约有50 forum_ids所以就约50分区的分区表。需要注意的是,即使做出这样最终会成长每个分区再次数据的多千兆字节甚至最终需要自己的驱动
- 创建每个forum_id单独的表和分裂这样的数据。
我希望我已经解释清楚的问题。我需要知道的是,从长远来看,上述两种方案中的哪一种会是更好的解决方案。什么是adv。 dis adv。这两种情况。
感谢你
我得到了问题,但你提出的解决方案,看起来与我一样,除了在一个MySQL提供的解决方案和情况2似乎你会建立自己的。我说得对吗? –
Ozair Kafray - 有些差异,有些我知道。例如,当您使用分区时,您以与以前相同的方式查询表,但对于最终用户而言,它仍然是一个表,尽管它分为许多文件。作为另一种解决方案,如果您需要查询数据,您需要首先将所有表放回到连接或临时表中或类似的东西中。有了你永远不知道的任何功能...... Darhazer发布的链接很有趣 –