分布式数据库数据表分成多个parition,分布在不同server上,拓扑是每个server维护不同的版本时间戳,相比单机数据库,提供MVCC要复杂很多,当然,你如果有spanner的原子钟,那会简单很多。
现描述一种可行的实现方案,抛砖引玉。
此方案可以做如下保证:
1.单Partition读(分分布式事务读)可以保重repeated read。
2同一个server上的分布式事务可以保证repeated read,并且对外保证因果序列;
3.跨partition不能保证因果序,但可保证repeated read
由于跨server的分布式读不作任何保证,只讨论同一个server的分布式读,简单来说,就是去publish_id作为版本号,如果目标行上有行锁,且行锁相关的版本号是小于publish_id的,则阻塞等待行锁释放,否则直接读取即可。nweet/stackedit
原文地址:http://blog.csdn.net/zhang_shuai_2011/article/details/45673975