Влияет ли размер текстового поля в таблице MySQL InnoDB на производительность, когда поле не используется в запросе - PullRequest
1 голос
/ 21 октября 2011

У меня есть таблица InnoDB с 500 000 строк, которая растет, и я пытаюсь улучшить производительность отдельных запросов.

В настоящее время размер таблицы составляет около 2 ГБ, большая ее часть происходит из текстового поля, в котором хранится довольно много XML-данных. Эти данные XML не читаются часто, и большинство запросов не выбирают их.

Есть ли вероятность, что перемещение этих данных в отдельную таблицу ускорит запросы, позволяя одновременно удерживать больше строк в ограниченном объеме памяти серверов?

1 Ответ

2 голосов
/ 21 октября 2011

Если таблица InnoDB и вы не указываете текстовое поле в SELECT, вы должны быть в порядке. Однако вы должны убедиться, что Первичный ключ как можно меньше (, он находится в gen_clust_index ). Имейте в виду, что InnoDB выполняет поиск кластеризованного индекса при каждом запросе, независимо от неиндексированных поисков, индексированных поисков или поиска по первичному ключу .

Несмотря на это, тот факт, что вы задали этот вопрос, показывает, что нужно рассмотреть как раз обратное: будут некоторые запросы, содержащие текстовые поля в наборе результатов.

Я бы удостоверился в следующем: Пакеты MySQL, файлы журналов InnoDB и буфер журналов InnoDB имеют правильный размер . и зачем беспокоиться об этих настройках? Ряды данных должны проходить через эти структуры. Убедитесь, что max_allowed_packet достаточно большой, чтобы вместить самое большое текстовое поле в базе данных как минимум 10 раз. То же самое касается файлов журналов InnoDB и буфера журналов InnoDB .

...