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

被折叠的 条评论
为什么被折叠?



