暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[ACDU 翻译] MySQL 8.11.3 并发插入

原创 由迪 2021-06-28
806

MyISAM存储引擎支持并发插入,减少读者和作者之间的竞争给定表:如果一个MyISAM表已经在数据文件中没有孔(中删除的行),一个 INSERT语句可以执行行添加到表的末尾同时该 SELECT语句正在从表中读取行。如果有多个 INSERT语句,它们将与SELECT语句同时排队并按顺序执行 。并发的结果INSERT可能不会立即可见。

所述concurrent_insert系统变量可以被设置为修改并发插入处理。默认情况下,变量设置为AUTO(或 1),并发插入按刚才描述的方式处理。如果 concurrent_insert设置为 NEVER(或 0),则禁用并发插入。如果变量设置为ALWAYS (或 2),则即使对于已删除行的表,也允许在表末尾进行并发插入。另请参阅concurrent_insert系统变量的说明。

如果您使用的是二进制日志,并发插入将转换为CREATE ... SELECTor INSERT ... SELECT语句的正常插入。这样做是为了确保您可以通过在备份操作期间应用日志来重新创建表的精确副本。见第 5.4.4 节,“二进制日志”。此外,对于这些语句,读取锁定被放置在 selected-from 表上,从而阻止插入到该表中。结果是该表的并发插入也必须等待。

使用LOAD DATA,如果您指定 CONCURRENT一个MyISAM 满足并发插入条件的表(即中间不包含空闲块),则其他会话可以在LOAD DATA执行时从该表中检索数据。使用该 CONCURRENT选项会LOAD DATA稍微影响性能 ,即使没有其他会话同时使用该表。

如果指定HIGH_PRIORITY--low-priority-updates如果服务器是用该选项启动的,它会覆盖该选项的效果 。它还导致不使用并发插入。

LOCK TABLE,之间的差READ LOCAL并且READREAD LOCAL允许不冲突的 INSERT语句(并发插入),而锁被保持来执行。但是,如果您要在持有锁时使用服务器外部的进程来操作数据库,则不能使用此方法。

最后修改时间:2021-06-28 17:42:34
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论