vault backup: 2024-06-20 21:19:23
This commit is contained in:
parent
3c416c7b73
commit
56fadc3605
8
.obsidian/plugins/home-tab/data.json
vendored
8
.obsidian/plugins/home-tab/data.json
vendored
@ -23,6 +23,10 @@
|
|||||||
"markdownOnly": false,
|
"markdownOnly": false,
|
||||||
"unresolvedLinks": false,
|
"unresolvedLinks": false,
|
||||||
"recentFilesStore": [
|
"recentFilesStore": [
|
||||||
|
{
|
||||||
|
"filepath": "_inbox/Потерянное обновление.md",
|
||||||
|
"timestamp": 1718907466550
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"filepath": "_inbox/MVCC.md",
|
"filepath": "_inbox/MVCC.md",
|
||||||
"timestamp": 1718902462965
|
"timestamp": 1718902462965
|
||||||
@ -38,10 +42,6 @@
|
|||||||
{
|
{
|
||||||
"filepath": "_inbox/Блокировки.md",
|
"filepath": "_inbox/Блокировки.md",
|
||||||
"timestamp": 1718901922212
|
"timestamp": 1718901922212
|
||||||
},
|
|
||||||
{
|
|
||||||
"filepath": "_inbox/Deadlock.md",
|
|
||||||
"timestamp": 1718901920086
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"bookmarkedFileStore": [],
|
"bookmarkedFileStore": [],
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
{
|
{
|
||||||
"recentFiles": [
|
"recentFiles": [
|
||||||
|
{
|
||||||
|
"basename": "Потерянное обновление",
|
||||||
|
"path": "_inbox/Потерянное обновление.md"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"basename": "MVCC",
|
"basename": "MVCC",
|
||||||
"path": "_inbox/MVCC.md"
|
"path": "_inbox/MVCC.md"
|
||||||
@ -48,10 +52,6 @@
|
|||||||
"basename": "Фантомное чтение",
|
"basename": "Фантомное чтение",
|
||||||
"path": "_inbox/Фантомное чтение.md"
|
"path": "_inbox/Фантомное чтение.md"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"basename": "Потерянное обновление",
|
|
||||||
"path": "_inbox/Потерянное обновление.md"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"basename": "Pasted image 20240620094127",
|
"basename": "Pasted image 20240620094127",
|
||||||
"path": "meta/files/Pasted image 20240620094127.png"
|
"path": "meta/files/Pasted image 20240620094127.png"
|
||||||
|
@ -93,6 +93,15 @@ public class LostUpdateExample {
|
|||||||
|
|
||||||
![](Pasted%20image%2020240619201135.png)
|
![](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)
|
- [Пример на 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)
|
- ![](Pasted%20image%2020240620094127.png)
|
Loading…
Reference in New Issue
Block a user