我有一个关于mysql的严重的性能问题。
存储引擎是myisam。
我在慢日志中发现了这样的模式:
use database_name
在其前面,锁时间较长。
是否使用database_name命令锁定整个数据库?database_name命令是否会刷新缓存,然后在更新命令中产生不良影响?
不,使用数据库命令不会有很大的开销。
但是如果使用MyISAM, UPDATE语句会锁定整个表。您可能会看到多个UPDATE语句相互排队。
我建议所有表都使用InnoDB。InnoDB不仅支持行级锁(实际上是MVCC,比行级锁更好),而且在抗数据损坏方面也优于MyISAM。
use database
does not锁数据库。它只是提供了一个默认的数据库,供将来查询时参考。
不,该命令既不锁数据库也不刷新数据库,它只是使在有许多数据库可供选择时更容易引用一个数据库。你可能想看一下文档