diff --git a/.obsidian/plugins/home-tab/data.json b/.obsidian/plugins/home-tab/data.json index 67173b82..75de9429 100644 --- a/.obsidian/plugins/home-tab/data.json +++ b/.obsidian/plugins/home-tab/data.json @@ -23,6 +23,10 @@ "markdownOnly": false, "unresolvedLinks": false, "recentFilesStore": [ + { + "filepath": "_inbox/Потерянное обновление.md", + "timestamp": 1718907466550 + }, { "filepath": "_inbox/MVCC.md", "timestamp": 1718902462965 @@ -38,10 +42,6 @@ { "filepath": "_inbox/Блокировки.md", "timestamp": 1718901922212 - }, - { - "filepath": "_inbox/Deadlock.md", - "timestamp": 1718901920086 } ], "bookmarkedFileStore": [], diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 848af18b..66bfab95 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,5 +1,9 @@ { "recentFiles": [ + { + "basename": "Потерянное обновление", + "path": "_inbox/Потерянное обновление.md" + }, { "basename": "MVCC", "path": "_inbox/MVCC.md" @@ -48,10 +52,6 @@ "basename": "Фантомное чтение", "path": "_inbox/Фантомное чтение.md" }, - { - "basename": "Потерянное обновление", - "path": "_inbox/Потерянное обновление.md" - }, { "basename": "Pasted image 20240620094127", "path": "meta/files/Pasted image 20240620094127.png" diff --git a/_inbox/Потерянное обновление.md b/_inbox/Потерянное обновление.md index 31d02558..c9b9c202 100644 --- a/_inbox/Потерянное обновление.md +++ b/_inbox/Потерянное обновление.md @@ -93,6 +93,15 @@ public class LostUpdateExample { ![](Pasted%20image%2020240619201135.png) +Защита от потерянных обновлений: +- Атомарные операции +- Явные блокировки +``` +SELECT * FROM tb1 +WHERE id = 10 FOR UPDATE +``` +- Автоматическое обнаружение +- CAS операции ## Дополнительные материалы - [Пример на Java](https://github.com/Example-uPagge/transactional/blob/master/jdbc-transaction/src/main/java/dev/struchkov/example/transaction/problems/LostUpdateExample.java) - ![](Pasted%20image%2020240620094127.png) \ No newline at end of file