Sql: Побочные эффекты создания / удаления баз данных и таблиц на лету - PullRequest
0 голосов
/ 23 февраля 2011

Мне нужно смоделировать sql, создав обертку поверх mysql (требование клиента: P), и, следовательно, мое приложение требует создавать / удалять таблицы (и, возможно, базы данных) во время выполнения.

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

Желательно ли продолжить создание / удаление баз данных и с какими возможными сложностями я могу столкнуться?

1 Ответ

1 голос
/ 23 февраля 2011

Это проблема только при двух сценариях

СЦЕНАРИЙ # 1

Для таблиц InnoDB буферный пул innodb должен быть оптимально настроен на сумму всех пакетов данных и страниц индекса, которые составляют таблицы InnoDB.

Еще хуже может быть то, что innodb_file_per_table отключен (по умолчанию)

Это создаст файл с именем / var / lib / mysql / ibdata1, который может расти и никогда не уменьшаться. Это верно независимо от того, сколько раз вы удаляете и создаете базы данных.

Если забыть внести необходимые изменения в /etc/my.cnf, это также может привести к недостаточному использованию буферного пула innodb до тех пор, пока данные не будут заполнены.

Изменения в InnoDB просты.

Выполнить этот запрос

SELECT CONCAT (KeyBuf, 'M') BufferPoolSetting FROM (ВЫБЕРИТЕ ПОТОЛОЧЬ (SumInnoDB / POWER (1024,2)) KeyBuf FROM (ВЫБРАТЬ СУММУ (data_length + index_length) SumInnoDB FROM information_schema.tables WHERE engine '' table_ = Inno NOT IN ('information_schema', 'mysql')) A) AA;

Вывод этого запроса должен использоваться как innodb_buffer_pool_size в /etc/my.cnf непосредственно перед тем, как вы удалите все базы данных и создадите новые.

СЦЕНАРИЙ № 2

Для таблиц MyISAM буфер ключа должен быть оптимально настроен на сумму всех файлов .MYI.

Если забыть внести необходимые изменения в /etc/my.cnf, это также может привести к недостаточному использованию кэша ключей MyISAM (буфера ключей) до полного заполнения данных.

Изменения, внесенные для MyISAM, просты.

Запустить этот запрос

SELECT CONCAT (KeyBuf, 'M') KeyBufferSetting FROM (ВЫБЕРИТЕ ПОТОЛОК (SumIndexes / POWER (1024,2)) KeyBuf FROM (SELECT SUM (index_length) SumIndexes FROM information_schema.tables WHERE engine = 'MyISAM NOT IN и table_sc_ ('information_schema', 'mysql')) A) AA;

Вывод этого запроса должен использоваться как key_buffer_size в /etc/my.cnf непосредственно перед удалением всех баз данных и созданием новых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...