8.11.2 table 锁定问题

InnoDBtable 使用行级锁定,因此多个会话和应用程序可以同时从同一 table 读取和写入同一 table,而不会彼此 await 或产生不一致的结果。对于此存储引擎,请避免使用LOCK TABLES语句,因为它不提供任何额外的保护,而是减少了并发性。自动行级锁定使这些 table 适合于具有最重要数据的最繁忙数据库,同时由于不需要锁定和解锁 table,还简化了应用程序逻辑。因此,InnoDB存储引擎是 MySQL 中的默认引擎。

MySQL 对除InnoDB之外的所有存储引擎都使用 table 锁定(而不是页面锁定,行锁定或列锁定)。锁定操作本身没有太多的开销。但是,由于一次只能有一个会话可以写入 table,因此要与其他存储引擎一起获得最佳性能,请主要将它们用于经常查询且很少插入或更新的 table。

支持 InnoDB 的性能注意事项

选择是使用InnoDB还是使用其他存储引擎创建 table 时,请记住 table 锁定的以下缺点:

解决性能问题的方法

以下各项描述了避免或减少 table 锁定引起的争用的一些方法:

首页