diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index f7ecaf94..c7fbe78d 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -24,12 +24,16 @@ "unresolvedLinks": false, "recentFilesStore": [ { - "filepath": "_inbox/Read committed.md", - "timestamp": 1718817519939 + "filepath": "_inbox/Repeatable read.md", + "timestamp": 1718817548205 }, { "filepath": "knowledge/dev/database/Уровни изоляций транзакций БД.md", - "timestamp": 1718817518532 + "timestamp": 1718817545204 + }, + { + "filepath": "_inbox/Read committed.md", + "timestamp": 1718817519939 }, { "filepath": "_inbox/Транзакция БД.md", @@ -38,10 +42,6 @@ { "filepath": "_inbox/Фантомное чтение.md", "timestamp": 1718817514775 - }, - { - "filepath": "_inbox/Read uncommitted.md", - "timestamp": 1718817512090 } ], "bookmarkedFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 7d56f7e7..9c011cc8 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,13 +1,17 @@ { "recentFiles": [ { - "basename": "Read committed", - "path": "_inbox/Read committed.md" + "basename": "Repeatable read", + "path": "_inbox/Repeatable read.md" }, { "basename": "Уровни изоляций транзакций БД", "path": "knowledge/dev/database/Уровни изоляций транзакций БД.md" }, + { + "basename": "Read committed", + "path": "_inbox/Read committed.md" + }, { "basename": "Транзакция БД", "path": "_inbox/Транзакция БД.md" @@ -24,10 +28,6 @@ "basename": "Потерянное обновление", "path": "_inbox/Потерянное обновление.md" }, - { - "basename": "Repeatable read", - "path": "_inbox/Repeatable read.md" - }, { "basename": "Неповторяющееся чтение", "path": "_inbox/Неповторяющееся чтение.md" diff --git a/_inbox/Read committed.md b/_inbox/Read committed.md index 59fbfafc..ecda1820 100644 --- a/_inbox/Read committed.md +++ b/_inbox/Read committed.md @@ -13,4 +13,6 @@ linked: **Read committed (чтение фиксированных данных).** Большинство промышленных СУБД по умолчанию используют именно этот уровень. На этом уровне обеспечивается защита от «грязного» чтения, тем не менее, в процессе работы одной транзакции другая может быть успешно завершена и сделанные ею изменения зафиксированы. В итоге первая транзакция будет работать с другим набором данных. ^11df20 Проблемы: -- [[непов]] \ No newline at end of file +- [Неповторяющееся чтение](Неповторяющееся%20чтение.md) +- [Фантомное чтение](Фантомное%20чтение.md) +- [Потерянное обновление](Потерянное%20обновление.md) \ No newline at end of file diff --git a/_inbox/Repeatable read.md b/_inbox/Repeatable read.md index 9313aae1..05e01572 100644 --- a/_inbox/Repeatable read.md +++ b/_inbox/Repeatable read.md @@ -21,4 +21,10 @@ linked: Но если вторая транзакция не изменяла данные, а добавляла новые строчки, то исключения не было бы. Также проблем не будет, если мы обновим баланс второго пользователя. -Но возникает закономерный вопрос: что делать с ошибкой, ведь мы хотели выполнить транзакцию, которая свалилась с исключением. Самое простое, что можно сделать — это повторить выполнение второй транзакции с новыми данными. Если исключение возникнет опять, то повторить снова. \ No newline at end of file +Но возникает закономерный вопрос: что делать с ошибкой, ведь мы хотели выполнить транзакцию, которая свалилась с исключением. Самое простое, что можно сделать — это повторить выполнение второй транзакции с новыми данными. Если исключение возникнет опять, то повторить снова. + +Особенности +- В [PostgreSQL](00%20PostgreSQL.md) на уровне `REPEATABLE_READ` также предотвращены фантомные чтения. + +Проблемы: +- [Фантомное чтение](Фантомное%20чтение.md) \ No newline at end of file