数据库中查询失败的原因是什么?

时间:2012-04-25 11:37:28

标签: database

给定一个数据库,查询在99%的时间内返回正确的输出,但是1%的时间,它返回错误的输出。可能的原因是什么?

3 个答案:

答案 0 :(得分:2)

查询返回“错误”或“未预期”结果集有几个原因:

  1. “错误”数据已添加到数据库/表格中。
  2. 查询读取未提交的记录或幻像记录(请参阅数据库隔离级别)
  3. 您的数据可能尚未编入索引(如果是全文索引)或全文服务正在重建索引
  4. 查询中没有ORDER BY子句,系统负载很高。在这种情况下,我们可能会观察到“旋转木马扫描”:
  5.   

    例如,假设您有一个包含500,000页的表。用户A   执行需要扫描(并检索)的Transact-SQL语句   表的一些记录。当该扫描已处理100,000   在页面中,UserB执行另一个扫描的Transact-SQL语句   同桌。数据库引擎为一组读取请求计划   100,001之后的页面,并将每页的行传递回两者   扫描。当扫描到达第200,000页时,UserC执行   另一个扫描同一个表的Transact-SQL语句。开始   在页面200,001中,数据库引擎传递每个页面的行   它会回读所有三次扫描。在读完第500,000行后,   UserA的扫描已完成,UserB和UserC的扫描已完成   返回并开始阅读从第1页开始的页面   数据库引擎达到100,000页,完成了对UserB的扫描。   然后,对UserC的扫描一直持续到读取页面200,000为止。   此时,所有扫描都已完成。更多关于这个   优化点:merry-go-round scanning

    1. 对于分布式数据库,可以在数据库的不同副本上执行查询(因为“数据库负载平衡器”)。因此,在复制过程中,某些数据库副本在某些时候可能会有不同的数据。
    2. 如果出现其他一些想法 - 我会更新我的帖子。

答案 1 :(得分:1)

我想也许他们没有检查特殊字符,1%的时间用户可能会插入特殊字符。

答案 2 :(得分:0)

缓存,同步/复制,缺乏资源等