vault backup: 2024-06-19 21:06:59
This commit is contained in:
parent
5f0099a627
commit
bf5850df0d
32
.obsidian/plugins/home-tab/data.json
vendored
32
.obsidian/plugins/home-tab/data.json
vendored
@ -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": [],
|
||||
|
@ -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
18
_inbox/MVCC.md
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- зрелость/🌱
|
||||
date:
|
||||
- - 2024-06-19
|
||||
zero-link:
|
||||
- "[[00 Базы Данных]]"
|
||||
parents:
|
||||
linked:
|
||||
---
|
||||
В начале каждой транзакции база данных создает список всех остальных выполняемых на текущий момент транзакций (но еще не зафиксированных или прерванных). Все выполненные этими транзакциями изменения игнорируются, даже если впоследствии они будут зафиксированы.
|
||||
|
||||
Все операции записи, выполненные прерванными транзакциями, игнорируются.
|
||||
|
||||
Все операции записи, выполненные транзакциями с более поздним идентификатором транзакции (то есть начавшиеся после запуска текущей транзакции), игнорируются независимо от того, были ли они зафиксированы.
|
||||
|
||||
Результаты всех остальных операций записи видны запросам приложения.
|
@ -23,6 +23,10 @@ linked:
|
||||
|
||||
Но возникает закономерный вопрос: что делать с ошибкой, ведь мы хотели выполнить транзакцию, которая свалилась с исключением. Самое простое, что можно сделать — это повторить выполнение второй транзакции с новыми данными. Если исключение возникнет опять, то повторить снова.
|
||||
|
||||
Реализация:
|
||||
- Блокировки. Чтение не блокирует запись, а запись не блокирует чтение.
|
||||
- [MVCC](MVCC.md)
|
||||
|
||||
Особенности
|
||||
- В [PostgreSQL](00%20PostgreSQL.md) на уровне `REPEATABLE_READ` также предотвращены фантомные чтения.
|
||||
|
||||
|
@ -13,7 +13,7 @@ linked:
|
||||
---
|
||||
Транзакция - способ группировки приложением нескольких операций в одну логическую единицу, которая либо выполняется вся, либо не выполняется вовсе (прерывание и откат).
|
||||
|
||||
Для реализации обычно используется [Журнал БД](Журнал%20БД.md).
|
||||
Для реализации обычно используется [Журнал БД](Журнал%20БД.md). Обычно у транзакции есть идентификатор.
|
||||
|
||||
**Как происходит commit транзакции:**
|
||||
- Подготовка транзакции в движке БД
|
||||
|
Loading…
Reference in New Issue
Block a user