如果两个用户同时在同一个目标表上执行INSERT INTO语句,这些语句是并行执行还是顺序执行?
此行为是否会根据目标表是否具有主键而发生变化?
这是为所有关系数据库定义的规则,还是不同的供应商以不同的方式实现它?
发布于 2012-07-09 15:57:38
通常,如果定义了主键,它们将(应该)并行执行。
这种行为在很大程度上取决于DBMS。例如,如果对表执行MyISAM,则带有DML的MySQL将阻止对表的任何进一步访问。对于默认安装和较早的DB2版本中的SQL Server也是如此。
通常,如果数据库管理系统使用MVCC (Oracle、PostgreSQL、Firebird、MySQL/InnoDB...)然后,您可以预期插入将并行运行。
如果两个事务插入相同的主键值,则会阻塞并发插入。在这种情况下,第二个事务将需要等待第一个事务提交(然后第二个事务将获得pk冲突错误)或回滚(第二个事务将成功)。
https://stackoverflow.com/questions/11390323
复制相似问题