我们有一个审计表,它通过插入/更新触发器跟踪主表中的更改。触发器将主表中的所有新字段值复制到审计表。审计表中有一个datetime
列,用于跟踪主表(getdate()
)上插入/更新的时间。
我们在主键和时间列上有唯一索引。问题是如果在主表上几乎同时发生更新,那么它以唯一键冲突结束。
是否有任何日期时间类型捕获纳秒级别的精度?
答案 0 :(得分:1)
DB应该通过ACID固有地处理相同记录的更新。使用联合master_table_id / updatetime主键“审查”审计表以防止在短时间内“进行太多更新”可能不是正确的方法...尤其是当通过新硬件提高性能时...您可以拥有更多你的PK阻止的“合法”更新。
我讨厌问,但是你在执行哪种类型的操作,在亚毫秒级别更新同一行很多次?您是通过某些JDBC或ADO连接更新col2,然后是col3,然后是col4 all用于相同的PK吗?
您是否可以通过存储过程的输入将这些“很多”更新批处理为1个存储过程调用,因此您限制了写入操作?这样会更快,并且在审计跟踪上提供更少的流失。