LinuxShareКто владеет информацией - владеет всем! Документация по Linux! |
||
|
MySQL.RU .:. Одобрено лучшими российскими программистамиСправочное руководство по MySQLE.4 Методы блокировкиE.4 Методы блокировки
В настоящее время MySQL поддерживает только табличную блокировку для
таблиц типов ISAM/MyISAM и HEAP, страничную блокировку для таблиц BDB и
строковую блокировку для таблиц InnoDB (see section 5.3.1 Как MySQL блокирует таблицы). Для таблиц MyISAM можно произвольным образом сочетать команды
Начиная с версии 3.23.33 имеется возможность анализировать конфликты и
конкуренцию блокировок таблиц в системе. Это делается путем проверки
переменных Если вы хотите использовать тип таблиц с блокировкой уровня записи, то прежде, чем принимать такое решение, следует посмотреть, что делает данное приложение и какая принята модель выборки/обновления данных. Аргументы в пользу строковой блокировки:
Аргументы против строковой блокировки
Блокировки на уровне таблиц лучше, чем блокировки страничного/строкового уровня в следующих случаях:
Другие возможности, кроме строчного/страничного уровня блокирования: Управление версиями (Versioning), подобно тому, как это делается в MySQL для параллельных вставок. При этом один из пользователей может выполнять операцию записи в то же время, когда несколько пользователей производят чтение. Это означает, что данная база данных/таблица поддерживает различные представления для данных в зависимости от того, когда произошло обращение к ним. Существуют и другие названия этой возможности - перемещение по времени (time travel), метод копирования в момент записи (copy on write) или метод копирования по запросу (copy on demand). Копирование по запросу во многих случаях значительно лучше, чем страничный или строковый уровень блокировки; однако в наиболее неблагоприятном варианте этот метод требует намного больше памяти, чем при использовании обычных блокировок. Вместо использования блокировок строкового уровня можно применять блокировки уровня приложения (подобно get_lock/release_lock в MySQL). Конечно, такие блокировки годятся только для корректно работающих приложений. Если речь идет о конкретном приложении, то обычно можно с уверенностью сказать, какой тип блокировки лучше всего в нем использовать, однако для общего случая такой вывод сделать практически невозможно: все зависит от конкретного приложения, причем для различных частей приложения могут требоваться различные типы блокировок. Ниже приводится несколько советов по блокировкам в MySQL: В веб-приложениях обычно большинство скриптов выполняют большое количество выборок, очень мало удалений, обновления главным образом по ключам и вставки в некоторые специальные таблицы. Базовая установка MySQL очень хорошо настроена для этого. Одновременный доступ пользователей не представляет проблем, если не происходит смешивания обновлений и выборок, требующих проверки нескольких строк в одной и той же таблице.
В случае сочетания вставок и удалений в одной и той же таблице очень
полезно применять
Для повышения скорости можно также использовать Иногда проблемы со скоростью при блокировках таблиц в MySQL удается решить преобразованием ряда таблиц в таблицы типа InnoDB или BDB. See section 7.5 Таблицы InnoDB. See section 7.6 Таблицы BDB или Berkeley_DB. Большое количество различных аспектов настройки приложения рассмотрено в разделе данного руководства, посвященном оптимизации (see section 5.2.12 Другие советы по оптимизации). |
|