如果一个数据库被许多用户访问,那么是否有必要锁定数据库?如果是,那么如何锁定表或数据库?如果不带锁有什么问题?例如:如果一个用户更新表并且有人从这个表中获取数据,那么有必要锁定这个表吗?
问问题
1088 次
2 回答
2
你应该使用Transactions
:
当用户更新表时,UPDATE
语句应该是 insideSTART TRANSACTION
子句。如果 UPDATE 成功,则COMMIT
else 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 回答