1、在业务系统中,往往存在大量的类似字典表的数据库表,这类表的数据量一般较小,变化不频繁,如:字典、配置、工号、机表、区域等。
2、统一数据访问层将这类表定义为全局表,即在每个库都保存一份数据,全局表就是用于解决这一类表的跨库关联查询问题。
3、全局表的特点包括:变动不频繁, 数据量总体变化不大;数据规模不大,很少有超过数十万条记录。
4、全局表的插入、更新操作会同步在所有节点上执行;全局表的查询操作,只从一个节点获取;全局表可以跟任何一个表进行JOIN 操作。
5、对全局表执行update、delete、insert等DML操作时,需要保障这些DML语句在所有节点同步执行成功,由于全局表的每条语句都需要分发到所有节点执行,这样就形成了跨节点分布式事务。
6、在统一数据访问层中可以采用事务补偿机制来保障全局表数据的最终一致性,补偿记录可通过管理平台或管理命令查看。
7、DBProxy检测事务中的第一条DML语句是全局表时,会自动开启分布式事务;如果有节点commit失败,DBProxy会进行自动补偿。