把timestamp列做为主健?请看联机丛书这句话:一个表只能有一个 timestamp 列。每次插入或更新包含 timestamp 列的行时,timestamp 列中的值均会更新。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用主健意味着什么? 意味着数据行的物理排序,每次更改timestamp, 都导致记录重排,可想IO操作的恐怖程度了。不要说你程序两个进程跑就会死锁,就是单个进程,放在最空闲的时候跑,这种设计也是不允许的,如果我们公司里,你这样做的话,估计上面二话不就让你下岗了。
请fcuandy 指点,是TimeStamp做主键导致的死锁吗?
谢谢
多个进程访问操作数据时,都有写操作的话,就会产生资源的竞争,而你的操作又不停的在调整记录物理顺序,这应该是导致死锁最主要的原因。
请fcuandy 指点,是TimeStamp做主键导致的死锁吗?
谢谢
列名 类型 允许空
TimeStamp DateTime n
TagName varchar(30) n
OperatorTurn smallint n
Value float y
Quality smallint y触发器死锁是因为执行时间过长吗?
谢谢!
然后每次记录有了变动,都是自己代码中去更改timeStamp列的?如果是这样,那么一样。其实你要是否因为这个列引起的问题可以试下:先去掉timestamp的主健属性,或者sp_help avgdata查下聚集索引名,然后删除聚集索引。然后再运行你的程序,看是否频繁死锁。
先去掉timestamp的主健属性,或者sp_help avgdata查下聚集索引名,然后删除聚集索引。 然后再运行你的程序,看是否频繁死锁。
__________________________
好的,我试一试,非常感谢!