myloader导入更快吗?并没有。。。

COMSOL金属氢化物-放氢过程 "层流"的出口设置压降函数,解决“找不到一致的初始值”问题,主要是一开始设置出口为1atm的话,压力场过渡太剧烈,不好找到初始解,要么就先算个稳态流场,这种也能求解。注:P0是根据实测PCT的插值曲线(函数名称为:p_iso)得到的,根据初始质量储氢量wtw0,和初始温度条件T0,然后根据函数p_iso(wtw0)*exp(-deltHd/R_const*(1/T0-1/303.15[K]))求解获得。若"初始步长"选择框不勾上,前面0~5s内的求解容易发散,然后求解失败。2、设置"达西定律"的。 阅读详情

0. 结论先行

  • 1. 背景介绍

  • 2. 测试过程

  • 3. 结果对比

  • 附录

myloader还默认禁用binlog了

0. 结论先行

重要结论先说:导入大批量数据时,采用GreatSQL 8.0.32-24中新增并行load data特性是最快的,关于该特性的描述详见:Changes in GreatSQL 8.0.32-24

1. 背景介绍

前几天我用MySQL官网提供的airportdb库中的weatherdata表做测试,结论是相比原生快了约5倍。

群里有小伙伴反驳说用myloader更香,于是就有了本次测试。

由于weatherdata表较小,表空间只有228MB,所以我改用sysbench表做测试,该表共600万行数据,表空间约1.5GB,其他信息如下:

greatsql> show create table myload\G
*************************** 1. row ***************************
       Table: myload
Create Table:CREATE TABLE `myload` (
  `id` int NOT NULL AUTO_INCREMENT,
  `k` int NOT NULL DEFAULT '0',
  `c` char(120) NOT NULL DEFAULT '',
  `pad` char(60) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `k_2` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=6194244 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

greatsql> show table status like 'myload'\G
*************************** 1. row ***************************
           Name: myload
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 5930876
 Avg_row_length: 233
    Data_length: 1385168896
Max_data_length: 0
   Index_length: 153894912
      Data_free: 7340032
 Auto_increment: 6194244
    Create_time: 2023-07-08 09:25:02
    Update_time: 2023-07-08 09:25:33
     Check_time: NULL
      Collation: utf8mb4_0900_ai_ci
       Checksum: NULL
 Create_options:
        Comment:

2. 测试过程

本次测试基于GreatSQL 8.0.32-24版本,其他相关信息如下:

# myloader版本
$ myloader --version
myloader0.15.0-1, built against MySQL 5.7.42-46 with SSL support with GZIP

# MySQL Shell版本
 JS > shell.version
Ver 8.0.32 for Linux on x86_64 - for MySQL 8.0.32 (MySQL Community Server (GPL))

默认开启binlog + 双1 + redo log + doublewrite buffer:

|binlog_rows_query_log_events |ON|
| innodb_buffer_pool_size | 8589934592|innodb_doublewrite |ON|
|innodb_flush_log_at_trx_commit |1|
|innodb_redo_log_capacity |2147483648|
|sync_binlog |1|

3. 结果对比

下面是几个不同导入方式的对比测试结果,每种方式我都测试至少3次,去除噪点数据后取平均值:

工具耗时(秒)binlog大小(MB)mysqld内存增长(MB)
原生load data62.80174110911536
并行load data(chunk=4MB,并发16线程)11.8110911522
myloader(dump时chunk=64MB,load时并发16线程)29.35822461868
myloader(dump时chunk=64MB,load时并发16线程)+ 关binlog21.426
myloader(默认 + 开binlog)82.6512246
myloader(默认 + 关binlog)62.830
util.importTable(默认,chunk=64MB,并发8线程)16.003410911662

从这个测试结果可以看到几个对比关系:

  1. 原生load data最慢,因为是单线程的,它的耗时是并行load data的5.32倍;

  2. 原生load data的耗时是多线程模式下myloader的2.14倍;

  3. 原生load data的耗时是多线程模式下util.importTable的3.92倍;

  4. 当myloader没有开启并行(mydumper备份时要先进行分配)的话,它的耗时是最久的,是并行load data的7倍,是多线程模式下util.importTable的5.16倍;

  5. 当myloader未开启binlog时(其默认行为,有"作弊"嫌疑),其耗时是并行load data的1.81倍,是多线程模式下util.importTable的1.34倍;

  6. 最后,myloader导入后造成的binlog文件最大,内存开销也最大。

a9c91e810ba9199c6cac4bbbd7091326.png

综上,在MySQL 8.0/GreatSQL 8.0.32中,采用myloader导入数据就不再是最优方案了,推荐采用GreatSQL的并行load data,或者MySQL Shell的util.loadDump/util.importTable导入,其本质也是采用并行的思路,导入效率更高,额外的binlog和内存开销也更小。

最后,补充说下,myloader导入时产生的binlog更多,是因为它的导入方式是反复执行INSERT SQL,在 binlog_rows_query_log_events = ON 时,相比load data方式会产生更多binlog。

附录

1. myloader多分片方式导出

设置导出时进行分片,每个分片(chunk)10MB

$ mydumper -F 10 -S /data/GreatSQL/mysql.sock -T sbtest.myload -o /tmp/myload

最后的(未压缩)文件总大小为1.2GB。

2. outfile导出

greatsql> select * into outfile '/tmp/myload.csv' from myload;

很简单,平平无奇,最后的(未压缩)文件总大小为1.1GB。

3. util.dumpTables多分片方式导出 设置导出时进行分片,每个分片(chunk)64MB(默认值)

MySQL  localhost  JS > util.dumpTables("sbtest", ["myload"], "/tmp/myload", {threads:16, chunking:true, bytesPerChunk:"67108864"})

最后的(压缩后)文件总大小为505MB。

全文完。

Enjoy GreatSQL :)


《深入浅出MGR》视频课程

戳此小程序即可直达B站

https://www.bilibili.com/medialist/play/1363850082?business=space_collection&business_id=343928&desc=0


文章推荐:


想看更多技术好文,点个“在看”吧!

优化数据导入速度:使用myloader替代MySQL 综上所述,通过使用myloader作为MySQL数据导入的替代方案,我们可以显著提高数据导入的速度。传统上,MySQL是一个常用的关系型数据库管理系统,但在处理大规模数据导入时,它可能遇到性能瓶颈。它专注于提供快速而稳定的导入性能,优化了导入过程中的内部机制。除了提供快速的数据导入速度,myloader还具有其他一些有用的功能。例如,它可以实现增量导入,只导入新增的数据,而不是全量导入。在这个命令中,“-c"选项用于指定配置文件的路径,”-d"选项指定要导入的数据库名称,"-o"选项指定导入数据的目录。 阅读详情

相关推荐

Android16 rk3576添加触摸点数上限到40个点

本文介绍了在Android 16系统上实现40点触摸支持的修改方案。相比Android 15,Android 16对API添加有更严格的要求,需要在MotionEvent.java中添加@FlaggedApi批注。主要修改包括:1)在input_framework.aconfig中定义flag;2)在MotionEvent.java中添加40个AXIS_GENERIC轴常量添加批注;3)将32位指针ID处理改为64位适配;4)更新相关API文档。修改涉及多个核心文件,包括PointerController

tzj1058756809的博客 359

MySQL多线程导入导出 —— mydumper & myloader 简介及常见用法

一、 简介 之前介绍了mysqldump和mysqlpump两种逻辑备份工具,但还是各有缺点。这里介绍一个更强大的逻辑备份工具mydumper & myloader,前者用于备份或者用于恢复。 mysqldumphttps://blog.csdn.net/Hehuyi_In/article/details/90045274 mysqlpumphttps://blog.csdn...

Hehuyi_In的博客 1万+

校园网改造项目网络技术与方案.doc

校园网改造项目网络技术与方案.doc

MySQL数据快速导出导入

线上数据是共享表空间,正好因为服务器特性导致不能扩容,索性迁移的时候就把共享表空间改为单独表空间,方便后期拓展。线上数据1.6T,导出的SQL文件约745G。第一次使用官方工具mysqldump导出,导出时间消费5.5小时,再次导入的时候就蛋痛了,因为是单线程的方式,导入时间远远大于预期时间,可能要达到四五天的样子,接受不了,耗时周期长,中间出问题不好续导。 一、线上数据导出 1、下载安装my...

格子的博客 1万+

加快mydumper与myloader导出导入

mydumper与myloader是一个优秀的第三方mysql数据库逻辑备份恢复工具,使用多线程的导出与导入。弥补了mysqldump单线程的不足。本文描述的是如何加快mydumper与myloader的导出与导入供大家参考。

乐沙弥的世界 6128

mysqlload一键导入数据

参考mysql中文API 13.2.5. LOAD DATA INFILE语法

二次加工是一种痛 1018

myloader导入更快吗?没有......

前几天我用MySQL官网提供的airportdb库中的weatherdata表做测试,结论是相比原生快了约5倍。群里有小伙伴反驳说用myloader更香,于是就有了本次测试。

GreatSQL2021的博客 475

MySQL高效的逻辑备份工具mydumper & myloader

mydumper是开源的MySQL数据库逻辑备份工具,相比于mysqldump,它能够提供快速、高发的数据导出与导入功能。 帮助文档: http://centminmod.com/mydumper.html 下载地址: https://launchpad.net/mydumper 安装(CentOS 6.5,mydumper 0.2.3): yum install m

分享技术,分享知识 2147

myloader mysql_myloader恢复mysql数据库示例

mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式为逻辑备份。它支持多线程,备份速度远高于原生态的mysqldump以及众多优异特性。与其相配套的恢复工具则是myloader,主要用于将dump出来的sql以行的方式进行恢复。本文主要描述myloader的使用方法给出示例。有关mydumper的相关参考mydumper备份mysql数据库示例mydumper安装...

weixin_36050664的博客 293

myloader mysql_myloader恢复mysql数据库演示样例

?mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具。备份方式为逻辑备份。它支持多线程。备份速度远高于原生态的mysqldump以及众多优异特性。与其相配套的恢复工具则是myloader。主要用于将dump出来的sql以行的方式进行恢复。本文主要描写叙述myloader的用法给出演示样例。有关mydumper的相关參考mydumper备份mysql数据库演示样例mydump...

weixin_35765226的博客 298

Mydumper & Myloader Documentation

Mydumper.org web site has been missing in action for a while now. I've uploaded a copy of the Mydumper documentation to this web site for easy reference. I did benchmarks on my blog athttp://vbtechs...

weixin_30553777的博客 298

mydumper 和 myloader 的使用

mydumper 和 myloader 的使用 MySQL 自身的 mysqldump 工具支持单线程工作, 依次一个个导出多个表,没有一个行的机 ,这就使得它无法迅速的备份数据。 官网:https://launchpad.net/mydumper mydumper 作为一个实用工具,能够良好支持多线程工作, 可以行的多线程的从表中读入数据同时写到不同的文件里 ,这使得它在处理速度方面...

weixin_34344677的博客 223

MySQL 数据库如何使用 mydumper 和 myloader 数据快速备份和迁移

本文介绍了高效MySQL数据迁移工具mydumper/myloader的使用方法。相比原生mysqldump,该工具支持多线程备份和恢复,显著提升速度。文章详细演示了从Docker容器迁移300万条数据到腾讯云数据库的过程,包括安装方法、备份命令解析和恢复操作。关键参数说明覆盖了常用场景,如正则过滤系统库、表结构备份等。视频教程和官方文档链接为读者提供进一步学习资源,适合需要快速迁移大量MySQL数据的用户参考。

Mintimate的CSDN博客 1156

Mysql 备份及恢复 mydumper 和myloader

mysqldump 是mysql 自带的一个单线程的备份工具、只能一个表一个表的导出,而mydumper 是一个针对mysql 和Drizzle 的高性能多线程的备份工具,备份速度远远高于mysqldump,其备份方式也属于逻辑备份,数据还原时我们使用myloader工具。 1、mydumper特性 × 多线程备份 × 因为是多线程逻辑备份,备份后会生成多个备份文件 ...

pang_2899的博客 245

mydumper与myloader协同工作:完整备份恢复流程详解

在MySQL数据库管理领域,**mydumper与myloader**是备受推崇的高性能备份恢复工具组合。作为MySQL逻辑备份的黄金搭档,这对工具能够以多线程方式实现数据库的快速备份和恢复,特别适合大型数据库和高发场景。本文将详细介绍这对工具的完整工作流程,帮助您掌握高效的数据保护方案。 ## 🔄 为什么选择mydumper与myloader? **mydumper**负责导出MySQL

gitblog_01065的博客 437

mydumper

文章目录mydumpermydumper 介绍`mydumper` 备份机制`mydumper` 备份原理示意图`mydumper` 备份过程mydumper 备份生成的文件类型metadatadb_name-schema-create.sqldb_name.tb_name-schema.sqldb_name.tb_name.sqlMydumper 安装安装依赖包编译安装检查版本mydumper...

July 2465

mysql下的快速导入导出数据以及索引禁用

<br /><br />上班过程中,经常遇到这样的一种情况:一个表有600多MB,就来层数据表,都要花一个小时的时间。其实我自己也知道通过纯文本的方式来导入数据是直接导入SQL语句文件速度的三倍,但是自己一直都没有去使用。今天就试用一下且进行了一次总结:<br />第一种方式:通过SELECT 语句以及 LOAD FILE来导出导入文本文件<br />命令:SELECT * INTO OUTFILE 'D:/gdb_analytics_querys1.txt' <br />FIELDS TERMINA

学无止境 8594

数据库备份谁更快?mydumper VS mysqldump 实测对比

本文对比了MySQL备份工具mydumper和mysqldump的性能差异。测试环境为MySQL 5.7,数据量约20GB/24万行。结果显示:mydumper备份耗时509秒,恢复仅3秒;而mysqldump备份445秒,恢复22秒。mydumper/myloader在多线程行处理上优势明显,速度是传统工具的4-5倍,特别适合大规模数据库的高频备份和迁移。虽然两者备份文件大小相同(256M),但mydumper更适合生产环境,而mysqldump则更适用于小型数据库的低频备份场景。数据恢复后行数存在差异

星哥玩云 1134

取代mysqldump的新工具mydumper

下载地址:https://launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz # yum -y install glib2-devel mysql-devel zlib-devel pcre-develcmake# tar xf mydumper-0.9.1.tar.gz# cd mydumper-0.9.1# cm...

weixin_33695082的博客 195

MySQL备份迁移之mydumper

简介 mydumper 是一款开源的 MySQL 逻辑备份工具,主要由 C 语言编写。与 MySQL 自带的 mysqldump 类似,但是 mydumper 更快更高效。 mydumper 的一些优点特性: 轻量级C语言开发 支持多线程备份数据,备份后按表生成多个备份文件 支持事务性和非事务性表一致性备份 支持将导出的文件压缩,节约空间 支持多线程恢复 支持已守护进程模式工作,定时快照和连续二进制日志 支持按指定大小将备份文件切割 数据与建表语句分离 下载安装 安装方式非常多,以下介绍几种常见的方式。

Max一直在学习 875

mysql dump和load_用mydumper,myload进行备份还原,与mysqldump进行速度比较

[root@localhost tmp]# seq 1 10000000 > /tmp/bigfile 先生成一个数据表[root@localhost tmp]# ll -h /tmp/bigfile-rw-r--r-- 1 root root 109M 01-30 16:36 /tmp/bigfile 生成的文件大小mysql> create database a...

weixin_26831583的博客 301
上一篇: MySQL运行状态诊断工具上线啦
下一篇: MySQL运行时的可观测性
老叶茶馆_
博客等级 码龄9年 1137粉丝 411原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值