TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
Айти-Пингвин | Дата инженер

29 Sep 2025, 09:17

Open in Telegram Share Report

Изоляция

На этой недели добиваем серию постов про A C I D

🔤Isolation (изоляция) гарантирует, что одновременно выполняемые транзакции не будут мешать промежуточным состояниям друг друга.

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

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

Аномалии параллелизма

Чтобы понять, как работает изоляция, полезно рассмотреть, что может пойти не так без надлежащей изоляции. К распространённым аномалиям параллелизма относятся:

1. Dirty Read (грязное чтение)

• Транзакция A считывает данные, которые транзакция B изменила, но еще не зафиксировала.

• Если транзакция B затем откатывается, транзакция A в конечном итоге содержит недействительное или «грязное» значение, которое на самом деле никогда не существовало в зафиксированном состоянии.

2. Non-Repeatable Read (неповторяемое чтение)

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

3. Phantom Read (фантомное чтение)

• Транзакция A выполняет запрос, возвращающий набор строк. Другая транзакция вставляет, обновляет или удаляет строки, соответствующие условиям запроса A.

• Если A повторно выполнит тот же запрос, он увидит другой набор строк («фантомов»).

Уровни изоляции

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

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

Давайте рассмотрим четыре распространенных уровня изоляции:

1. Read Uncommitted

• Позволяет выполнять «грязное» чтение; транзакции могут видеть незафиксированные изменения.

• Используется редко, так как может привести к серьезным аномалиям.

2. Read Committed

• Транзакция видит только те данные, которые были зафиксированы на момент чтения.

• Предотвращает «грязное» чтение, но неповторяющиеся чтения и фантомные чтения все еще могут возникать.


3. Repeatable Read

• Гарантирует, что при многократном чтении одних и тех же строк в рамках транзакции вы получите одни и те же значения.

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


4. Serializable

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

• Предотвращает грязное чтение, неповторяющееся чтение и фантомное чтение.

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

Как базы данных обеспечивают изоляцию

1. Блокировка
• Пессимистический контроль параллелизма

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

2. MVCC (управление многоверсионным параллелизмом)

• Оптимистическое управление параллелизмом

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

3. Изоляция моментального снимка

• Форма MVCC, при которой каждая транзакция видит данные такими, какими они были в начале (или в определенной точке) транзакции.
• Предотвращает неповторяющиеся и «грязные» чтения. Фантомные чтения могут возникать, если уровень изоляции не является полностью сериализуемым.

1.9k 1 27 12 30
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot