数据库查询中的锁

Locks in database queries

当我们查询 mysql 到 sql 时是否隐式应用了锁? 当我从数据库读取,从数据库写入时应用什么类型的锁?这种锁在用于实时应用程序的数据库中如何发挥作用?

问:当我们查询 mysql 到 sql 时,是否隐式应用了锁?

答:是的。

问:当我从数据库读取,从数据库写入时应用什么类型的锁?

答:这取决于存储引擎(MyISAM、InnoDB 等)

MyISAM 使用 "table level" 锁。它使用 "share" 锁进行读取,使用 "exclusive" 锁进行写入。

InnoDB 同时使用 "table level" 和 "row level" 锁,并受会话隔离级别(REPEATABLE-READ、READ-COMMITTED 等)的影响

关于 MySQL 锁定的完整讨论对于 Whosebug 上的答案来说太深入了。

问:这个锁在用于实时应用程序的数据库中如何发挥作用?

A:锁机制的功能相同,存储引擎并没有真正区分应用程序是 "real time" 还是其他。 InnoDB 锁定没有特定的 "real time" 设置。

我们的应用程序需求将影响我们的数据库设计和实施决策。