vault backup: 2024-06-20 19:58:42
This commit is contained in:
parent
1442d1bca3
commit
3c416c7b73
16
.obsidian/plugins/home-tab/data.json
vendored
16
.obsidian/plugins/home-tab/data.json
vendored
@ -24,12 +24,16 @@
|
||||
"unresolvedLinks": false,
|
||||
"recentFilesStore": [
|
||||
{
|
||||
"filepath": "_inbox/Read committed.md",
|
||||
"timestamp": 1718902353249
|
||||
"filepath": "_inbox/MVCC.md",
|
||||
"timestamp": 1718902462965
|
||||
},
|
||||
{
|
||||
"filepath": "_inbox/MVCC.md",
|
||||
"timestamp": 1718902317013
|
||||
"filepath": "_inbox/Repeatable read.md",
|
||||
"timestamp": 1718902423445
|
||||
},
|
||||
{
|
||||
"filepath": "_inbox/Read committed.md",
|
||||
"timestamp": 1718902353249
|
||||
},
|
||||
{
|
||||
"filepath": "_inbox/Блокировки.md",
|
||||
@ -38,10 +42,6 @@
|
||||
{
|
||||
"filepath": "_inbox/Deadlock.md",
|
||||
"timestamp": 1718901920086
|
||||
},
|
||||
{
|
||||
"filepath": "_inbox/Two Phase Lock.md",
|
||||
"timestamp": 1718901445162
|
||||
}
|
||||
],
|
||||
"bookmarkedFileStore": [],
|
||||
|
@ -1,13 +1,17 @@
|
||||
{
|
||||
"recentFiles": [
|
||||
{
|
||||
"basename": "Read committed",
|
||||
"path": "_inbox/Read committed.md"
|
||||
},
|
||||
{
|
||||
"basename": "MVCC",
|
||||
"path": "_inbox/MVCC.md"
|
||||
},
|
||||
{
|
||||
"basename": "Repeatable read",
|
||||
"path": "_inbox/Repeatable read.md"
|
||||
},
|
||||
{
|
||||
"basename": "Read committed",
|
||||
"path": "_inbox/Read committed.md"
|
||||
},
|
||||
{
|
||||
"basename": "Блокировки",
|
||||
"path": "_inbox/Блокировки.md"
|
||||
@ -60,10 +64,6 @@
|
||||
"basename": "Согласованное префиксное чтение",
|
||||
"path": "_inbox/Согласованное префиксное чтение.md"
|
||||
},
|
||||
{
|
||||
"basename": "Repeatable read",
|
||||
"path": "_inbox/Repeatable read.md"
|
||||
},
|
||||
{
|
||||
"basename": "Неповторяющееся чтение",
|
||||
"path": "_inbox/Неповторяющееся чтение.md"
|
||||
|
@ -6,9 +6,18 @@ date:
|
||||
- - 2024-06-19
|
||||
zero-link:
|
||||
- "[[00 Базы Данных]]"
|
||||
parents:
|
||||
parents:
|
||||
- "[[Транзакция БД]]"
|
||||
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/)
|
@ -24,7 +24,7 @@ linked:
|
||||
Но возникает закономерный вопрос: что делать с ошибкой, ведь мы хотели выполнить транзакцию, которая свалилась с исключением. Самое простое, что можно сделать — это повторить выполнение второй транзакции с новыми данными. Если исключение возникнет опять, то повторить снова.
|
||||
|
||||
Реализация:
|
||||
- Блокировки. Чтение не блокирует запись, а запись не блокирует чтение.
|
||||
- [Блокировки](Блокировки.md). Чтение не блокирует запись, а запись не блокирует чтение.
|
||||
- [MVCC](MVCC.md)
|
||||
|
||||
Особенности
|
||||
|
Loading…
Reference in New Issue
Block a user