问题标签 [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.
magento - 在 Magento 中完成数据库锁定
我需要确保记录的值在读取时被锁定(以验证是否有一定数量的信用可用),然后我需要更新该记录(同时仍被锁定)以扣除可用信用的数量。有没有最好的方法(或任何方法)通过 Magento 本身来做到这一点?
sql - SQL Server 如何知道锁定视图对象?
在 SQL Server 2008 中,我V
对表有一个视图A
,B
看起来大致像
读取 fromV
会导致查询在基表上获取意向共享锁,但也会在视图对象本身上获取意向共享锁。
很清楚为什么我们需要表上的 IS 锁,我们可以看到视图上的 IS 锁可以防止对视图下的表进行并发修改。没关系。
查询计划没有提及视图。它已完全编译出来,在这种情况下,生成的计划是两个基表中行的简单串联。实际上,查询计划 XML 中唯一提到视图的是语句文本。
如果您U
在表上添加第二个视图,则读取 fromV
不会导致任何锁定U
。这排除了引擎只对所有视图进行 IS 锁定A
和B
。
数据库引擎如何知道要锁定视图?
- 语句文本是否再次解析?
- 查询计划器和底层执行之间是否有其他信息渠道来传递这些信息?
有关详细信息,请参阅相应的问题dba.stackexchange
。
android - Android中的多个数据库连接(来自Activity和Service)
我想使用 SQLite 数据库将数据存储在 Android 应用程序中。没问题。但是在预定义的时间间隔(每天 10、14、18 和 22 点),我想运行一个IntentService
也需要访问数据库的程序。问题来了:
当用户在IntentService
启动时使用应用程序时,会出现问题,因为 中有一个数据库连接处于活动状态,Activity
而IntentService
. 所以数据库将被锁定并且IntentService
会失败,对吗?
我如何实现这一点,在这些情况下,IntentService
只是等待Activity
完成当前操作(SELECT
,UPDATE
等)然后正常运行?
在我的活动中,我在 中打开数据库连接(通过SQLiteOpenHelper
)并在 中onCreate
关闭它onDestroy
。这是否意味着 IntentService 在此期间没有机会在数据库上工作?
ms-access - 如果您尝试更新 JET 中的锁定记录,会发生什么情况?
如果我使用 JET/DAO 在使用锁定的 MDB 数据库上打开记录集dbPessimistic
,如果另一个用户当时尝试更新该记录集中的行会发生什么情况?会出现错误,还是 JET/DAO 会一直尝试直到解锁行?
java - 一台机器上出现“数据库锁定”错误,但另一台机器上一切正常
在 Java 上使用带有 JDBC 连接器的 SQLite,我的代码中经常出现这个“数据库锁定”错误。奇怪的是,我将整个程序压缩到其中的 jar 文件在我的 Macbook 上运行良好,但在 Windows 机器上运行时出现此错误。此外:
该程序只有一个线程,因此它可能不是并发问题。
该代码在给出错误之前对数据库进行了一些操作,所以我也不认为这是文件权限问题。
我没有详细介绍我的代码,因为我认为这没有必要。顺便准备这样做。有任何想法吗?
java - Hibernate 删除/插入数据库阻塞锁
我们正在使用Hibernate 3.6.1.FINAL
反对Oracle 11g
.
我们在数据库中遇到阻塞锁,我认为这是由 Hibernate 的意外副作用引起的。
这是我们需要解决的关键问题,因为数据库阻塞锁迅速滚雪球,事务开始超时,导致生产中断。
我试图弄清楚是否存在 Hibernate 可以在幕后删除和重新插入一组子项的特定场景,或者以某种方式可能导致删除/插入上的阻塞锁。
我正在寻找有关可能原因的想法/建议/见解,不一定是确切的答案。
我已经隔离了所涉及的实体及其映射。不幸的是,由于我们有一个包含大量代码的庞大遗留系统,我不得不想出一个简化的例子:
父.hbm.xml
Child.hbm.xml
我们的 DBA 报告说他们看到以下内容:
阻塞的 SQL:
阻塞 SQL:
这是我迄今为止尝试过的:
对我们的代码库进行了全面审核,确定我们无法删除和插入具有相同主键的行。我们所有的 INSERT for Child 都是在 ID 设置为 null 的情况下完成的,在这种情况下,Sequence 将生成唯一 ID。
打开 show_sql。此外,DBA 在 Child 上设置了一个触发器来捕获所有 DML 活动,因此我们可以在开发中获取绑定变量。
我发现以下文章说 Hibernate 可以删除所有然后重新插入包和列表:
但是,我确定这不会发生。我编写了测试代码,删除了中间的一个子对象(ORD=5,包含 10 个 ORD=0 到 ORD=9 的子对象),然后保存父对象。
我在 DML 活动表中看到,对已删除的子项发出了删除操作,并对其余 9 个将其 ORD 设置为正确值的子项执行了更新。
正如我所提到的,我不是在寻找确切的答案。如果任何对 Hibernate 有丰富经验的人可以就我可能遇到的其他路径或途径提供任何见解或建议,我将非常感激。
非常感谢您提前。
java - 特定查询的 SQLite 'Database Locked' 奇怪错误
我正在使用 Java 开发一个项目,我必须在我的 SQLite 数据库中进行修改。我连接到它并且工作得很好,除了这个奇怪的错误。
语句完美运行s.executeUpdate("INSERT INTO STUDENTS VALUES('S0',11)");
并将 s.executeUpdate(c2);
行插入数据库。但是当谈到下面的语句时,我得到了奇怪的数据库锁定错误。当我将查询更改为另一个时,它也工作得很好。到达结束语句时出现错误。更准确地说,上面编写的所有查询,即这里代码的第一条语句都工作得很好。
请帮助我找到错误。
sql-server - SQL Server 中的默认锁定粒度是多少?
我已经彻底阅读了有关表提示的 MSDN,但我似乎没有找到默认的锁定粒度。假设我有以下查询:
你看,我指定了UPDLOCK
和READPAST
提示,但没有指定任何粒度提示,例如TABLOCK
or ROWLOCK
。
默认使用哪个粒度锁定级别?
sql - 处理大量 XML 如何不锁定数据库并获得最佳性能?
我有一个处理一些 XML 并将其规范化为多个表的数据库过程。我不是一个庞大的数据库人,对数据库锁了解不多,所以我主要是想知道我所做的任何事情是否完全错误。
首先,有一个results
表,其中包含类似于以下内容的内容:
我的存储过程如下所示:
因此,除此之外,该过程还将处理其他基于计算机的属性,所有这些属性都来自同一个results.rawData
表/列。
我对这段代码的问题是:
在此处理过程中,可能会不断地将其他条目添加到 results.rawData 表中。从 XML 节点中选择来创建我的临时表需要一些时间,我担心在这种情况下尝试插入表中的任何内容都可能被迫等待。通过使用
resultId
过程开始处的列,我尝试创建该过程将一次处理的数据范围。在此处理时间内,可以查询其他表(例如找出计算机上存在哪些软件)。由于我只对这些表进行了一次简短的批量插入,因此我假设那里应该没有问题。
该
#TempSoftware
表没有索引,我对两NVARCHAR(MAX)
列进行连接。是否值得在此表上创建索引?或者创建索引的开销会比连接更糟。我在这里做了什么愚蠢的事,我应该被打吗?
感谢您的任何建议。同样,我不是一个大数据库人。我假设直接在数据库中进行所有处理比将原始数据拉回 C#、进行处理并重新插入数据库要好。
mongodb - 为什么在 MongoDB 中使用锁定?
MoongoDB来自NoSql时代,Lock是和RDBMS有关的东西?来自维基百科:
乐观并发控制(OCC)是一种用于关系数据库管理系统的并发控制方法...
那么为什么我在 PyMongo 中找到is_locked
,甚至在进行非阻塞调用的驱动程序中,Lock 仍然存在,Motor 有is_locked
。