Подтвердить что ты не робот

База данных: что такое Multiversion Concurrency Control (MVCC) и кто его поддерживает?

Недавно Джефф опубликовал в отношении своей проблемы с привязками к базе данных, связанным с чтением. Многопоточность Concurrency Контроль (MVCC) утверждает, что разрешает эту проблему. Что это такое и какие базы данных поддерживают его?

обновлено: они поддерживают его (какие другие?)

  • оракул
  • postgresql
4b9b3361

Ответ 1

Oracle имеет отличную систему управления несколькими версиями на месте с очень долгого (по крайней мере, с oracle 8.0)

Следующее должно помочь.

  • Пользователь A запускает транзакцию и обновляет 1000 строк с некоторым значением At Time T1
  • Пользователь B считывает те же 1000 строк в момент времени T2.
  • Пользователь A обновляет строку 543 со значением Y (исходное значение X)
  • Пользователь B достигает строки 543 и обнаруживает, что транзакция работает со времен T1.
  • База данных возвращает немодифицированную запись из журналов. Возвращаемое значение - это значение, которое было зафиксировано в момент времени, меньший или равный T2.
  • Если запись не может быть восстановлена ​​из журналов повтора, это означает, что база данных не настроена соответствующим образом. Для журналов должно быть больше места.
  • Таким образом достигается согласованность чтения. Возвращенные результаты всегда совпадают с временем начала транзакции. Таким образом, внутри транзакции достигается согласованность чтения.

Я попытался объяснить в самых простых условиях, возможно... много многообразий в базах данных.

Ответ 3

Ниже приведена реализация MVCC:

SQL Server 2005 (не по умолчанию, SET READ_COMMITTED_SNAPSHOT ON)

Oracle (начиная с версии 8)

MySQL 5 (только с таблицами InnoDB)

PostgreSQL

Жар

Informix

Я уверен, что Sybase и IBM DB2 Mainframe/LUW не имеют реализации MVCC

Ответ 4

Firebird делает это, они называют это MGA (Multi Generational Architecture).

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

Oracle перезаписывает сами данные и использует сегменты отката/отмены табличных пространств для других сеансов и откаты.

Ответ 5

XtremeData​​strong > dbX поддерживает MVCC.

Кроме того, dbX может использовать примитивы SQL, реализованные в аппаратном обеспечении FPGA.

Ответ 6

SAP HANA также использует MVCC. SAP HANA - это полная вычислительная система с памятью, поэтому затраты MVCC для выбора очень низкие...:)

Ответ 7

Вот ссылка на страницу документа PostgreSQL в MVCC. Цитата выбора (выделение мое):

Основным преимуществом использования MVC-модели управления concurrency, а не блокировки, является то, что в блокировании MVCC, полученные для запросов (чтения), не конфликтуют с блокировками, полученными для записи данных, и поэтому чтение никогда не блокирует запись и запись никогда не блокирует чтение.

Вот почему Джефф был так смущен своими тупиками. Чтение никогда не должно их вызывать.

Ответ 8

SQL Server 2005 и предлагать MVCC в качестве опции; однако это не значение по умолчанию. MS называет это изоляцией моментального снимка, если память используется.

Ответ 9

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

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

Это отличное решение для систем, требующих 100% аудита для всех изменений.

Ответ 11

McObject объявила в 11/09, что добавила дополнительный менеджер транзакций MVCC в свою встроенную базу данных eXtremeDB:

http://www.mcobject.com/november9/2009

eXtremeDB, первоначально разработанный как система баз данных в памяти (IMDS), теперь доступен в версиях с гибридным (встроенным/на диске) хранилищем, высокой доступностью, поддержкой 64-разрядной версии и т.д.

Ответ 12

Там хорошее объяснение MVCC - с диаграммами - и некоторые показатели производительности для eXtremeDB в этой статье, написанной соучредителем и генеральным директором McObject в журнале RTC:

http://www.rtcmagazine.com/articles/view/101612

Очевидно, что MVCC становится все более выгодным, поскольку приложение масштабируется для включения многих задач, выполняемых на нескольких ядрах ЦП.

Ответ 13

В DB2 версии 9.7 имеется лицензионная версия postgress plus. Это означает, что эта функция (в правильном режиме) поддерживает эту функцию.

Ответ 14

Berkeley DB также поддерживает MVCC.

И когда BDB-хранилище используется в MySQL, MySQL также поддерживает MVCC.

Berkeley DB - очень мощная, настраиваемая СУБД, совместимая с ACID. Он поддерживает несколько различных методов индексирования, репликации master-slave, может использоваться как хранилище с чистым хранилищем ключей с его собственным динамическим API или запрошенным SQL при необходимости. Стоит взглянуть на.

Другая документально ориентированная СУБД, охватывающая MVCC, будет CouchDB. MVCC здесь также является большим плюсом для встроенной одноранговой репликации.