我需要定期检查许多(100.000)行并检查它们的当前状态是否与另一个数据库中的最新存储版本相同.有没有办法为行匹配它们的某种唯一值,或者我是否必须逐列手动检查行?
源数据库是sql Server 2005数据库,该表没有用于创建,更新和/或删除操作的时间戳机制.我环顾四周检查是否有可用的行信息,但唯一可用的是伪列%% lockres %%和row information,但是它不提供日期和/或时间信息.
我的工具有限,但我有一个运行Apache和PHP的Web服务器,可以直接访问源数据库和目标数据库.我只对源数据库有读权限.
解决方法
由于您无权访问数据库,我建议使用“替代”数据库来存储信息.我可以想到几个不同的方法,每个方法都有不同的优点和缺点.
方法1
对于在表外使用哈希进行修改检查需要总是再次查询所有数据,使其操作非常慢,我会使用单独的表来存储哈希值,你可以随时首先检查值是否匹配然后更新它.
基本上在插入数据时,您可以根据该数据计算本地哈希值,然后将其与辅助数据库进行比较,如果它们不匹配,您就会知道数据不同步,并且可以将数据更新到真实数据库,将新哈希保存到帮助程序数据库.
优点:
>只对真实数据库进行必要的更新
缺点:
>比在数据库中使用哈希值慢
方法2
始终更新真实数据库中的记录.这是最简单的解决方案,除非您需要同时更新数千条记录并且远程数据库可以处理额外负载,否则性能影响不应该那么大.这只是简单的更新操作.
优点:
>简单易行
缺点:
>额外加载到真实数据库
方法3
只需获得修改远程数据库的权限.如果你要长时间保持这个东西,这可能是将来最好的事情.
优点:
>它会最快
缺点:
>您需要获得修改表的权限.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。