Является ли обычной практикой смешивать таблицы InnoDB и MyISAM на одном сервере?

dba.stackexchange https://dba.stackexchange.com/questions/385

Вопрос

У меня есть единственная база данных объемом около 4,5 ГБ, работающая на сервере с 8 ГБ оперативной памяти.Подавляющее большинство таблиц - MyISAM (около 4,3 ГБ), но я скоро собираюсь заняться преобразованием некоторые из них переведены в InnoDB.(Это будет медленный процесс, сначала он будет сосредоточен на наиболее трудоемких для записи таблицах).

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

Это было полезно?

Решение

Там ничего нет неправильно при использовании нескольких механизмов хранения данных на одном физическом компьютере, при условии, что вы понимаете плюсы и минусы каждого из них.Существуют соображения производительности, функциональные ограничения и варианты использования для всех типов хранилищ плагинов.

Например, если у вас есть небольшая таблица, в которую выполняется 90% записей, вы можете выбрать MyISAM.Если данные могут быть легко восстановлены, и это небольшая таблица, скажем, для постановки в очередь, вы можете выбрать Память.Если у вас есть таблица, которая читается на 90%, и данные должны быть там, когда вы их ищете, то вы, вероятно, выбрали бы механизм хранения, который поддерживает транзакции и настраиваемую атомарность, например InnoDB.Если вы хотите получить доступ через файловую систему без повреждающих данных, вы можете выбрать CSV.

Тем не менее, вы можете безопасно использовать несколько подсистем хранения данных в рамках одной схемы, а также физический хост.

Однако позвольте мне отметить, что ваши буферы играют определенную роль во всей этой неразберихе.Если вы используете как MyISAM, так и InnoDB, вам нужно быть осторожным, чтобы ваш key_buffer и innodb_buffer_pool не конкурировали.Это потребует тщательного планирования с вашей стороны, но это то, что мы делаем.

Другие советы

Я не могу сказать вам, является ли это обычной практикой. Я могу сказать о своем собственном опыте.

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

Когда мне нужны специальные функции, только доступные на Innodb, я иду на это.

Когда таблица в основном только для чтения, я выбираю архивный двигатель, прежде чем мигать.

Зная, что машинный сервер имеет достаточно памяти, все мои временные данные хранятся в таблицах кучи.

В прошлом я видел несколько замедлений, смешивающих Myisam и Innodb, но это не конкретная проблема MySQL. Это проблема дизайна, не кажущаяся, когда вы используете только один двигатель. На самом деле использование неправильного двигателя вызывает больше замедления, не имеет значения, является ли это просто Myisam, просто Innodb или смесью обоих. Трудно определить формулу, чтобы узнать, когда произойдет замедление. Просто настоящие тесты могут сказать это вам.

Конечно, вы не могли бы сохранить целостность и последовательность, смешивая Innodb и Myisam по уникальному запросу.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top