我想了解 postgreSQL 如何执行多查询,例如我有一个数据库,其中有很多插入查询在运行,例如每分钟 20-40 次,还有很多选择查询,例如每分钟 200-300 次(简单查询通过主键选择)。
这种类型的查询在同一张表上运行,我很好奇 postgreSQL 如何处理这些查询。就像当插入查询运行时表被锁定并且我们必须等待选择查询或者它是行锁定以便在插入查询正在进行时选择查询可以继续并忽略锁定的行?
我猜在 mysql 数据库中有执行表锁定的 MyISAM 引擎和执行行锁定的 innoDB ...
最佳答案
Postgres 实现 multiv version concurrency control (MVCC) 这意味着读者永远不会阻止作者,而作者也永远不会阻止读者。
对于普通的 DML 语句,Postgres 也从不获取表锁,因此 SELECT 查询永远不会被您同时运行的任何 INSERT 语句阻塞。
Postgres Wiki包含指向有关 MVCC 在 Postgres 中是如何实现和工作的更详细描述的链接。
如今,基本上每个现代 DBMS 都使用某种 MVCC。 Oracle、Firebird 和 DB2“一直”都在使用它。 SQL Server 在 SQL Server 2005 中引入了它(虽然它仍然不是默认行为)并且在 MySQL 中 InnoDB 引擎使用它。
关于database - postgresql db 表锁定或行锁定多查询执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52439638/