Mycat loadData批量导入以及压缩协议使用指南

Mycat从1.4版本开始支持Loaddata批量导入和MySQL的压缩协议。Loaddata能提高数据导入速度,尤其适用于大数据量的场景。同时,Mycat还支持自动将导入的数据路由到对应的分片。启用压缩协议可以显著减少网络流量,提高大结果集查询和数据导入的性能。在特定测试环境下,启用压缩后导入性能提升了约2倍。

Load data和压缩协议mycat从1.4开始支持。

Load data 批量导入

load data infile语句可以从一个文本文件中以很高的速度读入一个表中。性能大概是insert语句的几十倍。通常用来批量数据导入。目前只支持mysql数据库且dbDriver必须为native

Mycat支持load data自动路由到对应的分片。

语法和注意事项

语法示例:

load DATA LOCAL INFILE 'd:\\88\\mycat.txt' IGNORE INTO TABLE test character set ‘utf8’(id,sid,asf);

如果指定local关键词,则表明从客户端主机读文件。如果local没指定,文件必须位于mycat所在的服务器上。

可以通过fields terminated by指定字符之间的分割符号,默认值为\t

通过lines terminated by可以指定行之间的换行符。默认为\n,这里注意有些windows上的文本文件的换行符可能为\r\n,由于是不可见字符,所以请小心检查

character set指定文件的编码,建议跟mysql的编码一致,否则可能乱码其中字符集编码必须用引号扩起来否则会解析出错。

还可以通过replace | ignore指定遇到重复记录是替换还是忽略。

目前列名必须指定,且必须包括分片字段,否则没办法确定路由。

其他参数参考mysql的load data infile官方文档说明。

客户端配置

如果是mysql命令行连接的mycat,则需要加上参数--local-infile=1。Jdbc则无需设置。

Load data测试性能

在一台win8下,jvm 1.7 参数默认,jdbc连接mycat。

 

测试结果load data local导入1百万数据到5个分片耗时10秒,1千万数据到5个分片耗时145秒。

Mysql压缩协议支持

Mycat从1.4开始支持mysql的压缩协议,在查询返回大的结果集和load data大量数据的性能提升比较明显。可以大大节省网络流量,但会消耗少量cpu资源。

如果要启用压缩协议,则客户端、mycat、mysql三者都启用才行。

Mycat可以在server.xml中配置<property name="useCompression">1</property>启用。

客户端如果是mysql命令行,则加参数-C启用压缩协议,如果是jdbc则在jdbc的url上加上参数useCompression=true,例如:jdbc:mysql://127.0.0.1:8066/base?useCompression=true

Mysql服务一般默认开启压缩协议支持,具体参考对应版本的官方文档。

压缩性能测试

一般网路条件越差,性能提升越明显。

测试环境客户端在电信网路,通过vpn连接到教育网内mycat服务器。

测试load data local一百万数据到5个分片,未开启压缩耗时179秒,开启压缩后耗时70秒,性能提升2倍多。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小哭包

创作不易,给作者加个鸡腿吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值