问题标签 [table-lock]
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.
java - Hibernate - 在多态查询中对父表应用锁
我有两个对象:
这些表中的每一个对应于数据库中的不同表。我正在使用 Hibernate 来查询 ChildObject,这将依次填充父对象的值。
我已经这样定义了我的映射文件:
我可以使用休眠来毫无问题地查询这两个表。
我用
这是所有基本的休眠内容。但是,我遇到的问题是我需要对查询中的所有表应用锁。
我可以使用 query.setLockType("child", LockMode.?) 设置子对象的锁定类型。但是,我似乎找不到在父表上加锁的方法。
我是 Hibernate 的新手,并且仍在解决一些心理障碍。问题是:如何在父表上加锁?
我想知道是否有办法在不撤消我设置的多态结构的情况下做到这一点。
php - mysql锁定问题
调查/研究 mysql/myisam 锁定。试图找到一个很好的例子来说明如何在 appA 中设置锁,并确定/检测 appB 中的 tbl 锁。
搜索谷歌,没有看到太多,所以我一定错过了一些东西。
我将编写一个演示此过程的 php 应用程序。
指针/想法/谢谢..
-汤姆
ruby-on-rails - Rails 运行多个延迟作业 - 锁定表
嘿。我使用delayed_job 进行后台处理。我有 8 个 CPU 服务器,MySQL,我启动了 7 个延迟作业进程
Q1: 我想知道是否有可能 2 个或更多延迟作业进程开始处理同一个进程(数据库延迟作业中的同一记录行)。我检查了delayed_job 插件的代码,但找不到应有的锁定指令(没有锁定表或SELECT...FOR UPDATE)。
我认为每个进程都应该在 lock_by 列上执行 UPDATE 之前锁定数据库表。他们只需通过更新locked_by 字段来锁定记录(UPDATE delayed_jobs SET locked_by...)。真的够了吗?不需要锁吗?为什么?我知道 UPDATE 比 SELECT 具有更高的优先级,但我认为这在这种情况下没有效果。
我对多线程情况的理解是:
我认为在某些情况下,更多的工作可以获得相同的信息并可以开始处理相同的流程。
Q2: 对于 8CPU 的服务器来说,7 个延迟作业是一个好的数字吗?为什么是/不是。
谢谢 10 倍!
sql - Mysql语法帮助
询问:
我试图在 mySQL db 中使用 nolock 选项进行优化查询,但由于某种原因,上述查询不起作用,我收到的错误是
您的 SQL 语法有错误;
有什么想法吗?
sql - 来自 C# 的持久 SQL 表锁
我正在尝试在表级别创建持久 SQL (SQL Server 2005) 锁。我没有更新/查询指定的表,但我需要防止第三方应用程序更新锁定的表,以防止事务被发布(我希望锁定的表是他们事务中干扰的关键我的处理)。
根据我的经验,该表仅在特定事务发生时被锁定。有任何想法吗?
第 3 方开发人员已将此功能记录为增强功能,但由于他们正在推出主要版本,因此我预计至少要等待 6 个月。我知道这不是一个很好的解决方案,因为他们的软件会崩溃,但它具有足够关键的性质,我们愿意承受后果。
sql-server - 手动添加表锁到 SQL Server 中的指定表
我想插入一个表,但阻止插入另一个表。例如,可以锁定表a以进行插入,插入表b,然后解锁表a?
TABLOCK 只能锁定我正在插入的表。
谢谢
马丁·皮尔奇
mysql - 即使在处理“选择”查询时,myisam 也会在表上放置表锁?
我正在读这本书High Performance MySQL
,它提到:
MyISAM 会在selecting
什么情况下放置表锁?有人可以解释一下吗?
mysql - 存储过程中“锁定表”的 MySQL 替代方案
如果行不存在,我需要在表中插入一行,我需要使用存储过程来执行此操作。因此,我需要选择检查该行是否已经存在,然后进行插入。我要避免的是竞争条件,其中存储过程的 2 个调用者可能会看到该行不存在,然后都尝试插入该行。
我解决这个问题的第一个想法是锁定表,但不幸的是你不能LOCK TABLE
在存储过程中发出。
我想避免在客户端 (C#) 捕获重复的密钥插入异常。
任何锁定表格或替代解决方案的方法?
sql-server - SQL Server 中的 MS Access 锁定表?
我已经使用 SQL Server 2 年多了,但我是 MS Access 的新手。我刚刚开始将 MS Access 视为访问 SQL Server 的潜在前端/门户,我正在与一位同事交谈,他说如果我的表单不是,我应该警惕 MS Access 锁定 SQL 表的可能性t 编码正确。我以前经历过桌子锁,并且可以理解它们是多么令人沮丧。我的同事提到使用一种称为“传递”的方法来解决问题。谁能帮助我解释正在发生的事情以及“通过”如何解决问题?
php - cron 或 TRIGGER 持续插入 table1 或 CURSOR(或替代)以更新 1m 行 InnoDB table2 而不锁定?
有没有人有任何建议如何实施?
table1 将不断被INSERT
编入。这需要 table2 上的每一行都UPDATE
在每个 table1 上INSERT
。此外,我不知道 MySQL 是否最能负责的算法(相对于 PHP 计算速度)也必须应用于 table2 的每一行。
我想让 PHP 在用户执行的时候处理它INSERT
,但是我发现 PHP 页面在为用户提供连接后不是持久的(或者我明白,请告诉我这是错误的,所以我可以走那条路)。
所以现在我的问题是,如果我UPDATE
在 a 中使用一个总表TRIGGER
,我将拥有大量锁(或者我从 InnoDB 的锁定中了解到,当UPDAT
使用复合主键对整个表进行锁定时,因为该键的一部分将是UPDATE
d)。
现在,我正在考虑使用 cron 作业,但我宁愿他们INSERT
在 table1 上的用户而不是按计划开火。
所以我在想也许是一个CURSOR
...
什么方法最快并且“绝对”不锁定 table2?
提前谢谢了!
表结构
table2 都是INT
速度。但是,它有一个 2 列主键。这些列中的 1 列是UPDATE
d。该键适用于同样重要的 rapid SELECT
s。
table1 平均大约是 table2 行数的 2.5 倍。
table2 实际上非常小,~200mb。