我可以在这个表上应用mysql分区吗?

我可以在这个表上应用mysql分区吗?,mysql,database-partitioning,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 u

我有这张桌子

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 ;
如何在它上应用分区?我可以使用的最佳分区类型是什么

疑问是

选择id、用户id、来自帖子的消息,其中thread\u id=%

加入一些

注:表为2.5 GiB

  • 不太了解MySQL分区:(
谢谢你

在我的脑海中(我对你的应用不太了解),我假设你的最高实体是“论坛”,我会对每个“论坛”进行切分

记得吗

编辑1 第一:2.5gb的数据量不多,我们使用的表比这大得多

小贴士:

  • 检查你的索引
  • 从MyISAM移动到InnoDB->this 这将使查询更加复杂 缓慢但不阻塞
  • 在shard尝试之前
从我的角度(不太了解您的应用程序),我会假设您的最高实体是“论坛”,我会对每个“论坛”进行切分

记得吗

编辑1 第一:2.5gb的数据量不多,我们使用的表比这大得多

小贴士:

  • 检查你的索引
  • 从MyISAM移动到InnoDB->this 这将使查询更加复杂 缓慢但不阻塞
  • 在shard尝试之前

分区方式?您使用的是mysql 5.5吗?您想实现自己的切分模式吗?我们从5.0升级到5.1,5.1确实有分区,但我们不知道如何应用它,谢谢。在这种情况下,我会尝试用该分区检测最高的实体和分区。您使用的是mysql 5.5吗?您想实现自己的分区吗切分模式?我们从5.0升级到5.1,5.1确实有分区,但我们不知道如何应用它,感谢在这种情况下,我会尝试检测最高的实体和分区,我们确实将表从MyISAM转换为InnoDB,但过了一段时间,我们没有遇到问题,损坏了表或文件中的信息。myi&frm(重新启动mysql服务器后),我们无法以这种方式修复它。我们必须恢复备份并再次返回MyISAMback到InnoDB:性能变化将是巨大的。有许多技术可以在不停机的情况下使用一个大表来更改模式变化。我们确实将表从MyISAM转换到InnoDB,但过了一段时间后,我们运行时没有遇到问题,损坏的表或信息被破坏n files.myi&frm(在重新启动mysql服务器之后),我们无法以这种方式修复它,我们必须恢复备份并再次返回MyISAMback到InnoDB:性能变化将是巨大的。有许多技术可以在没有停机时间的情况下使用一个大表来改变模式变化。