47 lines
1016 B
Markdown
47 lines
1016 B
Markdown
# İşlemler ve MVCC
|
||
|
||
MVCC (Multi-Version Concurrency Control), snapshot izolasyonu ve deadlock algılama ile.
|
||
|
||
## Kullanım
|
||
|
||
```nim
|
||
import barabadb/core/mvcc
|
||
|
||
var tm = newTxnManager()
|
||
let txn = tm.beginTxn()
|
||
|
||
discard tm.write(txn, "key1", cast[seq[byte]]("value1"))
|
||
discard tm.write(txn, "key2", cast[seq[byte]]("value2"))
|
||
|
||
tm.savepoint(txn)
|
||
discard tm.write(txn, "key3", cast[seq[byte]]("value3"))
|
||
discard tm.rollbackToSavepoint(txn)
|
||
|
||
discard tm.commit(txn)
|
||
```
|
||
|
||
## İşlem İzolasyonu
|
||
|
||
BaraDB **snapshot izolasyonu** kullanır:
|
||
- Okuyucular yazıcıları engellemez
|
||
- Yazıcılar okuyucuları engellemez
|
||
- Her işlem tutarlı bir snapshot görür
|
||
|
||
## Deadlock Algılama
|
||
|
||
```nim
|
||
import barabadb/core/deadlock
|
||
|
||
var detector = newDeadlockDetector()
|
||
if detector.detectCycle(txn1, txn2):
|
||
echo "Deadlock algılandı!"
|
||
```
|
||
|
||
## Resmi Doğrulama
|
||
|
||
MVCC/Snapshot Isolation protokolü TLA+'da resmi olarak belirtilmiştir:
|
||
|
||
```bash
|
||
cd formal-verification
|
||
java -cp tla2tools.jar tlc2.TLC -config models/mvcc.cfg mvcc.tla
|
||
``` |