Оптимизация для тысяч схем в MySQL - PullRequest
0 голосов
/ 24 декабря 2010

У меня есть приложение, которое хранит изолированные (и защищенные) пользовательские данные в отдельных схемах MySQL (или базах данных) с идентичной структурой таблиц (3 таблицы InnoDB), по одной для каждой учетной записи. Мы используем Amazon RDS для хранения данных, и в настоящее время существует около 30 тыс. Схем на экземпляр RDS. Мой вопрос о том, как оптимизировать настройки MySQL (или с точки зрения RDS, настройки группы параметров) для большого количества схем.

Я знаю, что существует рефлекс, осуждающий практику наличия тысяч идентичных схем, предлагая вместо этого единую схему с чем-то вроде индексированного столбца "account_id". Обычно приводимый аргумент состоит в том, что штраф за хождение по осколку или изменение схемы перевешивает выгоды. В нашем случае нам необходимо хранить данные изолированными, и между различными учетными записями никогда не будет взаимодействия.

Какими способами можно добиться максимальной производительности в такой ситуации?

1 Ответ

0 голосов
/ 24 декабря 2010

Предупреждение заранее: я понятия не имею о Amazon RDS, поэтому этот ответ может быть абсолютной чепухой. Я отвечаю с общей точки зрения MySQL.

Что ж, ваша установка не совсем оптимальна, но есть несколько способов ее настройки. Вы хотите запретить открытие / закрытие таблиц слишком часто, поэтому вы хотите, чтобы много таблиц открывалось одновременно.

Для этого:

  • Убедитесь, что ваша ОС позволяет MySQL иметь много открытых файлов
  • Установите table_cache правильно

Вы можете найти еще несколько ссылок в руководстве MySQL .

То, насколько высоко вы на самом деле хотите этот предел, зависит от ограничений ваших ресурсов. Каждая открытая таблица занимает память - я не уверен, сколько. Сценарий, подобный настраивающему учебнику или mysqltuner.pl , может помочь вам предотвратить чрезмерную загрузку памяти.

...