我目前正在建立一个庞大规模的数据库,其中有许多交易。 (插入,更新,选择)使用MySQL MyISAMMySQL锁定系统
而我正在考虑对敏感表使用LOCK TABLE和UNLOCK TABLE。如果发生以下情况,会发生什么情况:
用户A有一个更新过程(首先锁定表),并且在过程中,用户B和用户C试图访问同一个表和行(不管它是更新/选择)。
- B和C会立即得到关于表被锁定的SQL错误吗?
- MySQL在返回错误之前是否有锁定超时?如果发生锁定超时,我如何检查服务器中的锁定超时?
- 比锁定表格更好的解决方案吗?我们正在考虑创建一个工作队列表。但我认为表演会非常糟糕。
该表确实是敏感的,它会搞砸了,如果我不能阻止这个
谢谢您的回答
听起来对你来说,你最好使用'InnoDB'引擎,因为它支持事务和行级锁定 – Stephan
MyISAM不能做事务。我建议你使用MariaDB或Percona,它更加稳定,默认情况下具有更好的锁定功能。您不必进行任何手动锁定。您的备份可能性始终是'backlog'和复制。 – DanFromGermany
您是否需要了解引擎类型及其怪癖,或者您是否想要根据您的规范检查实施作业队列的最佳方法? –