1.数据库优化
优化配置
MySQL千万级数据库数据插入insert速度加速调优_bulk insert buffer size-CSDN博客
-- 在执行存储过程前
# 关闭对外键的检查
SET FOREIGN_KEY_CHECKS=0;
SELECT @@FOREIGN_KEY_CHECKS;
# 修改批量插入缓冲区大小参数: bulk_insert_buffer_size
set global bulk_insert_buffer_size = 1024*1024*200;
SELECT @@bulk_insert_buffer_size
# 禁止时时同步日志到磁盘
set global innodb_flush_log_at_trx_commit=2; #禁止时时同步日志到磁盘
# 相对于 innodb_flush_log_at_trx_commit = 1, 设置为 0 可以明显的提高导入的速度。
# set global innodb_flush_log_at_trx_commit=0;
SELECT @@innodb_flush_log_at_trx_commit
# 此配置项作用设定innodb 数据库引擎写日志缓存区;将此缓存段增大可以减少数据库写数据文件次数。
set global innodb_log_buffer_size=1024*1024*128;
# 将 innodb_log_file_size 配置由于默认 8M 调整到 128M,在配置文件里修改
-- set global innodb_log_file_size=1024*1024*128;
set global innodb_autoextend_increment=128;
set global innodb_io_capacity=2000;
SELECT @@innodb_io_capacity
set global innodb_io_capacity_max=20000;
set global max_allowed_packet=1073741824;
show variables;
# 关闭事务自动提交,这句对优化有很大效果
SET AUTOCOMMIT=0;
-- 执行存储过程
-- 执行过后
COMMIT; # 由于自动提交关闭了,所以要最后commit一下
# 恢复对外键的检查语句为:
SET FOREIGN_KEY_CHECKS=1;
# 恢复自动提交语句为:
SET AUTOCOMMIT=1;
从内存表复制数据
1. 我们可以使用memory引擎创建一个一样的表,用这个表做插入查询,然后导进来,会看很多。可以看下面文章做参考。