问题标签 [dirtyread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
661 浏览

mysql - MySQL InnoDB 如何实现 Read Uncommitted 隔离级别

Oracle 不允许脏读,因此甚至不允许从 JDBC 设置 Read Uncommitted。

PostgreSQL also falls back to Read Committed, when choosing Read Uncommitted.

SQL Server 定义了 Read Uncommitted 隔离级别,因为它的并发控制模型是基于锁定的(除非切换到两个快照隔离级别),因此它可能是唯一可以从避免锁定报告中看到一些性能优势的数据库确实需要严格的一致性。

InnoDB 也使用 MVCC,但与 Oracle 和 PostgreSQL 不同的是,它允许脏读。为什么会这样?直接转到最新版本而不是从回滚段重建以前的版本是否有任何性能优势?回滚段查询时间是否恢复了需要允许脏读的密集过程?

0 投票
0 回答
35 浏览

caching - 对虚假分享的观察

我有一个关于虚假分享的观察,请看这段代码:

在这里,sum_a可能需要不断地从主内存(而不是从缓存中)重新读取x,即使inc_b' 的并发修改 y应该是无关紧要的。

通过甲骨文的网站,我读到了这个解释:

来自不同处理器的同一高速缓存行中的单个元素同时更新会使整个高速缓存行无效,即使这些更新在逻辑上彼此独立。缓存行的单个元素的每次更新都会将该行标记为无效。访问同一行中不同元素的其他处理器会看到标记为无效的行。他们被迫从内存或其他地方获取该行的更新副本,即使访问的元素尚未修改。这是因为缓存一致性是在缓存行的基础上维护的,而不是针对单个元素。因此,互连流量和开销将会增加。此外,当缓存行更新正在进行时,对行中元素的访问被禁止.

我的观察很简单:
如果我读的是真的,怎么可能存在“脏读”的问题???

0 投票
1 回答
433 浏览

mysql - 用mysql启动两个独立的事务

我想用两个独立的事务重新创建脏读异常。我已经启动了两次终端并将两者都连接到我的数据库。我已经使用start transaction;两者中的命令开始了交易。然后我在第一个终端窗口中更新了一个信息,这就是它向我展示的内容:Rows matched: 1 Changed: 1 Warnings: 0. 选择此表中的所有数据后,更改就在那里。但是当我试图select * from adress;在第二个终端窗口中显示更改的数据时,它并没有显示更改,而是显示了旧数据。

最后,我需要证明脏读异常,并使用正确的隔离级别避免这种情况发生。

这是我的终端窗口的两个屏幕截图。

交易一:

交易1

交易2:

交易2

我究竟做错了什么?

谢谢你的帮助,罗宾

0 投票
1 回答
2558 浏览

linux - CentOS 7.2 上的 Dirty CoW 缓解 - 语义错误:在解析探测点时

我正在按照此处所述在我的系统上实施临时补丁(非持久性)(在等待官方发行版内核时):

https://bugzilla.redhat.com/show_bug.cgi?id=1384344#c13

我已经在写脚本上测试了一个脏副本,目的是在我的系统上测试这个 bug 的解决方案,但请注意,我遇到了一个语义错误,并且这个 bug 在我的系统上仍然处于活动状态:

用颜色(如果那是你的事):

在此处输入图像描述

阅读这篇文章:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/SystemTap_Beginners_Guide/errors.html

我看到一个简短的解释:

语义错误:探测点不匹配,同时解析探测点foo
由于各种原因,无法完全解析事件/处理函数 foo。当脚本包含事件 kernel.function("blah") 并且 blah 不存在时会发生此错误。在某些情况下,错误还可能意味着脚本包含无效的内核文件名或源代码行号。

问题:

  • 这实质上是在说明syscall无法识别内核函数,对吗?
  • 有没有人在 CentOS 7.x 上成功实施过这个临时修复?

谢谢你的帮助

PS:对不起,如果这看起来有点像脚本小子(我还不完全理解这个热修复)。

0 投票
1 回答
496 浏览

linux - CentOS 7.2 上的 Dirty CoW 补丁 - kernel-debuginfo

在为我的服务器进行临时修复时,对于Dirty-COW,我发现了 CentOS 7 中的一个错误。该错误似乎是 kernel-debuginfo 软件包的错误内核版本。这是内核版本:

以上似乎与内核开发版本相匹配:

但是,这与以下内核版本不匹配:

尝试安装正确的软件包会导致错误消息表明已安装了正确的软件包:

为了解决这个问题,我首先尝试:

那并没有删除通用包。

要删除我使用的那个包:

在此之后,安装正常工作:

现在我的问题是:除了这是 CentOS 7 中的错误之外,任何人都可以解释这种行为吗?

0 投票
3 回答
1881 浏览

tsql - 如何使脏读

这会是脏读的例子吗?

T1 & T2 交易

脏读示例

0 投票
1 回答
959 浏览

entity-framework-5 - 使用 Informix 在实体框架中将隔离级别设置为 DIRTY READ

有没有办法使用 Informix 数据库或 LOCK MODE TO WAIT 在 Entity Framework 5 中设置隔离级别?

在创建 DbContext 对象时,我尝试使用 SQL 查询设置隔离。

但这似乎行不通。我仍然遇到锁定异常:

我尝试将 TransactionScope 与 System.Transactions.IsolationLevel.ReadUncommitted 一起使用,但它引发了异常:

你能解释一下出了什么问题以及如何解决它吗?

0 投票
2 回答
751 浏览

java - Java:ArrayList 的脏检查?

如何ArrayList在 Java 中执行脏检查?

我有一个对象

我有两个清单:

在第一个列表中,我有以下值:

在第二个列表中,我有以下值:

在第二个列表中,animalPlace索引 2 处的元素的 已从津巴布韦更改为挪威。如何比较两个列表值以及已更改的值将该对象放在单独的列表中?

我知道通过使用 for 循环比较列表的传统方法:

有没有更快和/或更好的方法?

0 投票
0 回答
170 浏览

sql - 事务隔离级别是否必须在读取后重置

我正在尝试对 SQL Server 表进行脏检查,但我不确定设置是否保存到表中并会影响其他读取,或者在读取后自动重置。我希望该uncommitted标志仅在每次调用该过程时使用,而不影响对表的其他读取。

案例一

案例2

案例2中的最后一行是否必要?

0 投票
1 回答
16 浏览

database - 在另一个事务中提交数据对象后在一个事务中读取数据对象 - 脏读?

根据定义,脏读是对未提交数据的读取。我的问题是:

如果您有多个来自同一故事中不同事务的写操作紧随其后发生(比如说事务 1、2 和 3),那么在写入结束时,其中一个事务提交(假设是事务 1),然后从事务 2 或 3 读取,这算作脏读吗?

例如:w1(X);w2(X);w3(X);c1;r2(X).....