Знание резюме интервью базы данных

Модуль блокировки базы данных

Что можно сказать о разнице между MyISAM и InnoDB блокировки надлежит?

  • MyISAM является использование по умолчанию блокировки на уровне таблицы, блокировки на уровне строк не поддерживается ( во время работы базы данных только блокировки строк работают )
  • ЬшоВВ по умолчанию с блокировкой на уровне строк, а также поддерживает блокировку на уровне таблицы ( в операции базы данных будет блокировать всю таблицу )
  • MyISAM не поддерживает транзакции
  • InnoDB поддерживает транзакции

Используется, если не принимать операции базы данных индекса являются блокировки уровня таблицы

MyISAM

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

Применяемая сцена

  • Количество строк, часто выполняет полный анализ таблицы заявления, MyISAM, есть переменный для хранения всей таблицы
  • Дополнения и делеция к частоте данных не является высокими (как добавления и удаление будут включать в себя таблицу операции блокировки), очень часто запрос
  • Нет транзакций сцены

InnoDB

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

Применяемая сцена

  • CRUD данных довольно часто
  • Высокие требования к надежности, требующая служба поддержки

Блокировка базы данных классификации

Читайте замок

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

Еще во время операции выбора плюс для обновления добавит эксклюзивную блокировку плюс замок в общем режиме добавит общую блокировку

Написать замок

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

Добавить чтения / блокировки записи

Блокировка таблиц TABLE_NAME чтения / записи;

Удалить блокировки таблицы разблокировки

замок на уровне страницы

Вставленный между столом и на уровне строк замков, замок расположен рядом с рабочими данными в данном

Намерение замки

Когда сделка Блокированной таблица строки, транзакция B, если вы хотите подать заявление на блокировку записи на всю таблице, это происходит потому, что строки данных транзакции добавленной Блокировки строки, если приложение успешно будет пусть B и А происходит конфликт. Поэтому, когда транзакция B блокировки необходимо определить таблицу базы данных таблицы распределения токов не прикладывается через линию или другую блокировку таблицы транзакций, то она должна быть определена следующим образом:

1: Определить, является ли таблица используется другими транзакциями с таблицей блокировок таблиц

2: Есть ли линия была заблокирована в замке суда строки таблицы.

В этом случае должен быть определен для всей таблицы записываются на шаге 2, эффективность относительно низка. Тогда есть намерение зафиксировать в присутствии намерений замков, любой транзакции или строк на столе до того, как замок должен сначала получить о намерениях блокировки, с целью блокировки, выше процесс проверки становится:

не 1: Без изменений

2: получить пристальный таблицу блокировок

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

Пессимистический замок

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

Оптимистическая блокировка

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

ACID транзакций

Атомарность (Атомарность): относится к транзакции является неделимой единицей рабочих операций в транзакции либо происходит или не происходит

Последовательность (Последовательность): целостность данных до и после операции должна быть последовательными, это можно сравнить с законом сохранения энергии

Выделение (Выделение): относится к множеству пользователей одновременный доступ к базе данных, база данных для каждой операции пользователя, открытой операции не нарушается другими транзакциями, для изоляции между множеством параллельных транзакций

Стойкие (ресурсное): означает , что если сделка совершается, он изменил данные в базе данных является постоянным, то даже если сбой базы данных не должны влиять на них

вопросы Одновременный доступа под уровень изоляции транзакций и на всех уровнях

Посмотреть разговор уровень изоляции транзакцииselect @@tx_isolation

Установка уровня изоляции сеансаset session transaction isolation level read uncommitted

Чем выше уровня изоляции транзакций, тем выше безопасности, тем более серьезные сериализованные выполнения, уменьшить базу данных параллелизма. Oracle по умолчанию READ-COMMITTED, MySQL по умолчанию REPEATABLE-READ

Одновременные проблемы доступа, вызванные сделки и как избежать

1. Потери обновления -MySQL по всем аспектам уровня изоляции транзакций базы данных снова можно избежать

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

2. Грязные читать далее -Распознать-COMMITTED уровень изоляции транзакций, чтобы избежать

Транзакция читает данные обновления в других незавершенных транзакций

3. Non-повторяемые читать далее -REPEATABLE-READ уровень изоляции транзакций можно избежать

Множественные операции чтения для возврата результатов несогласованности

4. фантомного чтения уровень изоляции транзакций можно избежать -SERIALIZALE

Множество чтения строки транзакции соответствует условию поиска, транзакция B изменены путем делеции или вставки в результате множества А сделки

Уровень изоляции InnoDB Многократное чтение, как избежать фантом чтения

Внешний вид: снимок чтения (без блокировки чтения) - псевдо MVCC

Текущее Reading

Плюс замок CRUD заявление: выберите ... блокировка в общем режиме, выберите ... для обновления, обновление, удаление, вставка

Снимок чтения (уровень изоляции в SERIALIZALE она может быть установлена)

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

Внутренний: следующий ключ (замок блокировки линии + пробел)

Первичный индекс ключа или уникальный индекс будет блокировать его с Gap

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

рекомендация

отwww.cnblogs.com/sasworld/p/11517707.html
рекомендация