extended-insert对mysqldump及导入性能的影响

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:
参数说明:
-e, --extended-insert,长INSERT,多row在一起批量INSERT,提高导入效率,和没有开启 -e 的备份导入耗时至少相差3、4倍,默认开启;用--extended-insert=false关闭。强烈建议开启,通过下面的测试比较就会明白为什么了。
一、默认方式导出,也即--extended-insert=true

[root@localhost ~]# time mysqldump -S /tmp/mysql3307.sock -uroot -p'Zhkj@554996' --single-transaction --extended-insert=true -B -A >testdump.sql
Warning: Using a password on the command line interface can be insecure.
real    0m12.965s
user    0m6.579s
sys    0m1.080s
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# time mysqldump -S /tmp/mysql3307.sock -uroot -p'Zhkj@554996' --single-transaction  -B -A >1testdump.sql
Warning: Using a password on the command line interface can be insecure.
real    0m13.385s
user    0m6.545s
sys    0m1.171s

二、采用参数--extended-insert=false导出全库:

[root@localhost ~]# time mysqldump -S /tmp/mysql3307.sock -uroot -p'Zykj@554996' --single-transaction --extended-insert=false -B -A >2testdump.sql
Warning: Using a password on the command line interface can be insecure.
real    0m16.216s
user    0m8.820s
sys    0m1.282s

三、对比到处的sql文件的大小不一样:

[root@localhost ~]# du -sh testdump.sql  1testdump.sql 2testdump.sql 
414M    testdump.sql
414M    1testdump.sql
550M    2testdump.sql

四、对比恢复到数据库所用的时间:
[root@localhost ~]# time mysql -uroot -p -S /tmp/mysql3307.sock < testdump.sql 
Enter password: 
real    3m34.245s
user    0m9.018s
sys    0m0.361s
[root@localhost ~]# time mysql -uroot -p -S /tmp/mysql3307.sock < 2testdump.sql 
Enter password: 
real    46m51.702s
user    0m44.712s
sys    0m35.717s


经过上面的一比较,发现导入速度相差非常多。

但是使用--extended-insert=false导出表也有好处

比如数据库中表中已经存在大量数据,那么再往表中导入数据时,如果出现主键数据冲突Duplicate key error,将会导致导入操作失败,但此时如果是使用--extended-insert=false导出表,导入时主键冲突的会报错Duplicate key error,但不冲突的数据仍然能正常导入。


 本文转自 wjw555 51CTO博客,原文链接:http://blog.51cto.com/wujianwei/1959493


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
Arthas druid Java
一次druid数据库连接池连接泄露的排查分析
一次druid数据库连接池连接泄露的排查分析
1953 1
|
Python Windows
ImportError: No module named ‘encodings’
ImportError: No module named ‘encodings’
1290 0
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
存储 自然语言处理 算法
【算法精讲系列】MGTE系列模型,RAG实施中的重要模型
检索增强生成(RAG)结合检索与生成技术,利用外部知识库提升大模型的回答准确性与丰富性。RAG的关键组件包括文本表示模型和排序模型,前者计算文本向量表示,后者进行精细排序。阿里巴巴通义实验室推出的GTE-Multilingual系列模型,具备高性能、长文档支持、多语言处理及弹性向量表示等特性,显著提升了RAG系统的检索与排序效果。该系列模型已在多个数据集上展示出优越性能,并支持多语言和长文本处理,适用于各种复杂应用场景。
2306 18
|
Prometheus Cloud Native
grafana展示的CPU利用率与实际不符的问题探究
grafana展示的CPU利用率与实际不符的问题探究
202 2
|
SQL 关系型数据库 MySQL
MySQL的自增id会用完吗?用完怎么办?
MySQL的自增id会用完吗?用完怎么办?
540 0
|
存储 人工智能 安全
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
LangChain-23 Vector stores 向量化存储 并附带一个实际案例 通过Loader加载 Embedding后持久化 LangChain ChatOpenAI ChatGLM3对话
406 0
|
Oracle 网络协议 关系型数据库
Oracle DataGuard主备切换之自动切换
Oracle DataGuard主备切换之自动切换
632 2