1

如果一个数据库被许多用户访问,那么是否有必要锁定数据库?如果是,那么如何锁定表或数据库?如果不带锁有什么问题?例如:如果一个用户更新表并且有人从这个表中获取数据,那么有必要锁定这个表吗?

4

2 回答 2

2

你应该使用Transactions

当用户更新表时,UPDATE语句应该是 insideSTART TRANSACTION子句。如果 UPDATE 成功,则COMMITelse 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

于 2012-05-24T10:01:11.237 回答
1

根据您的事务隔离级别,MySQL 将自动发出锁。它们如何交互取决于事务隔离级别。

只有在非常特定的情况下,您才会手动请求对表或数据库资源的锁定。大多数情况下,这是由 MySQL 为您完成的。上面的答案有链接,这些链接对于阅读和理解非常重要。

于 2012-05-24T10:14:48.663 回答