MySQL 5.0 Load data infile 与 Insert 性能差异比较
来源:互联网 发布:网易邮箱端口号 编辑:程序博客网 时间:2024/06/17 18:03
测试目的:
1.load data infile 做批量数据入库时的性能时间.
2.insert与load data infile的性能差距.
3.测试分段执行的load data infile效率与一次性执行load的性能差异.
测试环境:
操作系统:
FreeBSD 5.4-RELEASE-p4
mysql:
Server version 5.0.12-beta-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 26 days 16 hours 31 min 14 sec
执行测试前负载:
load averages: 0.00, 0.00, 0.00
方法:
1.导出一个文本文件:
-rw-r--r-- 1 gateway www 97M Mar 23 10:03 MID_MOBILE_0011.sql
su-2.05$ wc -l MID_MOBILE_0011.sql
3777950 MID_MOBILE_0011.sql
2.在mysql5.0服务器上创建表,结构为:
mysql> desc MID_MOBILE_test1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| mid | varchar(14) | NO | PRI | | |
| mobile | bigint(11) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.02 sec)
3.利用load data infile 语句进行数据导入测试.
为了便于记录测试时间,我们利用Perl编写脚本来完成.
测试结果:
方法一:一次性load50万,100万,200万的数据.
[PHP]
目标文件条数 load方式 insert方式 比值
50万 11秒 67秒 6倍
100万 42 142 3.4倍
200万 330 589 1.78 倍
-
随着数据量的成倍增加,load的性能与insert方式的性能越来越接近了,不过仍然要好于insert方式.
方法二:将50万,100万,200万的数据等分成100个文件,然后针对于每个文件单独进行load.
目标文件条数 一次性load方式 分批load方式 一次性insert方式 分批insert
50万 11秒 12秒 67 66
100万 42 31 142 141
200万 330 176 589 582
-
采用分文件的方式可以有效提高load方式的执行效率,但是对insert方法却没有什么提高.究其根源主要是MySQL内部对于load 和 insert的处理机制不同.
1.load data infile 做批量数据入库时的性能时间.
2.insert与load data infile的性能差距.
3.测试分段执行的load data infile效率与一次性执行load的性能差异.
测试环境:
操作系统:
FreeBSD 5.4-RELEASE-p4
mysql:
Server version 5.0.12-beta-log
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 26 days 16 hours 31 min 14 sec
执行测试前负载:
load averages: 0.00, 0.00, 0.00
方法:
1.导出一个文本文件:
-rw-r--r-- 1 gateway www 97M Mar 23 10:03 MID_MOBILE_0011.sql
su-2.05$ wc -l MID_MOBILE_0011.sql
3777950 MID_MOBILE_0011.sql
2.在mysql5.0服务器上创建表,结构为:
mysql> desc MID_MOBILE_test1;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| mid | varchar(14) | NO | PRI | | |
| mobile | bigint(11) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.02 sec)
3.利用load data infile 语句进行数据导入测试.
为了便于记录测试时间,我们利用Perl编写脚本来完成.
测试结果:
方法一:一次性load50万,100万,200万的数据.
[PHP]
目标文件条数 load方式 insert方式 比值
50万 11秒 67秒 6倍
100万 42 142 3.4倍
200万 330 589 1.78 倍
-
随着数据量的成倍增加,load的性能与insert方式的性能越来越接近了,不过仍然要好于insert方式.
方法二:将50万,100万,200万的数据等分成100个文件,然后针对于每个文件单独进行load.
目标文件条数 一次性load方式 分批load方式 一次性insert方式 分批insert
50万 11秒 12秒 67 66
100万 42 31 142 141
200万 330 176 589 582
-
采用分文件的方式可以有效提高load方式的执行效率,但是对insert方法却没有什么提高.究其根源主要是MySQL内部对于load 和 insert的处理机制不同.
load与insert的不同:
(1)索引
Load的处理机制是:
在执行load之前,会关掉索引,当load全部执行完成后,再重新创建索引.
Insert的处理机制是:
每插入一条则更新一次数据库,更新一次索引.
(2)sql解析还体现在load省去了sql语句解析,sql引擎处理,而是直接生成文件数据块,所以会比Insert快很多.
0 0
- MySQL 5.0 Load data infile 与 Insert 性能差异比较
- mysql load data infile
- mysql load data infile
- mysql: load data infile
- mysql load data infile
- mysql load data infile
- MySQL LOAD DATA INFILE
- mysql 的load data infile
- load data infile 优化mysql
- mysql LOAD DATA INFILE 使用
- mysql 的load data infile
- mysql语句-load data infile
- MySQL LOAD DATA INFILE解析
- mysql load data infile一则
- mysql语句-load data infile
- mysql-load data local infile
- mysql脚本--load data infile
- MySQL- 'load data infile'语句
- 过程:
- 深入理解java中的try-catch-finally
- lua捕获异常(tryCatch封装)
- 手指上几乎全没有月芽儿
- iOS AutoLayout与AutoSizing
- MySQL 5.0 Load data infile 与 Insert 性能差异比较
- Mongodb安装 for windows7 64位
- 基于TCP协议的网络编程学习笔记(1)
- 使用mysql 统计函数 结果为null时返回值改为0
- Eclipse调试:F5、F6、F7、F8
- 个人开源项目(学习与研究)
- Oracle 解决'PLAN_TABLE' is old version问题
- java中 stack与和heap的区别
- Android中Canvas绘图基础详解(附源码下载)