Ключ теперь доступен на Google Cloud Platform. Вот несколько дополнительных документов о 2PC и блокировке.
https://cloud.google.com/spanner/docs/transactions
==
Cloud вращатель позволяет нескольким клиентам одновременно взаимодействовать с одной базой данных. Чтобы обеспечить согласованность нескольких параллельных транзакций, Cloud Spanner использует комбинацию общих блокировок и эксклюзивных блокировок для управления доступом к данным. Когда вы выполняете чтение как часть транзакции, Cloud Spanner получает общие блокировки чтения, что позволяет другим чтениям продолжать доступ к данным, пока ваша транзакция не будет готова к фиксации. Когда транзакция совершается и применяются записи, транзакция пытается перейти на эксклюзивную блокировку. Он блокирует новые общие блокировки чтения для данных, ждет, пока существующие общие блокировки чтения будут очищены, а затем помещает исключительную блокировку для эксклюзивного доступа к данным.
Заметки о замках:
Замки принимаются на зернистостью строки-и-колонки. Если транзакция T1 заблокировала столбец «A» строки «foo», а транзакция T2 хочет записать столбец «B» строки «foo», тогда конфликта нет. Записывает элемент данных, который также не читает записанные данные (иначе говоря, «слепые записи») не конфликтует с другими слепыми писателями того же элемента (метка фиксации каждой записи определяет порядок ее применения к базе данных). Следствием этого является то, что Cloud Spanner необходимо обновить до эксклюзивной блокировки, если вы прочитали данные, которые вы пишете. В противном случае Cloud Spanner использует общую блокировку, называемую общей блокировкой записи.