我正在构建一个大规模的数据库,其中有许多事务操作(插入,更新,选择),使用的是MySQL MyISAM。
我正在考虑在敏感表上使用锁定和解锁表。如果:
用户A有一个更新过程(首先锁定表),而仍在处理过程中,用户B和用户C尝试访问同一张表和行(无论是更新/选择)。
- B和C是否会立即收到关于表被锁定的SQL错误?
- MySQL在返回错误前是否有锁定超时时间?如果有锁定超时时间,如何检查服务器上的超时时间?
- 有没有比锁定表更好的解决方案?我们正在考虑为任务队列创建一个表。但我认为性能会非常低下。
这个表非常敏感,如果我不能防止这种情况发生,它将混乱不堪。
感谢您的回答。
InnoDB
引擎,因为它支持事务和行级锁定。 - Stephan