问题标签 [snapshot-isolation]
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.
sql-server - 如何正确实施快照隔离和 tempdb 问题?
快照隔离功能帮助我们解决了读者在大容量网站上锁定作者的问题。它通过在 SqlServer 中使用 tempdb 对行进行版本控制来实现。
我的问题是正确实现此快照隔离功能,是否只是在我的 SqlServer 上执行以下操作
我是否还必须编写包含 TransactionScope 的代码,例如
最后,Brent 在这篇文章的“并发的隐藏成本”一节中指出了他的担忧,他在其中提到当您在 tempdb 中对行进行版本化时,tempdb 可能会用完空间,并且可能会出现性能问题,因为它必须查找版本化的行。所以我的问题是我知道这个网站使用快照隔离,其他人在大型网站上使用这个功能,你对性能有什么看法?
谢谢,雷。
sql-server - SQL Server - 读取同一事务的未提交更改时的不一致行为
使用具有隔离级别“读取提交快照”的 SQL 服务器,我们经常将数据写入数据库并在同一事务的上下文中进一步读取它。通常从数据库中读取时,我们会看到我们自己未提交的更改,但只有其他人所做的已提交更改。我们假设这是预期的行为。
我们现在发现,在一些相对罕见的情况下,我们看不到我们已经写入的值——只有以前提交的值。
任何想法可能导致不一致?
sql-server-2005 - SQL Server 2005 被阻止,没有锁定或锁定进程
我们有一个数据库(我们称之为数据库 A)每隔几天就会变得不可用,我们必须重新启动它。当我说不可用意味着所有使用它的应用程序只是阻塞在那里等待数据库响应,但它永远不会响应。
幸运的是,我们注意到使用 SQL Server Management Studio 对特定表执行 SELECT 语句似乎会带来一些记录,但在某些时候它会阻塞。
有趣的是,特定数据库上没有 LOCKED 或 LOCKING 进程。我发现应用程序使用了以下事务隔离:
这解释了为什么我们看不到 Locked 或 Locking 进程对吗?
我们有另一个数据库(我们称之为数据库 B),它实际上具有相同的模式,我们从未遇到过这个问题。这些数据库之间的唯一区别是我前面提到的隔离。这个使用默认的事务隔离,我们从来没有遇到过数据库阻塞这种奇怪的事情。而且数据库 A 每天有更多的交易开放;更多。所以我能想到的是,在这种情况下,应该避免大量并发事务的 SNAPSHOT ISOLATION。
有人可以确认很可能是导致问题的快照隔离吗?我的意思是我们没有锁,我们只是有一个数据库阻塞,没有实际的异常或有助于我们检测问题根本原因的东西。
我的假设正确吗?我当然希望如此。
sql-server - 快照事务隔离级别:它真的像宣传的那样有效吗?
在高并发环境下使用有什么问题吗?真的像MS宣传的那样有效吗?我正在使用 SQL Server 2005,并想听听那些在生产中使用它的应用程序中/正在使用它的人的经验。
快照隔离本身对我来说并不新鲜,因为我也在开发/管理 Firebird/Interbase - 没有显式锁定并且所有工作都在行版本控制中......
vmware - 基于硬件的“快照”功能,例如在 VMWare 上
我们目前在开发软件时的工作方式涉及在 Windows XP 上运行 Visual Studio 的 vmware 虚拟机中进行开发。这主要是因为我们的软件在系统中安装了很多驱动程序,并且hook了不同的区域,因此在运行整个包的机器上调试整个系统是最方便的。由于某些限制(设置挂钩的位置等),远程调试是不可能的,它只是不起作用。
这迫使我们将整个开发环境安装在虚拟机中,在 vm 中进行开发和调试。可以想象,性能很差,这通常是地狱(性能方面)。
我想要的是一种类似于我在 vmware 中使用快照机制的能力:我可以在没有安装系统的情况下创建一个干净的快照,但是使用所有的开发工具。安装我的软件的特定版本并为其修复错误/功能,编译并与实时系统一起工作。当我需要安装不同的版本时,我会回到我保存的快照并重新安装。
我可以通过在不同点创建重影图像来做到这一点,我们已经尝试过这种方法。然而,我正在寻找的是另一种方法。可以自动为我做快照巫毒的东西,易于使用的东西,但不是 vmware.. 可以将我的实时机器变成可快照的东西。
希望这是有道理的。提前致谢。
sql - 使用 TSQL SNAPSHOT ISOLATION,是否可以只更新非锁定行?
大型 SQL Server 2008 表通常使用 SNAPSHOT ISOLATION 事务以(相对)较小的块进行更新。快照对于这些更新非常有效,因为这些块永远不会重叠。这些更新不是单个长时间运行的操作,而是按事务分组的许多小的单行插入/更新。
我想要一个较低优先级的事务来更新当前未锁定的所有行。有谁知道我怎么能得到这种行为?另一个 SNAPSHOT ISOLATION 事务会在一行发生冲突时立即失败,还是会在失败前更新所有可能的内容?
SET DEADLOCK_PRIORITY LOW
try-catch 有什么帮助吗?也许在重试循环中WHERE
只针对尚未更新的行?
ios - 无法在 IOS 中创建快照
任何想法为什么会发生这种情况?可能是损坏的目录?我用这些文件来回复制了很多。
database - 使用 B+树和快照隔离实现范围查询
我正在开发一个新的 NoSQL 数据库服务器产品。有没有关于如何在使用快照隔离的集群 B+ 树上实现范围查询的论文?
sql - 为什么要在快照隔离sql server数据库中更新事务块删除操作?
我的数据库中有 2 个表。它们是项目和字段。Item 是实现树的自引用表。这意味着在 Item 表中,我有 ID 和 ParentId 列。这样,我们就可以在Item表中存储一棵树。字段是一个表,用于存储项目的其他扩展属性。字段表有一个名为“Item_ID”的列来引用项目表。
好的,现在我们只想将事务添加到数据库操作中。我们发现了一些奇怪的行为作为标题。
正如 Microsoft 要求的那样,我们运行以下 sql 来启用数据库的快照隔离:
然后我们做如下测试:</p>
打开 2 个测试程序
第一个程序更新 Item 1 并在事务提交之前被阻塞。
使用第二个程序尝试删除第 2 项。第 1 项与第 2 项没有关系。这意味着第 1 项不是第 2 项的父/子。
然后我们发现第二个程序被第一个程序阻止了。如果我们继续第一个程序,那么如果没有超时,我们第二个程序将完成。
我对这个结果感到奇怪。因为我认为即使第 1 项正在交易中,我也可以删除第 2 项。谁知道为什么会这样?
mysql - 如何将 MySQL 中的 InnoDB 设置为快照隔离级别
我现在正在做一个学校项目,该项目需要描述 MySQL 在不同隔离级别方面的性能。我已经测试了 READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。现在我想使用快照隔离来测试东西。
我知道在 InnoDB 中使用 REPEATABLE READ 的默认值时,会结合使用快照隔离,但我想知道,是否可以将隔离级别设置为仅快照隔离?我该怎么做?