transaction-isolation相关内容

遇到序列化失败的条件是什么?

PostgreSQL 手册页位于可序列化隔离级别状态: [Like] 可重复读取级别,使用此级别的应用程序必须准备好因序列化失败而重试事务. 在可重复读取或可序列化级别遇到序列化失败的条件是什么? 我试图在运行两个 psql 实例的情况下引发序列化失败,但即使一个事务由一个实例提交,另一个实例在可序列化级别的事务中提交,而另一个提交,已成功提交其更改.两者都只是将记录插入到表中, ..
发布时间:2022-01-06 20:45:36 其他开发

MySQL/InnoDB 是否实现了真正的可序列化隔离?

MySQL 文档并不完全清楚 InnoDB引擎实现了真正的可序列化隔离1或快照隔离,它也经常被混淆地称为“可序列化".是哪个? 如果 MySQL InnoDB 没有,是否有任何完全免费的、生产质量的 RDBMS 可以做到? 1 其中“真正的可序列化隔离"意味着不仅不存在符合 SQL 标准的读取异常,而且不存在写入倾斜异常,进一步详细解释此处. 解决方案 是否有任何完全免费的 ..
发布时间:2022-01-06 20:25:28 其他开发

Postgres 中的原子更新 .. SELECT

我正在构建各种排队机制.有几行数据需要处理,还有一个状态标志.我正在使用 update ..returning 子句来管理它: 更新内容SET 计算 = '工作'WHERE id =(从 STUFF WHERE 计算的 SELECT id 为 NULL LIMIT 1)返回 * 嵌套选择部分是否与更新锁相同,或者我在这里有竞争条件?如果是这样,内部选择是否需要是 select for upda ..

INSERT ON CONFLICT DO NOTHING 和 SELECT 之间的竞争条件

在给定默认事务隔离(已提交读)的情况下,在 INSERT ... ON CONFLICT DO NOTHING 语句之后的 SELECT 查询是否总能找到一行? 我想在一个表中INSERT-或-SELECT 一行,然后在第二个表中插入行时引用它.由于 RETURNING 不适用于 ON CONFLICT,我到目前为止使用了 一个简单的 CTE,即使该行已经存在,它也应该始终为我提供标识列值: ..

在MySQL中,为什么在使用未提交的读取时通过select设置变量会获得锁定?

我们在MySQL中有一个使用InnoDB的表,并且正在使用未提交的事务隔离级别.为什么按所示设置 @x 会获得锁? mysql>设置@x =(从用户限制1中选择userID);查询正常,受影响的0行(0.02秒)mysql> 尝试从另一个提示更新此表会导致超时错误: mysql>更新用户设置userID = 1;错误1205(HY000):超出了锁定等待超时;尝试重新启动事务 解决 ..
发布时间:2021-05-30 20:08:31 数据库

防止在ASP.NET中使用ADO.NET并发执行存储过程

我想防止两个用户同时执行相同的存储过程.如果有两个ASP.NET请求进入执行该存储过程,则这些请求应以串行方式依次执行. SQL Server数据库和执行由ado.net处理. 以下任何方法都可以帮助实现这一目标吗?什么是最合适的方法?还有其他方法可以达到相同目的吗? 通过将隔离级别设置为“可序列化",通过ado.net事务执行存储过程 在存储过程中使用 sp_getapp ..
发布时间:2021-04-02 19:14:41 C#/.NET

Cassandra行级隔离

我在cql中创建了一个表: create table isolation_demo(key text,column1 text,column2 text,column3 text ,primary key(key,column1,column2)); 我有2条语句. update isolation_demo set column3 ='ABC' where key =1 and ..
发布时间:2020-07-11 19:10:37 其他开发

事务隔离-插入取决于先前的记录值

这个问题与讨论另一件事有关/来自: 什么是订单的正确隔离级别标头-订单行交易? 想象一下我们有常规的Orders_Headers和Orders_LineItems表的情况.还可以说我们有一条特殊的业务规则,内容为: 每个订单都有“折扣"字段,该字段是根据上次输入的订单经过的时间计算的 如果最近Y小时内有超过X个订单,则将特别计算每个下一个订单折扣字段. 如果最近10个订单的 ..
发布时间:2020-07-11 19:09:26 数据库

仍然可以读取[Postgres]中的锁定行吗?

如果我SELECT... FOR UPDATE事务中的一行,显然会阻止该行被写入,但是否也不允许读取?我希望仍能从该行中读取内容,因此,如果答案是肯定的,您可以提供解决方案吗? 解决方案 您可以很好地阅读.有一些锁定模式可以防止读取,但这不是其中之一. http://www.postgresql.org/docs/current/static/explicit-locking .ht ..
发布时间:2020-07-11 19:09:23 其他开发

如果从一个存储过程中调用另一个设置较低事务隔离级别的存储过程,可以吗?

我有一堆实用程序,它们只是检查数据库中的某些条件并返回标志结果.这些过程以READ UNCOMMITTED隔离级别(与WITH NOLOCK等效)运行. 我还具有在SERIALIZABLE隔离级别下运行的更复杂的过程.他们碰巧也有同样的检查. 因此,我决定从那些复杂的过程中调用这些检查过程,而不是复制检查代码. 基本上看起来像这样: CREATE PROCEDURE [db ..

如何仅在SQL Server中选择UNCOMMITTED行?

我正在研究需要查询实时CRM系统的DW项目.标准隔离级别会对性能产生负面影响.我很想使用未提交的未锁定/事务隔离级别.我想知道有多少行是通过脏读识别的. 解决方案 也许您可以这样做: SELECT * FROM T WITH (SNAPSHOT) EXCEPT SELECT * FROM T WITH (READCOMMITTED, READPAST) 但这是天生的不道德行为. ..
发布时间:2020-07-11 19:08:15 数据库

在Django中,如何实现事务的可重复读取?

我有一个函数,可以对同一数据集执行多个查询,并且我想确保所有查询都可以看到完全相同的数据. 就SQL而言,这意味着支持它的数据库的REPEATABLE READ隔离级别.我不介意如果数据库不具备更高级别的权限,甚至没有完全锁定的权限. 据我所知,事实并非如此. IE.如果我在一个Python Shell中运行类似这样的代码: with transaction.atomic(): ..

避免“丢失更新"的最小事务隔离级别.

使用SQL Server的事务隔离级别,您可以避免某些不必要的并发问题,例如脏读等. 我现在最感兴趣的一个是丢失的更新-事实是两个事务可以覆盖彼此的更新而没有人注意到.我看到并听到关于至少必须选择哪种隔离级别来避免这种情况的矛盾声明. Kalen Delaney在她的"SQL Server Internals"一书中说(第10章-事务和并发-第592页): 在“读未提交"隔离中, ..
发布时间:2020-07-11 19:07:01 数据库

NOLOCK与事务隔离级别

使用"SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"和NOLOCK有什么区别?一个比另一个好吗? 解决方案 它们是同一件事,只是作用域不同. NOLOCK基于每个表放置,并且SET Transaction...可以作为块放置. ..
发布时间:2020-07-11 19:06:58 数据库

PostgreSQL触发器:禁用自动提交并设置隔离级别

我在数据库INSTEAD OF INSERT上的表上编写触发器,该触发器进行了一些操作,然后将数据插入到不同的相关表中.现在我需要禁用自动提交并在触发器内设置不同的隔离级别,该怎么办? 解决方案 除嵌入式SQL外,PostgreSQL没有禁用自动提交的设置.如果您尝试关闭自动提交功能(例如PSQL),则会看到类似此错误的信息. sandbox=# set autocommit=off ..