Могу ли я применить раздел MySQL на этой таблице? - PullRequest
2 голосов
/ 31 октября 2010

У меня есть эта таблица

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 ГиБ

  • мало что знаю о разделе MySQL: (

спасибо

1 Ответ

0 голосов
/ 31 октября 2010

от макушки головы (не зная много о вашем приложении), я бы предположил, что ваша высшая сущность - это «форум», я бы сделал осколок за «форум».

Помните sharding isnэто не просто

Редактировать 1

Во-первых: объем данных 2,5 ГБ невелик, мы работаем с таблицами гораздо больших размеров.

советы:

  • проверка ваших индексов
  • перемещение формы MyISAM в InnoDB -> это сделает запросы немного медленнее, но не блокирует их.
  • перед тем, как шард попытается денормализовать
...