Open Konard opened 9 years ago
Какие операции над базой не требуют глобальной блокировки? см. Global Locks.
Всё зависит от того, требует ли блокировки BST, где-то я видел, есть реализации так называемых lookfree деревьев. Если операции вставки, удаления можно выполнять параллельно над деревом, то реализовать поддержку многопоточности в целом уже проще. Сейчас самое узкое место это бинарное дерево. Для транзакций есть дополнительная специфика, нужно учитывать чтобы они не конфликтовали друг с другом, и если одна транзакция поменяла данные, на которых основывалась другая (читала например), то вторую вероятно нужно откатить и попробовать выполнить заново.
One possible solution for intensive multithread usage is to disable update and delete operations, and make two separate collections of trees for read-only and create-only operations.
If it is possible to have lock-free linked list operation, then it is possible to have lock-free trees that use locking only on rebalancing and the rebalancing happens only ones for N inserts/removals.
Allow to execute multiple transactions at the same time.