Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 数据库中查询失败的原因是什么?_Database - Fatal编程技术网

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

Database 数据库中查询失败的原因是什么?,database,Database,给定一个数据库,查询99%的时间返回正确的输出,但1%的时间返回错误的输出。可能的原因是什么 缓存、同步/复制、资源不足等我认为可能他们没有检查特殊字符,1%的时间用户可能会插入特殊字符。查询返回“错误”或“不期望”结果集有几个原因: 向数据库/表中添加了“错误”数据 查询读取未提交的记录或虚拟记录(请参见数据库隔离级别) 您的数据可能尚未编制索引(对于全文索引),或者全文服务正在重建索引 查询中没有ORDER BY子句,系统负载较高。在这种情况下,我们可以观察到“旋转木马扫描”: 例如,假设您

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

缓存、同步/复制、资源不足等

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

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

  • 向数据库/表中添加了“错误”数据
  • 查询读取未提交的记录或虚拟记录(请参见数据库隔离级别)
  • 您的数据可能尚未编制索引(对于全文索引),或者全文服务正在重建索引
  • 查询中没有ORDER BY子句,系统负载较高。在这种情况下,我们可以观察到“旋转木马扫描”:
  • 例如,假设您有一个包含500000页的表。乌瑟拉 执行需要扫描(和检索)的Transact-SQL语句 表的一些记录)。当扫描处理了100000个 在第页中,UserB执行另一条Transact-SQL语句来扫描 同一张桌子。数据库引擎调度一组读取请求 100001之后的页面,并将每一页的行传递回这两个页面 扫描。当扫描到达200000页时,UserC执行 另一个扫描同一表的Transact-SQL语句。启动 对于页面200001,数据库引擎传递每个页面中的行 它读取回所有三次扫描。在读到第500000行之后, 对UserA的扫描完成,对UserB和UserC的扫描结束 返回并开始阅读从第1页开始的页面。当 数据库引擎进入第100000页,用户B的扫描完成。 然后,对UserC的扫描将继续单独进行,直到它读取第200000页。 此时,所有扫描都已完成。更多关于这个 此处的优化:

  • 对于分布式数据库,可以在数据库的不同副本上执行查询(因为“数据库负载平衡器”)。所以,在复制过程中,某些数据库副本可能在某个点上具有不同的数据

  • 如果有其他想法,我会更新我的帖子。

    首先:定义“正确”。这是一个太笼统和模糊的问题。您应该提供表和查询的摘录(如果可能,还应该提供描述)。1%的失败对于失败的标准定义来说是不正常的…@dystroy,这不是一个无效的面试问题;因此,没有必要投反对票。问题的关键是列出一些可以成立的理由,一个查询在99%的时间里都能工作。@kasavbere:在我看来,这是一个开放的问题,无法得到一个明确的完整答案。这是一个阐述这种公开论文的地方吗?不管怎样,我接受你的观点,并且在下次投票时会更加谨慎。罗伊,你的观点是正确的,因为这个问题是开放的。但由于这是一个有效的面试问题,新用户不应该因为提问而受到惩罚:是的,提问的人只有14分。