在mysql中使用database命令锁定整个数据库?

时间:2011-12-20 20:24:19

标签: mysql performance

我有一个关于mysql的严重性能问题 存储引擎是myisam 我在慢日志中找到这样的模式:
如果更新命令很慢,use database_name将在它前面,锁定时间会很长。

确实使用database_name命令锁定整个数据库?将database_name命令刷新缓存,然后在更新命令中有不良影响吗?

3 个答案:

答案 0 :(得分:2)

不,use database命令的成本不高。

但是如果使用MyISAM,UPDATE语句会锁定整个表。您可能会看到多个UPDATE语句相互排队。

我建议对所有表使用InnoDB。不仅因为它支持行级锁定(实际上MVCC比行级锁定更好),而且InnoDB在抵抗数据损坏方面优于MyISAM。

答案 1 :(得分:1)

use database 锁定数据库。它只是提供了一个默认数据库,以便在将来的查询中引用。

答案 2 :(得分:1)

没有命令既不锁定数据库也不刷新,只是当有许多数据库可供选择时,它只是更容易引用一个数据库。您可能需要查看documentation

如果您的查询时间很慢,或许可以查看您是否正在对数据库进行任何密集更新,因为MyISAM会在更新时锁定表(而不是像InnoDB这样的行)。

相关问题