如果两个用户向数据库(例如 MySQL)查询同一张表,是否会依次执行查询?
假设我们有一个请求INSERT INTO instances (product_id) VALUES (1), (2),
......等等,直到(1000)
假设user1访问数据库并进行类似的查询。同时,user2发出同样的请求。
这些查询将如何在数据库中执行?首先会执行user1的整个请求,然后才会执行user2的请求?还是它们会同时运行?
那些。例如,插入 user1 的记录,然后插入user2的记录INSERT INTO instances (product_id) VALUES (1)
,然后是user1等?INSERT INTO instances (product_id) VALUES (1)
INSERT INTO instances (product_id) VALUES (2)
这取决于隔离级别。某些级别允许您在执行与特定表相关的 DML 语句时发生争用。这会在表和由该语句修改的记录上创建锁。这是如何发生的以及数据库使用什么机制来解决冲突最好阅读有关MySQL 中的 Locks 和 InnoDB Transaction Isolation Levels 的信息。