mysqldump -extended-insert参数的使用

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

mysqldump 的 --extended-insert 表示长INSERT,多row在一起批量INSERT,提高导入效率,和没有开启 -e 的备份导入耗时至少相差3、4倍,默认开启;用--extended-insert=false关闭。强烈建议开启,


使用--extended-insert=false导出的表如下图这种,每行一个insert语句。

wKioL1d7ZkrQSREYAABEgooZSs4357.png

使用--extended-insert=true导出的表如下图这种,一个很长的insert语句。

wKioL1d7Zo-T52crAAAyVmvjsmM570.png


下图是两种方式的导出数据库,可以看出--extended-insert=true的时候,耗时较少。因为我的这个库很小,所以两种方式对比起来不明显。

对于大型数据库,这2种方式的差距还是很大的。好在默认mysqldump就是启用--extended-insert=true参数的。

wKiom1d7ZkrwSUZiAAAjh59gbtI452.png



除了导出数据库时候这个参数会产生影响,导入的时候也是有影响的。直接看下图:

wKiom1d7arDzh07OAAAqCQlDncw770.png



那么使用--extended-insert=false导出表是不是一无是处呢?

并非如此。比如数据库中表中已经存在大量数据,那么再往表中导入数据时,如果出现主键数据冲突Duplicate key error,将会导致导入操作失败,但此时如果是使用--extended-insert=false导出表,导入时主键冲突的会报错Duplicate key error,但不冲突的数据仍然能正常导入。【个人感觉这个不常出现,因为我们每次导出都是加-B参数的,导出sql语句里面有DROP TABLE IF EXISTS `TABLE1`;】











本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1795988,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
关系型数据库 MySQL 数据库
在 Postgres 中使用 Insert Into Ignore
【8月更文挑战第11天】
157 0
|
5月前
|
SQL 监控 NoSQL
db.oplog.rs.find({"ns": "your_database_name.your_collection_name", "o": {$exists: true}}).sort({$natural: -1}).limit(1) 这个SQL什么意思
【6月更文挑战第29天】db.oplog.rs.find({"ns": "your_database_name.your_collection_name", "o": {$exists: true}}).sort({$natural: -1}).limit(1) 这个SQL什么意思
45 8
|
5月前
|
关系型数据库 MySQL 数据库
DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例
DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例
187 0
|
关系型数据库 MySQL
Mysql 建表时报错 invalid ON UPDATE clause for 'create_date' column
原文:Mysql 建表时报错 invalid ON UPDATE clause for 'create_date' column 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.
3318 0
|
关系型数据库 MySQL
【问题处理】—— Mysql : You can‘t specify target table for update in FROM clause
【问题处理】—— Mysql : You can‘t specify target table for update in FROM clause
788 1
|
Oracle 关系型数据库 MySQL
MySQL语句执行报错You can‘t specify target table for update in FROM clause
MySQL语句执行报错You can‘t specify target table for update in FROM clause
85 0
|
SQL 关系型数据库 PostgreSQL
pg 支持insert select吗
是的,PostgreSQL支持INSERT SELECT语法。使用INSERT SELECT语法,您可以将SELECT语句的结果插入到目标表中。 下面是一个示例INSERT SELECT语句的语法: ```sql INSERT INTO target_table (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM source_table WHERE condition; ``` 在这个示例中,`target_table`是要插入数据的目标表,`source_table`是要从中选择数据的
453 0
|
SQL Java 关系型数据库
SQL 语法--表特定语句--create、insert、desc | 学习笔记
快速学习 SQL 语法--表特定语句--create、insert、desc
234 0
SQL 语法--表特定语句--create、insert、desc | 学习笔记
|
SQL 关系型数据库 MySQL
MySQL中出现sql_mode=only_full_group_by问题解决
在 MySQL 5.7 以上的版本中 sql_mode 新加入了 only_full_group_by,导致我们在使用 group by 函数的时候,则会报错
344 0
MySQL中出现sql_mode=only_full_group_by问题解决
|
SQL 关系型数据库 MySQL
MySQL:The used SELECT statements have a different number of columns
执行SQL报错:The used SELECT statements have a different number of columns
749 0
MySQL:The used SELECT statements have a different number of columns