vault backup: 2024-06-20 19:58:42

This commit is contained in:
Struchkov Mark 2024-06-20 19:58:42 +03:00
parent 1442d1bca3
commit 3c416c7b73
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
4 changed files with 29 additions and 18 deletions

View File

@ -24,12 +24,16 @@
"unresolvedLinks": false, "unresolvedLinks": false,
"recentFilesStore": [ "recentFilesStore": [
{ {
"filepath": "_inbox/Read committed.md", "filepath": "_inbox/MVCC.md",
"timestamp": 1718902353249 "timestamp": 1718902462965
}, },
{ {
"filepath": "_inbox/MVCC.md", "filepath": "_inbox/Repeatable read.md",
"timestamp": 1718902317013 "timestamp": 1718902423445
},
{
"filepath": "_inbox/Read committed.md",
"timestamp": 1718902353249
}, },
{ {
"filepath": "_inbox/Блокировки.md", "filepath": "_inbox/Блокировки.md",
@ -38,10 +42,6 @@
{ {
"filepath": "_inbox/Deadlock.md", "filepath": "_inbox/Deadlock.md",
"timestamp": 1718901920086 "timestamp": 1718901920086
},
{
"filepath": "_inbox/Two Phase Lock.md",
"timestamp": 1718901445162
} }
], ],
"bookmarkedFileStore": [], "bookmarkedFileStore": [],

View File

@ -1,13 +1,17 @@
{ {
"recentFiles": [ "recentFiles": [
{
"basename": "Read committed",
"path": "_inbox/Read committed.md"
},
{ {
"basename": "MVCC", "basename": "MVCC",
"path": "_inbox/MVCC.md" "path": "_inbox/MVCC.md"
}, },
{
"basename": "Repeatable read",
"path": "_inbox/Repeatable read.md"
},
{
"basename": "Read committed",
"path": "_inbox/Read committed.md"
},
{ {
"basename": "Блокировки", "basename": "Блокировки",
"path": "_inbox/Блокировки.md" "path": "_inbox/Блокировки.md"
@ -60,10 +64,6 @@
"basename": "Согласованное префиксное чтение", "basename": "Согласованное префиксное чтение",
"path": "_inbox/Согласованное префиксное чтение.md" "path": "_inbox/Согласованное префиксное чтение.md"
}, },
{
"basename": "Repeatable read",
"path": "_inbox/Repeatable read.md"
},
{ {
"basename": "Неповторяющееся чтение", "basename": "Неповторяющееся чтение",
"path": "_inbox/Неповторяющееся чтение.md" "path": "_inbox/Неповторяющееся чтение.md"

View File

@ -7,8 +7,17 @@ date:
zero-link: zero-link:
- "[[00 Базы Данных]]" - "[[00 Базы Данных]]"
parents: parents:
- "[[Транзакция БД]]"
linked: linked:
--- ---
Реализация может отличаться в зависимости от СУБД.
У каждой транзакции есть идентификатор. У каждой записи появляется мета-информация updated_by(tx_id) и deleted_by(tx_id). На основе этой информации можно понять видит ли транзакция эту запись или нет.
Например:
- deleted_by(n+1). Транзакция n эту запись видит.
- deleted_by(n-4). Транзакция n эту запись не видит.
В начале каждой транзакции база данных создает список всех остальных выполняемых на текущий момент транзакций (но еще не зафиксированных или прерванных). Все выполненные этими транзакциями изменения игнорируются, даже если впоследствии они будут зафиксированы. В начале каждой транзакции база данных создает список всех остальных выполняемых на текущий момент транзакций (но еще не зафиксированных или прерванных). Все выполненные этими транзакциями изменения игнорируются, даже если впоследствии они будут зафиксированы.
Все операции записи, выполненные прерванными транзакциями, игнорируются. Все операции записи, выполненные прерванными транзакциями, игнорируются.
@ -21,3 +30,5 @@ linked:
- Работа с индексами. - Работа с индексами.
- Не модифицировать страницы, а создавать новые, вплоть до корня. - Не модифицировать страницы, а создавать новые, вплоть до корня.
- Хранить в индексе все версии - Хранить в индексе все версии
## Дополнительные материалы
- [MVCC in PostgreSQL-1. Isolation / Хабр](https://habr.com/ru/company/postgrespro/blog/467437/)

View File

@ -24,7 +24,7 @@ linked:
Но возникает закономерный вопрос: что делать с ошибкой, ведь мы хотели выполнить транзакцию, которая свалилась с исключением. Самое простое, что можно сделать — это повторить выполнение второй транзакции с новыми данными. Если исключение возникнет опять, то повторить снова. Но возникает закономерный вопрос: что делать с ошибкой, ведь мы хотели выполнить транзакцию, которая свалилась с исключением. Самое простое, что можно сделать — это повторить выполнение второй транзакции с новыми данными. Если исключение возникнет опять, то повторить снова.
Реализация: Реализация:
- Блокировки. Чтение не блокирует запись, а запись не блокирует чтение. - [Блокировки](Блокировки.md). Чтение не блокирует запись, а запись не блокирует чтение.
- [MVCC](MVCC.md) - [MVCC](MVCC.md)
Особенности Особенности