vault backup: 2024-06-19 21:06:59

This commit is contained in:
Struchkov Mark 2024-06-19 21:06:59 +03:00
parent 5f0099a627
commit bf5850df0d
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
5 changed files with 56 additions and 34 deletions

View File

@ -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": [],

View File

@ -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": [],

18
_inbox/MVCC.md Normal file
View File

@ -0,0 +1,18 @@
---
aliases:
tags:
- зрелость/🌱
date:
- - 2024-06-19
zero-link:
- "[[00 Базы Данных]]"
parents:
linked:
---
В начале каждой транзакции база данных создает список всех остальных выполняемых на текущий момент транзакций (но еще не зафиксированных или прерванных). Все выполненные этими транзакциями изменения игнорируются, даже если впоследствии они будут зафиксированы.
Все операции записи, выполненные прерванными транзакциями, игнорируются.
Все операции записи, выполненные транзакциями с более поздним идентификатором транзакции (то есть начавшиеся после запуска текущей транзакции), игнорируются независимо от того, были ли они зафиксированы.
Результаты всех остальных операций записи видны запросам приложения.

View File

@ -23,6 +23,10 @@ linked:
Но возникает закономерный вопрос: что делать с ошибкой, ведь мы хотели выполнить транзакцию, которая свалилась с исключением. Самое простое, что можно сделать — это повторить выполнение второй транзакции с новыми данными. Если исключение возникнет опять, то повторить снова.
Реализация:
- Блокировки. Чтение не блокирует запись, а запись не блокирует чтение.
- [MVCC](MVCC.md)
Особенности
- В [PostgreSQL](00%20PostgreSQL.md) на уровне `REPEATABLE_READ` также предотвращены фантомные чтения.

View File

@ -13,7 +13,7 @@ linked:
---
Транзакция - способ группировки приложением нескольких операций в одну логическую единицу, которая либо выполняется вся, либо не выполняется вовсе (прерывание и откат).
Для реализации обычно используется [Журнал БД](Журнал%20БД.md).
Для реализации обычно используется [Журнал БД](Журнал%20БД.md). Обычно у транзакции есть идентификатор.
**Как происходит commit транзакции:**
- Подготовка транзакции в движке БД