From bf5850df0d7ebbe63a4f41c2ac5a3e876429e3dc Mon Sep 17 00:00:00 2001 From: Struchkov Mark Date: Wed, 19 Jun 2024 21:06:59 +0300 Subject: [PATCH] vault backup: 2024-06-19 21:06:59 --- .obsidian/plugins/home-tab/data.json | 32 +++++++++---------- .../plugins/recent-files-obsidian/data.json | 32 +++++++++---------- _inbox/MVCC.md | 18 +++++++++++ _inbox/Repeatable read.md | 4 +++ _inbox/Транзакция БД.md | 4 +-- 5 files changed, 56 insertions(+), 34 deletions(-) create mode 100644 _inbox/MVCC.md diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index 28076606..bb5533ca 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -23,25 +23,25 @@ "markdownOnly": false, "unresolvedLinks": false, "recentFilesStore": [ + { + "filepath": "_inbox/Транзакция БД.md", + "timestamp": 1718820375976 + }, + { + "filepath": "_inbox/MVCC.md", + "timestamp": 1718820279476 + }, + { + "filepath": "_inbox/Repeatable read.md", + "timestamp": 1718820275614 + }, + { + "filepath": "_inbox/Неповторяющееся чтение.md", + "timestamp": 1718820120307 + }, { "filepath": "_inbox/Read committed.md", "timestamp": 1718819967269 - }, - { - "filepath": "knowledge/dev/database/Уровни изоляций транзакций БД.md", - "timestamp": 1718819958305 - }, - { - "filepath": "_inbox/Грязное чтение.md", - "timestamp": 1718818453990 - }, - { - "filepath": "_inbox/Транзакция БД.md", - "timestamp": 1718818451051 - }, - { - "filepath": "knowledge/dev/database/Проблемы при параллельном выполнении нескольких транзакций.md", - "timestamp": 1718818448955 } ], "bookmarkedFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 24971917..97c258cb 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,5 +1,21 @@ { "recentFiles": [ + { + "basename": "Транзакция БД", + "path": "_inbox/Транзакция БД.md" + }, + { + "basename": "MVCC", + "path": "_inbox/MVCC.md" + }, + { + "basename": "Repeatable read", + "path": "_inbox/Repeatable read.md" + }, + { + "basename": "Неповторяющееся чтение", + "path": "_inbox/Неповторяющееся чтение.md" + }, { "basename": "Read committed", "path": "_inbox/Read committed.md" @@ -12,18 +28,10 @@ "basename": "Грязное чтение", "path": "_inbox/Грязное чтение.md" }, - { - "basename": "Транзакция БД", - "path": "_inbox/Транзакция БД.md" - }, { "basename": "Проблемы при параллельном выполнении нескольких транзакций", "path": "knowledge/dev/database/Проблемы при параллельном выполнении нескольких транзакций.md" }, - { - "basename": "Repeatable read", - "path": "_inbox/Repeatable read.md" - }, { "basename": "Фантомное чтение", "path": "_inbox/Фантомное чтение.md" @@ -36,10 +44,6 @@ "basename": "Потерянное обновление", "path": "_inbox/Потерянное обновление.md" }, - { - "basename": "Неповторяющееся чтение", - "path": "_inbox/Неповторяющееся чтение.md" - }, { "basename": "Serializable", "path": "_inbox/Serializable.md" @@ -195,10 +199,6 @@ { "basename": "Ответ HR", "path": "_inbox/Ответ HR.md" - }, - { - "basename": "Вопросы работодателю", - "path": "notes/Собеседования/Вопросы работодателю.md" } ], "omittedPaths": [], diff --git a/_inbox/MVCC.md b/_inbox/MVCC.md new file mode 100644 index 00000000..3b332eb9 --- /dev/null +++ b/_inbox/MVCC.md @@ -0,0 +1,18 @@ +--- +aliases: +tags: + - зрелость/🌱 +date: + - - 2024-06-19 +zero-link: + - "[[00 Базы Данных]]" +parents: +linked: +--- +В начале каждой транзакции база данных создает список всех остальных выполняемых на текущий момент транзакций (но еще не зафиксированных или прерванных). Все выполненные этими транзакциями изменения игнорируются, даже если впоследствии они будут зафиксированы. + +Все операции записи, выполненные прерванными транзакциями, игнорируются. + +Все операции записи, выполненные транзакциями с более поздним идентификатором транзакции (то есть начавшиеся после запуска текущей транзакции), игнорируются независимо от того, были ли они зафиксированы. + +Результаты всех остальных операций записи видны запросам приложения. \ No newline at end of file diff --git a/_inbox/Repeatable read.md b/_inbox/Repeatable read.md index 05e01572..260167e9 100644 --- a/_inbox/Repeatable read.md +++ b/_inbox/Repeatable read.md @@ -23,6 +23,10 @@ linked: Но возникает закономерный вопрос: что делать с ошибкой, ведь мы хотели выполнить транзакцию, которая свалилась с исключением. Самое простое, что можно сделать — это повторить выполнение второй транзакции с новыми данными. Если исключение возникнет опять, то повторить снова. +Реализация: +- Блокировки. Чтение не блокирует запись, а запись не блокирует чтение. +- [MVCC](MVCC.md) + Особенности - В [PostgreSQL](00%20PostgreSQL.md) на уровне `REPEATABLE_READ` также предотвращены фантомные чтения. diff --git a/_inbox/Транзакция БД.md b/_inbox/Транзакция БД.md index db2bed35..33cc9337 100644 --- a/_inbox/Транзакция БД.md +++ b/_inbox/Транзакция БД.md @@ -11,9 +11,9 @@ zero-link: parents: linked: --- -Транзакция - способ группировки приложением нескольких операций в одну логическую единицу, которая либо выполняется вся, либо не выполняется вовсе (прерывание и откат). +Транзакция - способ группировки приложением нескольких операций в одну логическую единицу, которая либо выполняется вся, либо не выполняется вовсе (прерывание и откат). -Для реализации обычно используется [Журнал БД](Журнал%20БД.md). +Для реализации обычно используется [Журнал БД](Журнал%20БД.md). Обычно у транзакции есть идентификатор. **Как происходит commit транзакции:** - Подготовка транзакции в движке БД