我在.Net 3.5和SqlHelper上使用Sql Server 2008 R2和VS 2008 C#。Sql server缓存问题
一种方法,比如updateData(int id)加载一些与“id”有关的数据,做了大量的计算和处理并重新提交数据。有一个单独的程序doThings(int id),它执行一组任务,其中每个任务操作与“id”相关的数据,然后在一个事务中提交该数据。其中一些任务在提交后调用updateData(int id),但是,updateData(int id)不按照最新的提交更新数据。过了一会儿,如果我重新运行updateData(int id),那么更新就完成了,因为它应该。
为了使它更清楚,这里就是该程序是doing-
doTask(int id) //updates some table related to id and calls updateData()
doTask(int id) //updates some table related to id and calls updateData()
doTask(int id) //updates some table related to id and calls updateData()
doTask(int id) //updates some table related to id and calls updateData()
...
输出 - 数据没有更新
过了一会儿 -
updateData() //recalculates and updates the data
输出 - 数据更新
我知道SQL Server缓存查询结果集。但是,如果我更新了缓存中的表的一部分,那么它不应该重新创建结果集。我已经在不同的环境(测试和生产)中尝试过,没有太多的帮助。
每个doTask(INT ID)的是利用交易来更新数据库和交易完成SANS它,因为它没有最终的了updateData最后一次通话将不会更新数据。一旦交易完成,updateData()被调用,其也使用交易。有什么与缓存有关的,可以在这里帮助吗?因为我必须在这里发布的代码量非常大,我甚至不允许这样做。
我想两两件事,并在这两个情况下─
- 工作增加500毫秒
- 调试的Thread.sleep代码和刚刚第二呼叫举行了到了updateData()在doTask()
不,还有其他事情正在发生。发布一些代码。 –