Сведения о вопросе

ЧОВИД

01:55, 18th August, 2020

Теги

database   deadlock   glossary    

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

Просмотров: 731   Ответов: 14

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

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

  • oracle
  • postgresql



  Сведения об ответе

SSESION

11:18, 13th August, 2020

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

Следование должно помочь.

  1. Пользователь запускает транзакцию и обновления 1000 строк с некоторым значением в момент времени t1
  2. Пользователь B читает те же 1000 строк в момент времени T2.
  3. Пользователь A обновляет строку 543 значением Y (исходное значение X)
  4. Пользователь B достигает строки 543 и обнаруживает, что транзакция работает с момента времени T1.
  5. База данных возвращает неизмененную запись из журналов. Возвращаемое значение - это значение, которое было зафиксировано в момент времени меньше или равно T2.
  6. Если запись не удалось восстановить из журналов повтора, это означает, что база данных не настроена должным образом. Там должно быть больше места, выделенного для журналов.
  7. Таким образом достигается согласованность чтения. Возвращаемые результаты всегда одинаковы относительно времени начала транзакции. Таким образом, в рамках транзакции достигается согласованность чтения.

Я попытался объяснить в самых простых терминах possible...there-это много для мультиверсионности в базах данных.


  Сведения об ответе

lool

06:49, 26th August, 2020

Управление параллелизмом нескольких версий PostgreSQL

А также эта статья , в которой представлены диаграммы того, как MVCC работает при выдаче INSERT, UPDATE и DELETE заявлений.


  Сведения об ответе

ЯЯ__4

11:36, 24th August, 2020

Следующие имеют реализацию MVCC:

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

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

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

PostgreSQL

Firebird

Informix

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


  Сведения об ответе

repe

02:45, 8th August, 2020

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

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


  Сведения об ответе

lool

13:57, 14th August, 2020

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


  Сведения об ответе

DO__IT

01:56, 26th August, 2020

Firebird делает это, они называют это MGA (многопоколенная архитектура).

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

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


  Сведения об ответе

LAST

04:51, 18th August, 2020

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

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

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


  Сведения об ответе

Chhiki

07:46, 14th August, 2020

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

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

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


  Сведения об ответе

screen

16:25, 7th August, 2020

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

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

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


  Сведения об ответе

LAST

22:25, 26th August, 2020

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


  Сведения об ответе

JUST___

06:04, 19th August, 2020

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

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

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


  Сведения об ответе

qwerty101

10:00, 26th August, 2020

MySQL также использует MVCC по умолчанию, если вы используете таблицы InnoDB: http://dev.mysql.com/doc/refman/5.0/en/innodb-multi-versioning.html


  Сведения об ответе

darknet

11:45, 23rd August, 2020

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


  Сведения об ответе

VERSUION

10:19, 24th August, 2020

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

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться