Я блокирую таблицу при выполнении SELECT на столе? - PullRequest
0 голосов
/ 21 октября 2011

Это вопрос из двух частей. Когда я выполняю SELECT для таблицы, блокирую ли я эту таблицу от любого использования во время работы SELECT?

Если это так, как можно не блокировать таблицу при выполнении оператора SELECT? Я использую MySQL 4.1.20 MyISAM.

обновление здесь есть похожий вопрос Любой способ выбора без блокировки в MySQL? , но ответ не работает с MyISAM

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

Да, для таблиц MyISAM функция select блокирует таблицу для вставок / обновлений.Однако несколько вариантов выбора могут выполняться одновременно (т.е. применяется блокировка чтения).Если в середине таблицы нет свободного места, вставки добавят данные в конец (внутреннего) хранилища, и эти вставки можно будет выполнять одновременно с операциями выбора.

Дополнительная информация здесь .Обратите внимание, что MyISAM и InnoDB работают в этом отношении совершенно по-разному.

0 голосов
/ 21 октября 2011

Подумайте об этом: меняете ли вы какие-либо ячейки таблицы при выполнении SELECT? Если нет, нет необходимости блокировать таблицу, а MySQL нет. Блокировка таблицы должна происходить во время ОБНОВЛЕНИЯ, а не во время ВЫБОР.

0 голосов
/ 21 октября 2011

Есть блокировка таблицы и строки. Я рекомендую вам прочитать о ядрах базы данных MyISAM с блокировкой таблиц и Блокировка строк InnoDB

...