mysql数据转储方法_Mysql数据库各种导出导入数据方式的区别(我的理解错误还望指正)...

mysqldump,NAVICAT转储,select * outfile在千级数据,万级,百万级数据下的表现。

千级数据

mysqldump导出sql文件

导出是出了拒绝访问的错误;为对应目录(.sql文件要保存的目录)的对应用户添加(正在使用的用户)添加写入权限即可。

mysqldump -h localhost  -u root -p123456 --database financial_bak --table sx_financial_bak >d:\dump.sql

注:-p 与密码间不能有空格,有空格时’123456’会被作为数据库名解析,并且要求输入密码。

可知--database可以省略,--table也可以省略

.sql文件会给出所导出的数据来源,包括数据连接,服务器地址,端口号,导出时间等信息。文件主体有:创建数据库判断语句-删除表-创建表(-锁表-禁用索引)-插入数据(-启用索引-解锁表)。

0a0d9709acb262e4ba3da509d191e685.png

用时大约为1s!!其中包括两次时间函数的调用。导出的dump.sql为23k,一共包含1909条insert语句。

ed935dc47bcb4f352e529fa5930dcad6.png

2.使用navicat

同样的表使用navicat的sql导出功能用时约为0.1s

7d5aa108d853dbc6d71d42e43b9b5f29.png

3.使用select*  outfile的方式

d8e6ff00b40084870fc9f7b8686ca970.png

其中使用默认参数对所得数据划分的方式所花时间为0.0016s,使用自定义划分方式用时0.0257s,远远小于使用mysqldump,以及navicat导出sql的方式。

万级数据量

对于轻量的表来说结果是outfile的方式用时最少。对于另一个较大的表呢?t_Financial_bak有35007条数据且每条数据有较多数据项

Mysqldump

用时为1.5s。10倍的数据量仅仅多花费了50%的时间,说明在上面的结果1s中时间函数占比较大。

764c3c52c66b9380d1c852e555c19bfa.png

navicat转储sql的方式

ad94c4359b1df656b3035ed1ce8ff55f.png

用时大幅度上涨,由0.1变为了3.6s。转储文件由0.1m增加为27m用时的上涨比数据量上涨更快。

3.Select * outfile的方式

678c77337d460d7ef5213ac12ffce0aa.png

可以看到使用默认文件分割方式的outfile语句的时间为0.36,比使用自定义分割方式的0.38少了0.02s可以初步推断使用自定义分割方式要比默认方式多花0.02秒。但使用select

* outfile的方式依然比使用其他两种方式导出所花时间少一个数量级。

百万级数据

对于更大的表有7925794条数据financial的测试结果

Mysqldump

用时187.08s

b99439cc78c3704a9957e2ed256d655d.png

Navicat转储sql

用时750.635s

e64dc698515c6a4e15b5d70f2eb36f16.png

Outfile

默认分隔符花费时间94.54s

自定义分隔符花费106.41s

0a8ecb9c68d3f2d4f3711ee6240456c2.png

对于导出文件差异的分析总结。

导出方式

文件类型

具体内容

时间花费以及评议

Mysqldump

.sql

创建数据库判断语句-删除表-创建表-插入数据。插入方式为一次性插入所有数据,每一行是一个元组。

需要编写语句,但是随着数据量增加对navicat

Navicat转储sql

整体内容与mysqldump一致,插入实现方式不同,对每一行数据都执行一个insert语句。

最初花费时间很少,操作容易,不需要编写语句花费额外时间。但随着数据量的增长很快,适合导出数据量较小的主要功能为对照的表。

outfile

文本文件

导出数据为数据元组的简单分割。

花费时间最少,但是导出服务器数据时不方便。

对于三种方式的比较:

Mysqldump,navicat转储都是将表导出为sql:

优点

导出了表结构,恢复起来更加方便。

导出数据具有很强可读性,可以很方便的对个别数据进行查找,修改。

Navicat转储只需要鼠标点击即可完成具体到表导出任务,操作非常容易(但花时间也最多!)。

Mysqldump提供很多可选参数可以根据需求使用不同的参数,灵活多变,可以远程备份文件到本地。

缺点

.sql文件高度结构化,不利于对数据的大规模修改处理。

导出大量数据时,时间比较常,导入时时间更长!

Outfile方式:

优点

导出速度相对快。

导出数据结构化程度低,可以将文件导入到不同的数据库表中。

导出数据为文本格式,必要时方便对数据进行格式化等修改。

导出时要求没有同名文件,更加安全。

缺点

导出时要求文件不能同名,但不提供是否覆盖的选项。(dump方式由shell提供)

导出数据不包括表结构,导入时要求已经有一个表可以存放数据。

三种方式导出文件的导入

Mysqldump导出文件导入source

导入35007条数据花费的时间5s(不知为何source命令后show profiles显示的是sql中每一个sql的花费时间,占时不知道使用profiles查看source总用时的方法,以下为timestampdiff()的结果,由于mysql版本问题只能精确到秒)

4a14a9313d203f48878318cf950374dc.png

Navicat转储sql文件导入

实在没有耐心等下去了,一共导入; 7675条数据,花费时间275.05s,可见这种方式导出百万级的表时就几乎已经是不可用的了。

dc4ebe845f87b48036d53462a10114a5.png

Outfile导出文件的导入infile

使用默认分割方式导出的文件,导入35007行用时2.67s

f3694a56f90e73b9f6a73282ebb086c8.png

使用自定义的数据分割方式,导入35007行用时3.38s

a29cd1799a9ae6156d96e0b4451d19e6.png

总结:

Mysqldump 在导出导入都有不错的表现,且随着数据量的增加,导出导入每条数据所用时间在减少(与其导出.sql文件的结构有关,说明insert语句一次插入多条数据,比执行多天语句每条插入一条数据的效率高的多),而且提供较多的option,可以帮助用户实现各种需求,在服务器数据备份上由于-h参数也outfile-infile的方式更加方便。

Navicat提供的导出导入方式操作方便,但是随着数据量的很快变得几乎不可用。到导出的.sql文件结构化程度最高,易于做文本处理,对于及几百行,千行的对照表来说不失为一种简单易行的数据导出方式。

Outfile—infile导出的文件是一个数据元组安一定规则排列的文件,导出的数据文件比同等数据量的.sql文件更小。导出导入花费的时间也更短适合用来保存备份。但是要求恢复数据时表已经存在。

9106028.html

附:不同环境下操作时间的测量(占时没有找到更好的方法)

windos命令行下:

使用time命令打印时间的方式来实现(中间有调用时间函数的时间,以及io时间,操作用时较少时及其不准):

编写.bat批处理文件

time

mysql -h localhost -u root -p123456 --database financial_bak

source d:\dump.sql

time

pause

注意pause让命令行界面滞留。enter.txt是一个自建的只包含一个换行的文件(time会接受一个额外的参数修改时间,需要换行跳过)。

mysql命令行

使用profile

set profiling=1;

source d:\dump.sql;

show profiles;

mysql命令行的timestampdiff()计算时间差的方式

5.6以下版本仅支持到秒级,精度较差

set @d=now();

Source D:\\t_dump.sql;

select timestampdiff(second,@d,now());

注意由于时间算时间差要求三条命令一气呵成。最后一条命令下有一个空行!

timestampdiff OPTION

FRAC_SECOND。表示间隔是毫秒

SECOND。秒

MINUTE。分钟

HOUR。小时

DAY。天

WEEK。星期

MONTH。月

QUARTER。季度

YEAR。年

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JetBrains 开发者调查 - 编程语言趋势

几个月前在公众号里发布了 StackOverflow 2020 开发者调查结果,其结果对 .NET Core 很友好。今天我们看看 JetBrains 2017-2020 四年的开发者调查结果统计,JetBrains 是偏 Java 系的,尤其是本家的 Kotlin 语言。 我们看一下在编程语言方面的趋…

mycli mysql_MyCLI :易于使用的 MySQL/MariaDB 客户端

导读MyCLI 是一个易于使用的命令行客户端,可用于受欢迎的数据库管理系统 MySQL、MariaDB 和 Percona,支持自动补全和语法高亮。它是使用 prompt_toolkit库写的,需要 Python 2.7、3.3、3.4、3.5 和 3.6 的支持。MyCLI 还支持通过 SSL 安全连接…

究竟是什么可以比反射还快实现动态调用?

戏精分享 C#表达式树,第一季正式完稿 前不久,我们发布了《只要十步,你就可以应用表达式树来优化动态调用》。观众们普遍反映文章的内容太多复杂不太容易理解。因此,我们以此为契机发布了《戏精分享 C#表达式树》系列视频。现在&am…

BCVP,想真正为社区做努力的开发者们

基于Net/Core,快速搭建 API & SPA 及微服务应用组织BASE NETCORE (VUE) PROJECT TEAM每一个.NET开发者都可以通过自己的开源项目(最好可以配套简单发表些文章)在这里进行分享,BCVP开发者组织的意义就是激发和挖掘更多的作品,可能偏基础&a…

求关系模式r的所有候选码_2_1关系数据库的基本概念

1.关系数据结构单一的数据结构-------关系现实世界中的实体以及实体间各种联系均用关系来表示2.域:一组具有相同数据类型的值的集合。例如:整数实数介于某个取值范围的整数指定长度的字符串集合{“男”,“女”}.............3.笛卡尔积3.1 给…

Docker:恢复对开源项目的无限制访问

喜欢就关注我们吧!继宣布针对免费用户的拉速限制声明之后,Docker 现如今又透露了进一步的策略更新,旨在恢复对开源项目的无限制访问。Docker 方面此表示,为了支持开源社区,他们为开源项目制定了一个特殊的计划&#xf…

真正拖垮你的,是沉没成本

职场&认知洞察 丨 作者 / findyi这是findyi公众号分享的第91篇原创文章一个洋友问:“洋哥,我在这家创业公司3年了,但老板承诺的股份一直没兑现。现在想离开,但又特别不甘心,我应该怎么做”。我回复:“找…

别“躺”着了,赶紧把「复盘」做起来

大家好,我是Z哥。有一种类型的故事大多数人都喜欢,就是“屌丝逆袭”的故事,这也是很多小说的题材。不管是在小说还是现实中,这样的逆袭都不是一蹴而就的。并且,大多数人一直只在逆袭的路上,最终能成功完成逆…

注意.NET Core进行请求转发问题

【导读】近日,有关注我公众号的小伙伴私信我,遇到一个问题搞了很久没解决,此问题具有参考意义,这里跟大家分享下,希望对你能有所帮助内网环境跟外网隔离,现在外网的请求都需要一个专用服务器转接到内网处理…

react 数字转字符_深入浅出 React -- JSX

什么是 JSXJSX 是一个 JavaScript 的语法扩展。JSX 可能会使人联想到模版语言&#xff0c;但它具有 JavaScript 的全部功能在 React 中&#xff0c;JSX 仅仅是 React.createElement(component, props, ...children) 函数的语法糖如下 JSX 代码&#xff1a;<MyButton color&q…

mybatis mysql schema_MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql

一、MyBatis简介与配置MyBatisSpringMySql1.1MyBatis简介MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。…

.NET架构小技巧(7)——做好小的项目

一屋不扫&#xff0c;何以扫天下。再说也没有那么多天下(大系统)可扫&#xff0c;更多的是一个个自己居住的小屋(手边的小项目&#xff0c;子模块)&#xff0c;所以认真的开始扫自己的小屋。在visual studio中&#xff0c;解决方案(Solution)下可以创建多个项目(Project)&#…

使用 C# 9.0 新语法提升 if 语句美感

C# 语言一贯秉承简洁优美的宗旨&#xff0c;每次升级都会带来一些语法糖&#xff0c;让我们可以使代码变得更简洁。本文分享两个使用 C# 9.0 提升 if 语句美感的技巧示例。使用属性模式代替 IsNullOrEmpty在任何你使用 IsNullOrEmpty 的时候&#xff0c;可以考虑这样替换&#…

在 Azure App Service 上启用 Application Request Routing

点击上方蓝字关注“汪宇杰博客”导语我们在IIS上经常使用 Application Request Routing (ARR) 模块做反向代理。Azure App Service 使用的也是 IIS&#xff0c;照理来说应该也能做反代&#xff0c;但默认情况下它是不行的&#xff0c;我们来看看如何给在 App Service 上启用 AR…

【专题】多角度深入解析开放原子开源基金会

喜欢就关注我们吧&#xff01;2020 年 9 月 9 日&#xff0c;开放原子开源基金会正式对外发声&#xff0c;同天&#xff0c;宣布百度超级链正式成为基金会首个捐赠项目。9 月 10 日&#xff0c;华为 OpenHarmony 操作系统开源&#xff0c;开放原子开源基金会获捐 OpenHarmony。…

C#刷剑指Offer | 【常考题】最小的k个数

【C#刷题】| 作者 / Edison Zhou这是EdisonTalk的第299篇学习分享我们来用之前学到的数据结构知识来刷《剑指Offer》的一些核心题目&#xff08;精选了其中30道题目&#xff09;&#xff0c;希望对你有帮助&#xff01;本文题目为&#xff1a;最小的k个数。1题目介绍题目&#…

晶振噪声及杂散_晶振如何匹配电容看了就知道

描述一、什么是晶振了解晶振之前&#xff0c;我们先来看一下我们最为熟悉的51单片机&#xff0c;我们都知道51单片机最小系统包括供电电源、复位电路以及晶振系统。这是CPU能跑起来的最基本条件。由此我们可以看到晶振在电路当中的作用&#xff0c;那就是晶振电路用于产生时间频…

C# 中的 ref 已经被放开,或许你已经不认识了

一&#xff1a;背景 1. 讲故事最近在翻 netcore 源码看&#xff0c;发现框架中有不少的代码都被 ref 给修饰了&#xff0c;我去&#xff0c;这还是我认识的 ref 吗&#xff1f;就拿 Span 来说&#xff0c;代码如下&#xff1a;public readonly ref struct Span<T>{public…

java中file_详细介绍Java中的File类

构造方法File f new File("文件路径")File f new File("parent","child")创建一个文件&#xff1a;//在工作空间目录下创建a.txt的文件File f new File("a.txt");f.createNewFile();在G:\路径下创建一个a.txt的文件.如果已经有的话…

.NET5全面拥抱Azure云,微软市值重回巅峰,那些年吹过的牛,都实现了!

“Microsoft Azure的重要性在于&#xff0c;它是继Windows取代DOS之后&#xff0c;微软的又一次颠覆性转型——通过在互联网架构上打造全新计算平台&#xff0c;使得Windows真正由PC和服务器延伸到“蓝天”上。” ------曾微软全球副总裁张亚勤2014年2月&#xff0c;纳德拉成为…