给定一个数据库,查询在99%的时间内返回正确的输出,但是1%的时间,它返回错误的输出。可能的原因是什么?
答案 0 :(得分:2)
查询返回“错误”或“未预期”结果集有几个原因:
例如,假设您有一个包含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 :(得分:1)
我想也许他们没有检查特殊字符,1%的时间用户可能会插入特殊字符。
答案 2 :(得分:0)
缓存,同步/复制,缺乏资源等