问题标签 [database-locking]

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 投票
0 回答
43 浏览

performance - 频繁添加到 Cassandra 中的集合的性能如何?

我正在尝试经常向集合(Cassandra 集合)添加值。我有一个架构设计,例如,

频繁访问数据(类型文本,值集);

现在在我的每个存储操作中(速度更快,例如每秒 10000 条记录),我正在执行以下更新语句。

更新频繁访问数据集值 = 值 + :new_value where type='TYPE1'"

因此,在该语句中,有时 new_value 已经存在于值集合中,而有时则不会。所以我盲目地运行更新。效率如何?

“if”子句会有什么不同吗?如果是,我该如何利用它?

我也读过,Cassandra 不会锁定行进行更新。真的吗 ?因为 RDBMS 将其锁定并使其更新速度变慢。

0 投票
2 回答
1502 浏览

jakarta-ee - Sybase ASE 中的锁未释放

我的应用程序在 Jboss 2.4 上的 EJB 1.1 上运行并使用 Sybase。最近我们看到一个问题,即特定表上存在无限期锁,这导致后续查询等待锁被释放,因此整个应用程序失败。数据库管理员声称该应用程序没有释放任何锁,并且我们没有对处理该特定表的代码进行任何更改。我的问题是 Jboss 2.4 是否有任何常见问题需要检查或需要寻找任何特定区域?

我运行的查询只是一个带有 read_committed 事务隔离的简单选择/更新语句。我从 jboss 池中获取连接并执行选择或更新,然后关闭连接、语句和结果集。

为什么问题是随机发生的?

很抱歉,我无法提供任何代码。

0 投票
1 回答
908 浏览

mysql - MySQL 为特定查询指定 innodb_lock_wait_timeout

我正在使用 MySQL 5.6。我的应用程序中有一个特定的查询,我不想受到全局 innodb_lock_wait_timeout 设置的影响。有什么方法可以指定这个特定的查询在超时之前应该等待不同的时间来锁定?

0 投票
2 回答
646 浏览

database - 发生数据库锁时,哪些数据被锁住了?

我读到了

“当多个用户需要同时访问数据库时会发生锁定。”,(参考

或者

“存在数据库锁是为了防止两个或多个数据库用户在同一时间更新相同的确切数据”-(参考)。

不过,我不明白发生数据库锁定时哪些数据被锁定。

第一个例子,两个用户同时运行 sql 来选择多行。用户 1 先走。

用户 1:select * from products where price > 100;

用户 2:select * from products where price < 100;

用户 1 查询会为用户 2 锁定数据库吗?

第二个示例,用户 1 想要更新产品表。用户 2 想要从产品表中选择数据。用户 1 先走。用户 1 的操作会为用户 2 锁定数据库吗?

谢谢!

0 投票
1 回答
1302 浏览

mysql - 锁定数据:MySQL5.7.11 中具有 REPEATABLE-READ 的最高伪记录

MySQL5.7.11,tx_isolation 是 REPEATABLE-READ;

像这样的表:

在 session1 中,执行如下:

然后在 session2 中,执行:

session2被阻塞了,我认为session2被阻塞是因为GAP锁,但是在information_schema.innodb_lock中,显示了supremum pseudo-record和RECORD Lock;

MySQL_Doc 描述如下:

为什么 Record Lock 和 lock_data 是 supremum 伪记录?

0 投票
2 回答
906 浏览

python - 如果已在 Django 中删除,如何更新对象或保释

我有一个 Django 应用程序将对象保存到数据库和一个 celery 任务,它定期对其中一些对象进行一些处理。问题是用户可以在 celery 任务选择进行处理之后,但celery 任务实际完成处理和保存之前删除一个对象。因此,当 celery 任务确实调用 时.save(),即使用户删除了该对象,该对象也会重新出现在数据库中。当然,这对用户来说真的很可怕。

所以这里有一些显示问题的代码:

我想过通过添加一个原子块和一个事务来尝试修复它,以在保存之前测试对象是否确实存在:

这是做这种事情的正确模式吗?我的意思是,我会在生产中运行它的几天内找出它是否可以工作,但是很高兴知道是否有任何其他被广泛接受的模式来完成这类事情。

我真正想要的是能够更新一个对象,如果它仍然存在于数据库中。我对用户编辑和来自 的编辑之间的竞争感到满意process_thing,我总是可以在refresh_from_db之前添加一个,process_thing以最大限度地减少用户编辑丢失的时间。但是在用户删除它们后,我绝对不能让对象重新出现。

0 投票
1 回答
1030 浏览

mysql - MySQL 中的 UPDATE ... WHERE 事务是否会锁定从子查询引用的其他表中的行?

在 MySQL(使用 InnoDB 和 REPEATABLE READ 隔离级别)中发出包含如下子查询的 UPDATE 语句时:

InnoDB 引擎是否会仅锁定表中所有受影响的行,还是会在整个查询期间锁定表中bar所有访问的行(共享或独占)?foo

JOIN 和子查询有什么区别吗?

0 投票
2 回答
741 浏览

php - Oracle 脏读

我是使用 Oracle 数据库 11g 的新手。

我正在使用 SQL Developer 测试表和行锁。

我的表中有这样的一行:

  • 编号:1
  • 描述:'abc'

我进行了更新而没有提交将字段更改desc'zxc'. 在另一个会话中,我做了一个返回旧记录的选择:

  • 编号:1
  • 描述:'abc'

我在想它会给我一个错误或其他东西,因为我不想看到旧数据。

最后,当我在另一个会话中提交时,我在第二个会话中再次执行了查询并返回了提交的数据。

如何防止读取旧数据?

更新:

我阅读了有关 sql“SELECT FOR UPDATE”的信息,它阻止获取未提交的行,但例如有人告诉我有关银行的信息,所以我不确定这种方法是否具有良好的性能,其他问题是关于没有提交的连接丢失. 也许我需要使用函数或 PLSQL 来最小化丢失的连接,实际上我正在使用 PHP 脚本(Laravel 框架)。

提前致谢。

0 投票
1 回答
2930 浏览

hibernate - 休眠防止更新时锁定记录

我有一个漫长的过程,在我的数据库中的每个用户上运行并更新“分数”和“命中”字段,当它正在运行时,有时用户尝试更新他的姓名/电话等,当这种情况发生时用户更新失败:

问题是,我知道用户无法更新他的得分/命中字段,所以我可以防止该行被锁定并允许两个更新运行吗?(我正在使用休眠@DynamicUpdate,因为我认为这会阻止锁定,因为查询只会更新更改的字段,但没有运气)

顺便说一句,我正在使用带有 java 8 的 spring boot 1.3.3.RELEASE,(在 tomcat 中运行。

* 更新 *

为了回答@Thierry 的问题,我正在为所有用户得分/点击更新使用一笔大交易。我必须立即更新所有用户。而且我不能阻止用户在这个过程运行时更新他们的记录,因为这会严重影响他们对系统的使用。

* 更新 2 *

所以经过大量搜索后,我想我找到了我想要的东西。根据这篇文章: http: //www.intertech.com/Blog/hibernate-optimistic-lock-without-a-version-or-timestamp/,当我使用锁类型脏和动态更新设置乐观锁时:“这替代方案允许其他并发进程更新同一行,只要它们不修改相同的列。” 问题是我将我的实体设置为:

而且我仍然得到锁定异常。我还在做错什么吗?

0 投票
1 回答
6928 浏览

db2 - 查找持有锁的查询

我们如何在 DB2 10.5 中找到导致锁定的查询和进程 ID?

我们可以为“get snapshot for locks on dbname”命令找到表和表空间名称。但我想知道查询和进程 ID。