datax导入MySQL报错_导入MySQL方法对比

使用datax导入

1、使用自增id

记录数

耗时(秒)

TPS

4248882

347

12244

33404813

4038

8272

2、不使用自增id,使用雪花算法生成id后导入

记录数

耗时(秒)

TPS

4248882

680

6248

33404813

6555

5096

使用MySQL命令load导入

1、csv带雪花id

> select * from l_wish_log_snow_copy into outfile '/data2/l_wish_log_snow.csv' fields terminated by '\t' optionally enclosed by '"' lines terminated by '\n';

> load data infile '/data2/l_wish_log_snow.csv' into table l_wish_log_snow fields terminated by '\t' optionally enclosed by '"' lines terminated by '\n';

记录数

耗时(秒)

TPS

4248882

81

52,455

2、自增主键id,load命令

先删除上个步骤中导出的雪花id

> awk -F'\t' '{print $2 "\t" $3 "\t" $4 "\t" $5 "\t" $6 "\t" $7 "\t" $8 "\t" $9 "\t" $10 "\t" $11 "\t" $12 "\t" $13 "\t" $14}' l_wish_log_snow.csv > noid.csv

使用awk分隔符切割,不要第一列,然后连起来就好了,生成不包含id的noid.csv文件,做下一步动作,导入到自增id的表中。

load data infile '/data2/l_wish_log_bak.csv' into table l_wish_log_snow_copy fields terminated by '\t' optionally enclosed by '"' lines terminated by '\n'(deviceid,uid,kid,level,createtime,fighting,version,devicetype,sysversion,platform,num,data,castType);

记录数

耗时(秒)

TPS

4248882

90

47210

使用load导入33404813行记录时,发现无法导入,报错如下:

mysql> load data infile '/data2/l_add_item_snow.csv' into table l_add_item_log_snow fields terminated by '\t' optionally enclosed by '"' lines terminated by '\n';

ERROR 1197 (HY000): Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage; increase this mysqld variable and try again

MySQL的Innodb引擎是事务型,load文件操作当作一个事务来处理,中途中断load操作,会导致回滚。

max_binlog_cache_size表示能够使用的最大cache内存大小。

当执行多语句事务时,max_binlog_cache_size如果不够大,就会报错,如上所示。

所有产生的binlog会先写入binlog_cache_size,直到load data 的操作结束后,

最后,再由binlog_cache_size 写入二进制日志,如mysql-bin.0000008等。

所以此参数的大小必须大于所要load 的文件的大小,或者当前所要进行的事务操作的大小。

改大max_binlog_cache_size 和binlog_cache_size 问题解决:

mysql> show variables like '%binlog_cache_size';

+-----------------------+------------+

| Variable_name | Value |

+-----------------------+------------+

| binlog_cache_size | 20971520 |

| max_binlog_cache_size | 2147483648 |

+-----------------------+------------+

2 rows in set (0.01 sec)

mysql> SET GLOBAL max_binlog_cache_size =2147483648;

mysql> SET GLOBAL binlog_cache_size =20971520;

很可惜,33404813行记录的文件有11g,也就是说binlog的缓存区要设置大于11g。

那么问题来了,能不能关闭binlog呢,就不用写入缓冲区和binlog文件了。

但是测试环境及线上环境MySQL一般都是主从架构,不允许这么玩。

从测试结果来看,load file入库性能最高,但是主从架构入库大表需要配置很大的缓冲区,其次是使用datax导入,奇怪的是使用自增id的性能比雪花id性能稍高,使用load雪花id的写入比自增id稍高,这次对比使用的是innodb引擎,看来说自增id新能差的不可信,并没有体现出量级差的性能。

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

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

相关文章

项目织机

为什么为什么? Java 8流背后的驱动程序之一是并发编程。 在流管道中,指定要完成的工作,然后任务将自动分发到可用处理器上: var result myData.parallelStream().map(someBusyOperation).reduce(someAssociativeBinOp).orElse(…

java mybatis 教程_(整理)MyBatis入门教程(一)

本文转载:本人文笔不行,根据上面博客内容引导,自己整理了一些东西首先给大家推荐几个网页:MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBa…

2020版北大中文核心期刊目录_收藏备用最新版:《中文核心期刊要目总览》北大中文核心期刊目录...

《中文核心期刊要目总览》是学术界对某类期刊的定义,一种期刊等级的划分。它的对象是,中文学术期刊,是根据期刊影响因子等诸多因素所划分的期刊。中文核心期刊是北京大学图书馆联合众多学术界权威专家鉴定,目前受到了学术界的广泛…

java中多个输入框搜索_如何在一个搜索框中输入多个字段的值进行查询?

搜索export default {data() {return {input: ,//用来接受input框的值name:,// 用来存储foreach的对应的值id:,// 用来存储foreach的对应的值dq:// 用来存储foreach的对应的值}},methods:{submit(){console.log(this.input);// 打印let str this.input;// 声明变量接受input的…

fedora如何隐藏顶部状态栏_藏在 iOS 13 里的 9 个隐藏小技巧

正文共:1797字 10图1.从控制中心直接选择无线网络和蓝牙配件苹果首次在 iOS 7 中加入了控制中心,允许用户进行一些快速操作,例如打开/关闭飞行模式、打开/关闭蜂窝网络、打开/关闭 Wi-Fi 等。但很多控制都只停留在一级菜单,你只能…

摇篮配置

在这篇文章中,我们将介绍有关Gradle配置的综合文章。 1.技术 Gradle是用于自动任务管理的开源构建工具。 它基于Apache Ant,Apache Maven的概念。 Gradle是使用Groovy语言开发的。 Gradle是使用基于Groovy的领域特定语言(DSL)开发…

java的封装性的优点_18、Java的三大特性之封装

Java的三大特性java是一个面向对象的语言,所以java也有面向对象语言的三大特性:继承,封装,多态,任何一个java项目,都会用到这三种特性,所以掌握好这三大特性非常的重要。封装我们为什么要使用封…

groovy 字符串截取最后一个_Java基础篇——字符串详解

字符串的声明字符串是内存中连续排列的0个或多个字符。不变字符串是指字符串一旦创建,其内容就不能改变,Java中使用String类来处理不变字符串,在对String类的实例进行查找、比较、拼接等操作时,既不能输入新字符,又不能…

eclipse插件开发_开发Eclipse插件

eclipse插件开发最近,我开始与一个团队合作开发Eclipse插件。 团队开发了一个很棒的插件,可以实现预期的目的。 因此,我检查了源并尝试构建它。 项目源包含所有必需的库,并且只能在Eclipse中构建。 在当今不断交付的世界中&#x…

java中链式调用_Java及Android中常用链式调用写法简单示例

本文实例讲述了Java及Android中常用链式调用写法。分享给大家供大家参考,具体如下:最近发现,目前大火的许多开源框架中,大多都使用了一种"(方法).(方法).(方法)"的形式进行调用,最典型的就是RxJava。android…

Java记录

https://openjdk.java.net/jeps/359概述了新的Java功能,该功能可能会/将在某些将来的Java版本中实现。 JEP建议使用一种新型的“班级”:记录。 JEP中的示例内容如下: record Range( int lo, int hi) { public Range { if (lo > hi) /* ref…

C什么k什么_K线图基础知识丨什么是K线散兵坑形态?K线散兵坑形态的操作与案例详解...

本文总共999字,预计阅读需要3分钟今天我们给大家带来的是K线散兵坑形态,那么K线散兵坑形态应该怎么来操作呢?今天我们就结合相应的实战案例来为大家讲解一下吧。K线散兵坑形态的简介散兵坑是指在股价缓慢上涨过程中.成交量也逐渐放大&#xf…

support v4官方下载_掌心长兴客户端下载-掌心长兴ap下载v4.1.4 安卓官方版

掌心长兴app是一款为广大用户开发的新闻资讯软件。在这里用户可以清晰的了解今日热点新闻,最新新闻直播电台应有尽有!让你全方面了解周边新鲜事!还有各种常用功能的代办查询服务。有需要的用户,欢迎现在下载体验哦掌心长兴客户端介…

java简单计算机程序_JAVA程序编的简单计算器程序??

1 文件名:Calculate_GUI。javaimport javax。swing。*;import t。Container;import t。event。*;public class Calculate_GUI extends JFrame{private JPanel p1;private JButton keyButton[]new JButton[16],signButton,clearButton,deleteButton;private JTextFie…

javafx 调用java_Java验证(javafx)

javafx 调用java验证是核心javafx框架所缺少的一件事。 为了弥补这一空白, controlsfx中已经存在一个第三方验证库 。 但是,我有一个问题:它不是在考虑FXML的情况下创建的。 这并不是说它不是一个很好的库,只是错过了这个细节&…

win10分辨率不能调整_Win10系统分辨率不能修改怎么办?屏幕分辨率的调节方法...

Win10系统电脑屏幕分辨率无法调节怎么办?电脑屏幕分辨率不能修改怎么办?近日有很多用户询问电脑显示器分辨率不能修改的问题,下面就给大家分享解决方法。解决方法:1、在win10系统桌面空白处单击鼠标右键,在弹出的菜单中…

java springmvc权限校验_详解Spring MVC使用Filter实现登录及权限验证判断

登录和权限验证判断在后台管理系统中是最常用的功能,这部分代码是比较固定和独立的,为了减少对业务代码入侵性,一般我会考虑使用Filter来实现,下面我就来详细说一下我的实现思路和代码:前台页面:String pat…

笔记本电脑电源已接通未充电_dell xps15 电源已接通 未充电 维修方法

(去年写的文章,在知乎也存一份)网上类似的文章很多,这里总结一下,这个问题按照严重程度可以分为四个层次:电源计划问题,大部分百度出来说的都是这个,实际上这个问题 等于没有问题。改…

cors spring_Spring,REST,Ajax和CORS

cors spring假设您正在为客户端开发基于JavaScript的项目,并且他通过其余的Web服务向服务器发出ajax请求,那么您可能会遇到一些麻烦,尤其是如果双方都在单独的域中。 实际上,出于安全原因,从一个域A到另一域B的Ajax请…

mysql bc_正则表达式——MySQL搜索过滤

正则表达式介绍在数据库的数据过滤过程中只用WHERE子句和LIKE操作符都是对于已知值进行的不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,都是使用已知的值当然MySQL语句也提供了通配符百分号(%)和下划线(_)来匹配多…