Почему блокировка уровня таблицы лучше, чем блокировка уровня строки для больших таблиц?

StackOverflow https://stackoverflow.com/questions/3462643

  •  27-09-2019
  •  | 
  •  

Вопрос

Согласно Mysql Manual.:

Для больших таблиц столовая блокировка часто лучше, чем блокировка строк,

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

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

Решение

из (предварительно редактировать) связь

Медленнее, чем уровень страницы или блокировки уровня таблицы при использовании в большой части таблицы, потому что вы должны приобрести еще много замков

Используйте блокировку уровня строки, если у вас только два или два ряда. Если ваш код попадает в многие или неизвестные строки, придерживайтесь блокировки таблицы.

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

  • Блокировка строки требуется больше памяти, чем столовая или блокировка уровня страницы.

  • Должны приобрести еще много замков с блокировкой ряд, которая раскаясь больше ресурсов

От http://www.devshed.com/c/a/mysql/mysql-optimization-part--/

  • Преимущества блокировки уровня строки:

    • Меньше конфликтов блокировки при доступе к разным строкам во многих потоках.
    • Меньше изменений в откатах.
    • Позволяет заблокировать один ряд долгое время.
  • Недостатки блокировки уровня строки:

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

    • Большинство заявлений для таблицы читаются.
    • Прочитайте и обновляют строгие ключи, где вы обновляете или удаляете строку, которую можно получить с одним ключом.UPDATE tbl_name SET column=value WHERE unique_key_col=key_value; DELETE FROM tbl_name WHERE unique_key_col=key_value;
    • Выберите в сочетании с одновременными операторами вставки и очень мало операторов обновления и удаления.
    • Многие сканирование или группу по операциям на всей таблице без каких-либо писателей.

А. ряд Блокировка уровня таблицы лучше для большого стола, где происходит основные модификации данных. Это позволяет системе бороться с одним замком на столе, а не иметь дело с блокировками Gazillion (по одной для каждой строки).

RDBMS автоматически обогащает уровни блокировки внутренне.

Столовая блокировка позволяет много сеансов прочитать из таблицы одновременно

Для достижения очень высокой скорости блокировки MySQL использует столовую блокировку

«Я бы предположил, что блокировка уровня строки лучше, потому что« вы блокируете меньше данных].

Первый «лучше» плохо определен на этой странице. Похоже, что лучше означает «быстрее».

Блокировка уровня строки не может (в целом) быть быстрее из-за усовершенствования для блокировков. Блокировка каждой строки большого набора результатов означает очень реальную возможность конфликта с другим большим набором набора результатов и отката.

В целом, если вам нужно заблокировать много данных, то 1 замок на большой таблице дешевле, чем целый куча строки или замков страницы

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