sql - 选择查询在 SQL 中的工作原理
问题描述
我有一个选择查询,可以选择流式传输数据。假设我运行查询并且数据计数为 100;在检索数据时,会插入更多行,例如再插入 10 行。现在我的问题是:选择会返回 100 行还是 110 行?
解决方案
这进入 RDBMS 环境中的隔离。例如,在 SQL Server 中,如果我运行一个从表中选择所有 COMMITTED 数据的查询,并且当它有 100 行时,我将返回 100 行。如果当前正在插入此表并且尚未提交这些新行,我仍将返回 100 行(假设表未锁定)。我每次都必须重新运行查询。结果集不仅会神奇地变大。每次要返回数据时都必须发出选择。
现在,如果我选择 UNCOMMITTED 数据并使用 NOLOCK 之类的东西,每次运行我的选择时,我都会返回尚未提交的记录。这意味着每次我运行我的选择时,当表接收新记录时,每次返回我的数据集时我都会看到这些新记录。这有助于在最新记录进入时查看它们,但是如果由于任何原因事务失败或回滚,这可能会导致脏读。
推荐阅读
- php - 更新外键记录,如果更新了一条记录
- sql - SQL:返回少于十个值的 TOP 10 列表中的 NULL 占位符值
- networking - 公开外部服务以从集群内部访问
- c# - 优化删除 SQL 查询多个数据组合的运行时间
- python - pip list 显示从不同目录运行时安装的不同软件包
- git - gitignore 子目录的内容
- swift - 线程 1:signal SIGTERM Xcode 11.3.1 SwiftUI
- regex - 如何使用awk或sed,在文中最后一个符号前添加内容}
- mysql - 使用 docker-compose 无法在同一网络中连接 mysql 和 spring boot
- javascript - 如何对齐待办事项列表的复选框?