Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql中insert into...select语句优化

mysql中insert into...select语句优化方式

作者:半桶水专家

这篇文章主要介绍了mysql中insert into...select语句优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教<BR>

insert into...select语句优化

在MySQL中,INSERT INTO ... SELECT 语句可以导致源表(即SELECT部分的表)被锁定,这主要取决于事务的隔离级别以及表的存储引擎。

例如:

InnoDB存储引擎在默认的可重复读(REPEATABLE READ)隔离级别下会使用一致性读(consistent read)

通常不会锁定源表中的记录,但在某些情况下可能会使用间隙锁(gap locks)或者next-key锁,影响到并发性能。

优化INSERT INTO ... SELECT语句的策略

使用低事务隔离级别:

分批插入:

优化SELECT查询:

限制索引锁:

避免高峰时段操作:

使用INSERT DELAYED:

调整锁等待超时时间:

使用临时表:

考虑使用pt-online-schema-change或gh-ost工具:

需要注意的是,具体的优化策略取决于具体的使用场景,性能瓶颈的原因以及数据的特点。

因此,实施任何优化之前都应该仔细分析和测试以确保不会对系统的稳定性和数据的一致性产生负面影响。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文