问题标签 [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.

0 投票
1 回答
2005 浏览

oracle - Oracle 索引 - 全表扫描/锁定

在这里找到这个:

通常,在以下任何一种情况下,请考虑在列上创建索引:

  • 索引列上存在参照完整性约束。索引是一种避免全表锁定的方法,如果您更新父表主键、合并到父表或从父表中删除,则该全表锁定是必需的。

我不明白为什么在这种情况下会发生全表锁。我会认为,如果我尝试删除/更新父表中的主键,则会对子表执行全表扫描。

锁从何而来?

0 投票
3 回答
678 浏览

mysql - 导入mysql数据库出错

我从生产中转储了一个数据库。我想导入我的本地数据库

但它显示了一些错误

第 25 行的错误 1005 (HY000):无法创建表 'table_account' (errno:13)

而且我无法导入表格。当我尝试导入特定数据库时会出现此问题。试图导入其他一些数据库。它工作正常。

任何人都可以解决这个问题。

提前致谢。

0 投票
2 回答
74 浏览

mysql - 在 Web 服务器级别锁定 MySQL 表

假设我有一个 Web 应用程序(在服务器端使用 Django),并且我希望其中一个用户(类似管理员的用户"A")能够加载某个视图(网页),她可以在其中修改数据库表将阻止其他用户访问数据库(以及与修改数据库相关的视图),直到用户A完成(按下页面上的某个按钮)。我正在使用 MySQL 和 SQLite(用于开发)。这是我的问题。

  1. MySQL 锁定表机制在 MySQL 服务器级别而不是 Web 服务器级别上工作。由于应用服务器 (Django) 端只有一个 MySQL 用户与 MySQL 服务器关联(即所有应用程序用户在 MySQL 端都将具有相同的用户),因此该机制在这里无关紧要。我对么?

  2. 如果 1. 以上是正确的,那么创建这样一个锁的正确方法是什么?好吧,可以创建一个单独的表“lock_table”,它只有一个布尔条目,每个视图都会轮询它,如果它被设置 - 重定向到“db临时锁定”视图。但是,我不确定这是一个好方法。如果您知道,请告知如何实施它。

谢谢。

0 投票
1 回答
384 浏览

php - 如何确保我没有从多个进程更新同一记录?我需要桌子锁吗?

我正在开发一个使用 MySQL 数据库作为后端的项目(从 PHP 访问)。有时,我选择一行,对其进行一些操作,然后更新数据库中的记录。

我担心另一个用户可能会在第一次选择后立即在同一行上启动类似的过程,并且他的更改可能会覆盖第一个用户所做的一些更改(因为第二个用户的选择尚未包含这些更改)。

这是一个实际的问题吗?我应该锁定表吗?这不会严重影响我的应用程序的性能吗?还有其他解决方案吗?

为了全面了解我的信息,我还运行了一些 CRON 作业,它们也可能正在修改相同的数据。

谢谢!

0 投票
1 回答
156 浏览

c# - SQL 连接/命令正确管理(避免表锁定)?

我正在为 .NET 项目建立一个连接工厂,我想问一下最好的方法是什么。我有一个问题,以前的 Log 类由于表 LOCKS(或者他们说)而无法正确写入日志,所以我的任务是设置一个新的数据层,(希望)解决这个问题以及其他一些小问题问题。

现在,代码:

我将主要使用程序,但可能有一个或另一个奇怪的请求,如果需要我们会输入一个查询,所以我想我必须以某种方式添加一个 SqlCommand:

但是,这个命令应该是静态的吗?还是应该在每次执行新查询时创建一个新查询?主要考虑避免锁,是有多个命令还是只有多个连接引起的?我该如何避免和正确处理这个问题?

0 投票
1 回答
720 浏览

sql - 当我在触发器内执行存储过程时发生锁定

我有一个执行两个程序的触发器。

两个程序的执行时间为 5 分钟。当我尝试向 T_TRIGGER_TABLE_FOR_SYNCH 表插入一个值时,我在存储过程中使用的其他表被锁定了 5 分钟。但是当我尝试直接执行两个程序时

没有锁发生。我应该在触发器中写什么以避免表锁。

谢谢。

0 投票
2 回答
3048 浏览

mysql - Mysql - 表锁错误

我遇到了一些表锁定问题。我在事务中锁定了一定数量的表。LOCK TABLES t1 READ, t2 READ, t3 READ, t4 READ,t5 READ,t6 READ,t7 READ;

虽然读取它没问题,但是当我尝试写入/更新此表时,它显示错误表 't1' is locked with a READ lock and can't be updated

但是我从来没有锁定表进行写入,我必须用更新的值写入这些表。

我的目标是我需要选择并且我需要更新行,而其他人不应该与上面的表交互,直到过程完成。

非常感谢您的解决方案!

0 投票
0 回答
521 浏览

c# - Possible solution for locking the table in sqlserver using asp.net

I have been working on a software which uses database which is shared with multiple PCs. The project is all about to store missing baggage information. We have given a facility to copy the newly inserted record into the master DB. Now what here happens is when multiple users are trying to update the db at the same time single item get stored for multiple time in the global DB.

So I have tried to use TableLock using serializable but I got nothing here.

Edit

And the updateitem() is as follow

P.S.: I want it to be done though ASP.Net.

0 投票
2 回答
1692 浏览

php - 使用表锁防止并行执行(MySQL)

我有一个名为 cronjobs 的 MySQL 表,它包含每个需要的 cronjob 的完整信息(例如删除旧电子邮件、更新个人资料年龄等)。对于每个 cronjob 都有一个定义的代码块,如果 cronjob 到期(我对不同的 cronjobs 有不同的时间间隔),就会执行该代码块。

为了执行到期的 cronjobs,我得到了一个由 UNIX crontab 每分钟执行一次的 PHP 脚本(调用 execute_cronjobs_due.sh,它调用“php -f /path/to/file/execute_cronjobs_due.php”)。

当执行 execute_cronjobs_due.php 时,所有的 cronjobs 都会被标记为它们将被执行,因此另一个 execute_cronjobs_due.php 调用不会导致同一个 cronjob 的并行执行已经被执行。

现在的问题是:有时执行需要超过 60 秒,但 crontab 程序在这 60 秒后没有调用 execute_cronjobs_due.sh。实际发生的是 execute_cronjobs_due.sh 在执行前一个 crontab 之后立即被调用。如果一次执行时间超过 120 秒,接下来的两次执行将同时初始化。

时间线:

2015-06-15 10:00:00:执行 execute_cronjobs_due.sh(需要 140 秒)

2015-06-15 10:02:20:execute_cronjobs_due.sh 的两个同时执行

由于它是同时执行的,因此没有使用标记它们正在执行的 cronjob,因为选择(实际上应该排除标记的一次)是在完全相同的时间执行的。因此,更新发生在两者都已经选择了到期的 cronjobs 之后。

我该如何解决这个问题,以使 cronjobs 不会同时执行?我可以使用 MySQL 表锁吗?

非常感谢您提前提供的帮助,

弗雷德里克

0 投票
1 回答
24 浏览

delete-row - 显式表锁定以禁用 DELETES?

使用 Oracle 11gR2:

我们已经有一个流程,它通过删除超过指定保留日期的记录(基于记录完成处理时的时间戳与保留日期之间的比较)来清理特定表。我目前正在编写代码,如果此过程失败,它将提醒我的团队。我可以看到这个过程可能失败的唯一方法是如果在它试图清理的特定表上禁用了 DELETE。

我想通过让进程失败来测试警报以确保它们正常工作并且看起来正确。如果我暂时以独占方式锁定表,是否会禁用 DELETE 并导致删除记录的过程失败?还是仅禁用 DDL 操作?有一个更好的方法吗?