我可以在这张桌子上应用mysql分区吗?

时间:2010-10-31 16:45:04

标签: mysql database-partitioning

我有这张桌子

CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `thread_id` int(10) unsigned NOT NULL,
  `forum_id` tinyint(5) unsigned NOT NULL,
  `cat_id` tinyint(3) unsigned NOT NULL,
  `message` mediumtext collate utf8_unicode_ci NOT NULL,
  `userid` int(10) unsigned NOT NULL,
  `date` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `thread_id` (`thread_id`),
  KEY `userid` (`userid`),
  KEY `date` (`date`),
  KEY `forum_id` (`forum_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3273548 ;

我如何在其上应用分区以及我可以使用的最佳分区类型是什么?

查询

SELECT id,user_id,message FROM posts WHERE thread_id = %

有一些联接

PS:表格为2.5 GiB

  • 对MySQL分区不太了解:(

谢谢

1 个答案:

答案 0 :(得分:0)

从我的头顶(不太了解你的应用程序)我会假设你的最高实体是它的“论坛”我会按照“论坛”进行分片。

记住sharding isn't easy

编辑1

首先:2.5gb的数据量并不多,我们使用的表格远比那些大。

提示:

  • 检查索引
  • 从MyISAM移动到InnoDB - >这个 将使查询更多一点 缓慢但不阻塞。
  • 在分享之前
  • 尝试denormalize