系统缓存用的是couchbase,但是插入和查询这里没有使用缓存,因为是实时数据,如果有缓存,日志中会显示订单已存在

解决方案 »

  1.   

    查询语句中加了with(nolock) 就是这样啊!这没有什么稀奇的。不至于“过几秒再查询”时才能查到,应该只要是负责修改数据库的“事务”完毕时就能查到了。而事务可能需要1秒钟,也可能需要10秒钟,因为程序是你写的。
      

  2.   

    你可以复习一下关系数据库事务隔离级别的知识。SQL Server默认的事务隔离级别,是可以保证避免“幻象读、脏读”的。为了让某些查询变快,而并不需要足够的“准确度”,可以在SQL Server的“快照”上查询,也可以使用早期的 with(nolock) 这种语法。如果不知道 with(nolock) 的目的,就不要乱抄人家的代码哦!
      

  3.   

    谢谢3楼的兄弟,我对数据库的理解不深,我的想法也是应该是事物还未完成,之所以使用with nolock查询,是希望在这个地方能够读取到未提交事物中的数据,据说在MSSQL中,with nolock的效果和指定ReadUncommitted效果一样,但是在我的使用中好像没有效果,但在查询器中模拟with nolock又的确有效果,另外那个插入成功后到再查询的时间间隔有时候不到1秒
      

  4.   

    最好不要用系统保留字作为表名与字段来使用,如order
      

  5.   

    我用sqlserver时,用Entity Framework删除数据有时也会出现这种情况
    删除后数据仍显示,但是过几秒刷新就好了
    应该是事务没有提交吧