Жизнь без транзакций (MyISAM)
Мой сайт работает на VDS-сервере. Я только что узнал, что мой сервер MySQL не поддерживает движок InnoDB, поэтому я не могу использовать транзакции базы данных в своем приложении.
Это заставляет меня думать, что некоторые люди могут никогда не использовать транзакции. Это тот случай? Если да, то как можно координировать связанные операции над различными таблицами в MyISAM?
Иначе, есть ли способ установить InnoDB на сервер MySQL, который работает на VDS?
Спасибо!
2 ответа
Если вам нужны транзакции, то вам нужны транзакции, и MyISAM не собирается сокращать горчицу.
Некоторые приложения не нуждаются в транзакциях. Например; приложение, которое никогда не запускает более одного связанного оператора SQL одновременно и не нуждается в откате нескольких операторов SQL. Другим примером является приложение, которое использует MySQL в качестве простого хранилища значений ключей. Есть много вариантов использования, которые не требуют поддержки транзакций на уровне базы данных.
Трудно ответить на вторую часть вашего вопроса, не зная более подробной информации о вашем VDS. Кто вы хостинг провайдер? У вас есть доступ к оболочке и разрешения для изменения my.cnf? Если нет, то вы, вероятно, не сможете включить InnoDB. Если вы это сделаете, то вот еще один ответ SO, который подробно описывает, как включить InnoDB в MySQL: Как включить INNODB в mysql
Часто вы можете включить механизм, установить компоненты InnoDB вручную или просто переустановить версию MySQL, которая по умолчанию включает этот механизм. MyISAM - это база данных сумасшедших штанов, тупо быстрая, но также ненадежная и склонная к полному разрушению, если ваша система не выключена должным образом.
Запуск критически важного приложения на MyISAM - крайне плохая идея. Там, где вам нужны таблицы MyISAM по соображениям производительности, они всегда должны быть одноразовыми, легко восстанавливаемыми из другого, более надежного источника данных.