Redshift中xid(事务ID)是否唯一?stl_query等系统表xid会重复吗?
Redshift系统表xid(事务ID)唯一性解答
- 单个Redshift集群范围内,xid可保证全局唯一,不会出现复用重复的情况
xid是Redshift内核的事务管理器分配的单调递增64位整数,每触发一个新事务就会生成一个全新的xid,分配逻辑独立于进程PID的操作系统回收逻辑,不会像PID一样因为进程退出、会话断开就被复用。
理论上xid存在回绕复用的可能,但回绕阈值为2^64,且只有对应xid关联的所有MVCC版本数据、事务日志、备份快照都被彻底清理后才会触发回绕,常规集群的全生命周期内都不可能遇到这个场景,实际使用中完全可以把xid作为事务的唯一标识使用。
你可以通过查询系统表自行验证:
-- 验证stl_query中是否存在重复xid select xid, count(*) from stl_query group by xid having count(*) > 1;
正常情况下该查询返回为空,无重复xid记录。
注:这里的唯一性限定为单个Redshift集群内部,跨集群的xid没有关联,不保证唯一。
内容的提问来源于stack exchange,提问作者Hrudayanath
相关产品推荐
相关产品推荐

