广告
返回顶部
首页 > 资讯 > 数据库 >mysqldump中参数net-buffer-length怎么用
  • 241
分享到

mysqldump中参数net-buffer-length怎么用

2024-04-02 19:04:59 241人浏览 八月长安
摘要

这篇文章给大家分享的是有关Mysqldump中参数net-buffer-length怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql

这篇文章给大家分享的是有关Mysqldump中参数net-buffer-length怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

mysqldump的net-buffer-length
有大师说mysqldump的net-buffer-length这个参数是个鸡肋,对与性能提升不是很大.之前也就没关注过.偶然一次测试.碰到了.就研究了下..其实还是很有用的(对于我们这种菜鸟来说).
下面结合实例讲讲:


讲net-buffer-length之前,先讲另外一个mysqldump的参数--extended-insert
这个参数的意思就是是否开启合并insert(默认是开启的,不想开启直接加skip-extended-insert).用白话讲就是用mysqldump导出生成的insert数据合并成一条,如果不开启就是一条数据一个insert.
开启后导出的格式类似这样: insert into table_name values (xx,xx,xx),(xx,xx,xx),(xx,xx,xx)....
关闭后导出的格式类似这样: insert into table_name values (xx,xx,xx);
                        insert into table_name values (xx,xx,xx);
                        insert into table_name values (xx,xx,xx);
                        .
                        .
                        . 
ok,这个参数应该解释清楚了吧.理想是很丰满的,但现实却是很骨感的.
现实情况是开启了extended-insert参数,如果数据超过1M,也会生成多个insert
[root@testdb3 ~]#/home/mysql3310/bin/mysqldump -S /tmp/mysql3310.sock --databases bigdata --tables t1 >t1.sql
[root@testdb3 ~]# cat t1.sql |grep INSERT |wc -l      
125


这就引入net-buffer-length这个参数了
mysqldump(5.7.5以后,官方建议使用mysqlpump)的net-buffer-length 官方的解释就是通信时缓存数据的大小.最小4k,最大16M,默认是1M.
大家都知道.msyqldump导出的数据就包括两部分,一部分是DDL(包含建表,建存储,建视图等sql语句),另一部分就是insert了,所有的数据都是生成insert了,所以insert这部分才是mysqldump的最大部分.


结合上面说到的情况.启用extended-insert,理论上应该一个表只生成一个insert,但如果一个insert的数据超过1M(默认值),就会生成第二个insert,如果在超过1M,就生成第三个insert,以此类推,直到数据全部导完.
下面结合实例来看:
[root@testdb3 ~]#/home/mysql3310/bin/mysqldump -S /tmp/mysql3310.sock --databases bigdata --tables t1 >t1.sql
[root@testdb3 ~]# cat t1.sql |grep INSERT |wc -l      
125
[root@testdb3 ~]# sed -n '99p' t1.sql >t2.sql  
[root@testdb3 ~]# ls -al t2.sql 
-rw-r--r--. 1 root root 1042300 Jan 19 10:44 t2.sql


可以看到一个insert就差不多是1M


现在加上net-buffer-length 在来测试:
[root@testdb3 ~]# /home/mysql3310/bin/mysqldump -S /tmp/mysql3310.sock --databases bigdata --tables t1 --net-buffer-length=5000000 >t3.sql 
[root@testdb3 ~]# sed -n '100p' t3.sql >t4.sql
[root@testdb3 ~]# ls -al t4.sql 
-rw-r--r--. 1 root root 4979542 Jan 19 10:47 t4.sql




设置了差不多5M,看到一条insert就差不多5M的大小了
最大值是16M
[root@testdb3 ~]# /home/mysql3310/bin/mysqldump -S /tmp/mysql3310.sock --databases bigdata --tables t1 --net-buffer-length=25000000 >t5.sql
[root@testdb3 ~]# sed -n '100p' t5.sql >t6.sql 
[root@testdb3 ~]# ls -al t6.sql 
-rw-r--r--. 1 root root 16712034 Jan 19 10:59 t6.sql




设置了25M,但一个insert还是只有16M.


在来看看导入,导入就是按导出的时候有多少个insert就会有多少个事务(前提是autocommit是开启的);
所以我们在source的时候就会开到类似下面的提示:
Query OK, 4053 rows affected (0.16 sec)
Records: 4053  Duplicates: 0  Warnings: 0


Query OK, 4053 rows affected (0.51 sec)
Records: 4053  Duplicates: 0  Warnings: 0


Query OK, 4053 rows affected (0.16 sec)
Records: 4053  Duplicates: 0  Warnings: 0


Query OK, 4053 rows affected (0.16 sec)
Records: 4053  Duplicates: 0  Warnings: 0


Query OK, 4053 rows affected (0.16 sec)
Records: 4053  Duplicates: 0  Warnings: 0


这是因为导出的时候默认是1M,刚好4053行就是1M,所以会有这样的提示,如果不是1M,就会有如下的提示:
Query OK, 19364 rows affected (0.74 sec)
Records: 19364  Duplicates: 0  Warnings: 0


Query OK, 19363 rows affected (0.75 sec)
Records: 19363  Duplicates: 0  Warnings: 0


Query OK, 19363 rows affected (0.75 sec)
Records: 19363  Duplicates: 0  Warnings: 0


Query OK, 19363 rows affected (0.75 sec)
Records: 19363  Duplicates: 0  Warnings: 0


Query OK, 19364 rows affected (0.74 sec)
Records: 19364  Duplicates: 0  Warnings: 0


这里设置的是5M,就是差不多19364行.


这两个例子都是同样的表结构和数据.
在导入的时候还涉及另外一个参数max_allowed_packet,如果这个值设置过低,会导致数据无法导入的.如下:
mysql> set global max_allowed_packet=1048576;




mysql> show variables like 'max%';       
+----------------------------+----------------------+
| Variable_name              | Value                |
+----------------------------+----------------------+
| max_allowed_packet         | 1048576              |


mysql> source t4.sql;
ERROR 2006 (HY000): MySQL Server has Gone away
No connection. Trying to reconnect...
Connection id:    18
Current database: tt2


ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    19
Current database: tt2




ERROR 2006 (HY000): MySQL server has gone away
mysql> source t2.sql;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    20
Current database: tt2


Query OK, 4053 rows affected (0.51 sec)
Records: 4053  Duplicates: 0  Warnings: 0

max_allowed_packet设置成了1M,t4.sql是之前的5M的sql,就会导入失败.在看看错误日志:
2017-01-19T13:48:09.975902+08:00 5 [Note] Aborted connection 5 to db: 'tt2' user: 'root' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)


就会有提示的.. 这里就顺带提一下...

好了.到这基本上就清楚了net-buffer-length的功能了.有的人说net-buffer-length对性能提升效果不大.我没去做性能测试,从理论上讲肯定是有所提升的.
首先,导出的性能肯定有所提升.每1M就要分段,和16M在分段,如果是大数据(具体多大,以G为单位吧)导出,肯定会有所提升,如果数据小,当然就看不出啥效果了.
其次,导入.导入的时候,如果1M就要提交一个事务,和16M在提交一个事务,如果磁盘够快,肯定性能和时间是会节省很多的.

感谢各位的阅读!关于“mysqldump中参数net-buffer-length怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: mysqldump中参数net-buffer-length怎么用

本文链接: https://www.lsjlt.com/news/62816.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysqldump中参数net-buffer-length怎么用
    这篇文章给大家分享的是有关mysqldump中参数net-buffer-length怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql...
    99+
    2022-10-18
  • MySQL中mysqldump命令的参数有什么用
    这篇文章主要介绍MySQL中mysqldump命令的参数有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 参数说明--all-databases ...
    99+
    2022-10-18
  • sql中length函数怎么用
    sql中length函数的用法:在sql中能够使用length函数获取字符串长度的内置函数,在SELECT语句中使用,使用语法为“SELECT LENGTH(column_name) FROM table_name;”,这里colu...
    99+
    2022-10-07
  • mysql中length函数怎么使用
    这篇文章主要介绍“mysql中length函数怎么使用”,在日常操作中,相信很多人在mysql中length函数怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysq...
    99+
    2022-10-19
  • 怎么在java数组中使用length
    这篇文章给大家介绍怎么在java数组中使用length,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员...
    99+
    2023-06-14
  • MySQL数据备份中mysqldump怎么用
    这篇文章主要介绍了MySQL数据备份中mysqldump怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 一、mysqldump 简介mysqldump 是 M...
    99+
    2023-06-25
  • 怎么用取消参数使Go net/http服务更灵活
    这篇文章主要讲解了“怎么用取消参数使Go net/http服务更灵活”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用取消参数使Go net/http服务...
    99+
    2022-10-19
  • ES6中rest参数怎么用
    这篇文章将为大家详细讲解有关ES6中rest参数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。rest参数用于获取参数的实参,用于代替argumentsrest参数...
    99+
    2022-10-19
  • SpringCloud中hystrix参数怎么用
    这篇文章主要介绍SpringCloud中hystrix参数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、hystrix参数使用方法通过注解@HystrixCommand的commandProperties去...
    99+
    2023-06-05
  • python中print()函数的end参数和sep参数怎么用
    小编给大家分享一下python中print()函数的end参数和sep参数怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!python 2.6中,print输出内容需要使用引号。python 3.0中的print 函数...
    99+
    2023-06-15
  • C++中怎么使用数组参数
    这期内容当中小编将会给大家带来有关C++中怎么使用数组参数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。对于经验丰富的编程人员来说,C++编程语言应该是他们经常使用于程序开发的一种实用性语言。那么,在C+...
    99+
    2023-06-17
  • C#中命名参数和可选参数怎么应用
    这篇“C#中命名参数和可选参数怎么应用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#中命名参数和可选参数怎么应用”文章吧...
    99+
    2023-06-30
  • JavaScript中window.open()参数怎么使用
    JavaScript中的window.open()方法用于打开一个新的浏览器窗口或标签页。它可以接受多个参数,包括URL、窗口名称、...
    99+
    2023-09-15
    JavaScript
  • SPRING中参数注解怎么用
    这篇文章主要介绍SPRING中参数注解怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!@RequestBody 获取POST请求中的参数,请求参数会放到MAP里@RequestMapping(value = &q...
    99+
    2023-06-03
  • java中transaction参数怎么使用
    在Java中,可以使用`@Transactional`注解来指定事务的属性。`@Transactional`注解可以应用于类级别或方...
    99+
    2023-09-23
    java
  • Python中OrderByDesc参数怎么使用
    在Python中,OrderByDesc参数通常用于对列表或元组等可迭代对象进行倒序排序。使用OrderByDesc参数时,需要先将...
    99+
    2023-09-21
    Python
  • apache中RewriteRule参数怎么使用
    在Apache中,RewriteRule指令用于重写URL。它的基本语法如下:RewriteRule pattern target ...
    99+
    2023-08-29
    apache
  • C#中方法参数怎么用
    小编给大家分享一下C#中方法参数怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C#方法参数因方法要处理更改数值,你多多少少要传递值给方法,并从方法获得返回值...
    99+
    2023-06-18
  • oracle中怎么使用length()和hengthb()函数求字符串长度
    今天就跟大家聊聊有关oracle中怎么使用length()和hengthb()函数求字符串长度,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。leng...
    99+
    2022-10-18
  • JavaScript函数中的参数怎么应用
    这篇文章主要介绍了JavaScript函数中的参数怎么应用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript函数中的参数怎么应用文章都会有所收获,下面我们一起来...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作