如果许多用户访问数据库,那么有必要对数据库进行锁定吗?如果是,那么如何锁定表或数据库?如果不锁定会有什么问题? 例如:如果用户更新表并从该表中获取数据,那么是否需要对此表进行锁定?
答案 0 :(得分:2)
您应该使用Transactions
:
当用户更新表时,UPDATE
语句应该在START TRANSACTION
子句内。如果UPDATE成功,则COMMIT
其他ROLLBACK
。
您可以使用LOCK TABLES
锁定表格。但是,如果使用LOCK TABLES锁定表,则所有更新都会停止,直到进行完整性检查。如果为在表末尾启用并发插入的表获得READ LOCAL
锁(而不是写锁),则允许读取,以及其他客户端的插入。
http://dev.mysql.com/doc/refman/5.5/en/commit.html
http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-transactions.html
答案 1 :(得分:1)
根据您的事务隔离级别,MySQL将自动发出锁定。它们如何交互取决于事务隔离级别。
只有在非常特定的情况下,您才会手动请求对表或数据库资源的锁定。大多数情况下,这是由MySQL为您完成的。上述答案包含了阅读和理解非常重要的链接。