日期:2014-05-17  浏览次数:20792 次

如何读取记录最大timestamp
有个数据同步的方案
给远程服务器每个表加timestamp字段,每次读取,先从服务器获取所有table主键跟timestamp,比较本地数据再根据timestamp变化情况。每次读取记录最大timestamp,下次只读取大于这个时间戳的数据。

我想请问下:如何读取最大的timestamp?因为时间戳是实时更新的,除非是每次更新完后都有个字段记录他的上一次更新时间
@@DBTS读取的是当前时间戳,而不是上一次更新的最大值。
这样是不是同步的双向表都要加个记录timestamp的上次值的字段呢

------解决方案--------------------
@@DBTS是定值变量,非字段
select 1 from table 为什么值都是1?
------解决方案--------------------
时间戳没有大小,只是标记,@@DBTS返回当前时间戳,就是最后一次使用的时间戳,如果你指的大小是最后一次使用,那就是它。
------解决方案--------------------
用timestamp,每次同步数据都需要全库扫描一次喔.

注意性能问题.
------解决方案--------------------
TIMESTAMP 在SQLserver里是全库唯一的,都会往上增长。
你远程服务器上的表都增加一个TMSTAMP字段,使用TIMESTAMP类型,那目的库是否也可以增加一个TMSTAMP字段,类型BIGINT,你同步的时候将远程的CONVERT(BIGINT,TMSTAMP)同步到本地,那本地的最大时间戳就是一个节点,每次同步只要比这个值大的数据导过来就可以了。这个适合简单的数据增长,如果中间数据有修改的话就比较复杂了。