作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究。
对MySQL的用户而言,备受诟病的一个问题就是导入SQL备份文件时不能并发,使得导入的效率很低。
今天,我们就来改变下思路,尝试一下并发导入的方法,供大家参考。
1、问题分析
想要实现并发导入,其实没那么难,最简单的思路就是:将完整的文件切分成多份,然后并发导入即可。
在这里,我自己的做法是这样的:
1) 首先,假设只有一个库;多个库的情况也是类似,无非就是循环
2) 计算SQL文件总行数
3) 计算SQL文件总大小
4) 设定每个切分文件最大尺寸
5) 初始化表结构
6) 循环处理SQL,按照切分文件最大尺寸切分成多个小文件
7) 并发导入多个小文件
上述方法中,如果数据表是 MyISAM 表,则并发导入没有问题,但如果是 InnoDB 表,则会有表级锁 AUOT-INC 导致并发效率不高的麻烦,尽管如此,那也比单个文件串行导入来的快一些。想要避免这个麻烦,就得采用 MySQL 5.1 版本了,因为在 5.1 中,改进了 AUTO-INC 的处理方式,规避了表级锁,很大程度提高了并发效率。
2、实际测试
事先设定:最大并大导入线程是16个。
2.1 MySQL 5.0.67 版本
innodb_flush_log_at_trx_commit = 1
串行导入:01:51:34
并行导入:01:25:05
innodb_flush_log_at_trx_commit = 0
串行导入:01:49:36
并行导入:01:11:29
2.2 MySQL 5.1版本
innodb_flush_log_at_trx_commit = 1, innodb_autoinc_lock_mode = 0
串行导入:01:52:28
并行导入:01:38:13
innodb_flush_log_at_trx_commit = 1, innodb_autoinc_lock_mode = 1
串行导入:01:54:55
并行导入:01:26:24
innodb_autoinc_lock_mode = 0
并行导入:01:38:13
innodb_autoinc_lock_mode = 1
并行导入:01:05:51
更加详细的测试就不再做了。
3、小结
从上面的测试结果可以看到,MySQL 5.1在AUTO-INC锁方面的改进还是非常大的,对于想要提升并发性能,同时应用相对不是太复杂,并且不担心会碰到bug的童鞋可以多多尝试下。
由于众所周知的缘故,相关的脚本就不发布了,有需要的童鞋请加入MSN群讨论。
本文出自 “MySQL中文网”博客 http://www.imysql.cn/

转载于:https://blog.51cto.com/imysql/308994

[MySQL FAQ]系列 -- 新年新思想:MySQL也能并发导入数据相关推荐

  1. linux安装卸载mysql,Linux6 系列 安装、卸载mysql

    Linux6 系列 安装.卸载mysql Linux6 系列 安装.卸载mysql Linux环境下载mysql: https://blog.csdn.net/weixin_40816738/arti ...

  2. mysql建帐号数据库出现反斜线_[MySQL FAQ]系列 -- 账号密码包含反斜线时怎么办

    问: 如果密码中包含反斜线,该如何处理呢? 答: 在mysql中,反斜线"\"是有特殊意义的,用于转义,因此如果密码中包含"\",就需要特别注意.有一种一劳永逸 ...

  3. [MySQL FAQ]系列 -- 账号密码包含反斜线时怎么办

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 问: 如果密码中包含反斜线,该如何处理呢? 答: 在mysql中 ...

  4. MySQL高级系列(四)—— MySQL集群架构

    第1节 集群架构设计 1.1 架构设计理念 在集群架构设计时,主要遵从下面三个维度: 可用性 扩展性 一致性 1.2 可用性设计 站点高可用,冗余站点 服务高可用,冗余服务 数据高可用,冗余数据 保证 ...

  5. mysql无法安装弹出Log_[MySQL FAQ]系列 -- 启用GTID binlog新安装完的MySQL提示无法登录...

    问:刚刚新安装的MySQL,提示下面信息,无法登入,怎么回事? [root@imysql mysql]# mysql mysql ERROR 1045 (28000): Access denied f ...

  6. [MySQL FAQ]系列 -- 快速还原MyISAM表索引

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 假设有个myisam表:tbl,为了备份方便,直接把 frm 和 ...

  7. FAQ系列 | 几种常见MySQL无法启动案例

    昨天在群里看到有新同学还在问MySQL无法启动的问题,于是总结了几个常见情况,权当普及帖了,老鸟自觉飞过. 问题1:目录.文件权限设置不正确 MySQL的$datadir目录,及其下属目录.文件权限属 ...

  8. MySQL在线环境,[MySQL FAQ]系列 — 线上环境到底要不要开启query cache

    Query Cache(查询缓存,以下简称QC)存储SELECT语句及其产生的数据结果,特别适用于:频繁提交同一个语句,并且该表数据变化不是很频繁的场景,例如一些静态页面,或者页面中的某块不经常发生变 ...

  9. [MySQL FAQ]系列 -- mysql是否支持跨库事务

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 是可以支持的,例如这么用: start transaction; ...

最新文章

  1. 在双系统电脑再安装一个ubuntu18.04
  2. wps图表xy轴颠倒_还在嫌自己的图表丑?50+种可视化图表随你选
  3. 《高可用MySQL》2 – 单机版MySQL主从配置
  4. ZOJ 3171 The Hidden 7's DP
  5. java实现打印购物清单jframe_在java中打印2页的jframe
  6. 数仓建模 项目_模型设计_数仓建模 PDF 下载
  7. HDU2092 整数解【暴力+韦达定理】
  8. 《C++ Primer》第五版课后习题解答_第六章(1)(01-07)
  9. 远程调用中间件(RPC
  10. m3u8解析php,PHP解码转发M3U8 PHP读取转发M3U8的方法
  11. kvm实战之搭建一个web服务来进行ks.cfg文件的引导(三)
  12. Python数据分析与挖掘——回归模型的假设检验
  13. python写贪吃蛇游戏
  14. xmind 拖拽_Xmind教程:思维导图原来这么简单实用!
  15. MySQL常规篇之增删改查(精选)
  16. python xlrd读取文件报错_python利用xlrd读取excel文件始终报错原因
  17. java知识精华总结
  18. 河南省计算机报名流程图,报考流程
  19. 私房小菜菜谱和煲汤大全汇总
  20. 说说硬件吧,CPU,不应被埋没的计算机产业的功臣。

热门文章

  1. 2021了,你还不能玩转js正则表达式?
  2. 做前端开发,30 岁前能买上房子吗?
  3. 最全JavaScript基础总结~建议收藏
  4. HTML5前端开发真的会被取代吗?
  5. 如何提升 CSS 性能的小知识
  6. 给你一份详细的web前端CSS布局指南,请查收
  7. matlab中表示拉普拉斯分布_神奇的正态分布
  8. 一阶系统开环传递函数表达式_自控原理之系统辨识--入门介绍
  9. 计算机导论声明型摆设,《计算机导论作业-论文排档》.doc
  10. 软件测试中qa的职责,软件测试 -- 测试人员和QA的区别