- 浏览: 598469 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
fei33423:
同意你的说法. hbase 的强一致性分为两部分来说. 数据分 ...
浅谈Hbase 的强一致性 -
zengwenbo5566:
,高人,刚安装了 genymotion 那个附带 virtu ...
VirtualBox报错Unable to load R3 module GetLastError=1790 (VERR_UNRESOLVED_ERROR -
kabike:
QQ1289714862 写道这代码有问题吧 bar1 bar ...
AtomicBoolean运用 -
QQ1289714862:
这代码有问题吧 bar1 bar2 那来的 你是不是new了两 ...
AtomicBoolean运用 -
DEMONU:
需要依赖这么多东西啊
hbase 0.96和hadoop 2.2 java 客户端的jar依赖
mysql一般导入导出数据有两种方式,1是导出insert语句,然后插入,2是导出outfile,然后load data infile
实验用的的表如下
表里有30w数据
导出为outfile的方式为
导出的文件7M,里面就是逗号分割的数据
导出为insert文件的方式为
.\mysqldump.exe -u root -proot crap 20130208load > F:\temp\20130208load.sql
导出的文件8M,可以看到它导出的insert语句是insert into values()()()......的形式
下面准备导入到另一个数据allcrap_test中
1 insert 方法
mysql> use allcrap_test;
Database changed
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> source F:\\temp\\20130208load.sql
Query OK, 36537 rows affected (1.34 sec)
Records: 36537 Duplicates: 0 Warnings: 0
Query OK, 35535 rows affected (1.17 sec)
Records: 35535 Duplicates: 0 Warnings: 0
Query OK, 35537 rows affected (1.19 sec)
Records: 35537 Duplicates: 0 Warnings: 0
Query OK, 35536 rows affected (1.20 sec)
Records: 35536 Duplicates: 0 Warnings: 0
Query OK, 35544 rows affected (1.20 sec)
Records: 35544 Duplicates: 0 Warnings: 0
Query OK, 35540 rows affected (1.08 sec)
Records: 35540 Duplicates: 0 Warnings: 0
Query OK, 35542 rows affected (1.17 sec)
Records: 35542 Duplicates: 0 Warnings: 0
Query OK, 35534 rows affected (1.19 sec)
Records: 35534 Duplicates: 0 Warnings: 0
Query OK, 14695 rows affected (0.56 sec)
Records: 14695 Duplicates: 0 Warnings: 0
分为9次insert,差不多有10s
这里其实完全可以先把secondary索引去掉,然后插入,然后重建索引.
首先改下sqldump
.\mysqldump.exe --no-create-info -u root -proot crap 20130208load > F:\temp\20130208load_2.sql
加上了--no-create-info选项,没有导出DDL语句
这次先drop掉那个索引
alter table 20130208load drop index 20130208load_idx_uid
清空表(这是为了删除第一次导入的数据)
TRUNCATE table 20130208load
然后source命令
mysql> source F:\\temp\\20130208load_2.sql;
Query OK, 36537 rows affected (0.75 sec)
Records: 36537 Duplicates: 0 Warnings: 0
Query OK, 35535 rows affected (0.73 sec)
Records: 35535 Duplicates: 0 Warnings: 0
Query OK, 35537 rows affected (1.13 sec)
Records: 35537 Duplicates: 0 Warnings: 0
Query OK, 35536 rows affected (0.64 sec)
Records: 35536 Duplicates: 0 Warnings: 0
Query OK, 35544 rows affected (0.66 sec)
Records: 35544 Duplicates: 0 Warnings: 0
Query OK, 35540 rows affected (0.64 sec)
Records: 35540 Duplicates: 0 Warnings: 0
Query OK, 35542 rows affected (0.67 sec)
Records: 35542 Duplicates: 0 Warnings: 0
Query OK, 35534 rows affected (0.92 sec)
Records: 35534 Duplicates: 0 Warnings: 0
Query OK, 14695 rows affected (0.33 sec)
Records: 14695 Duplicates: 0 Warnings: 0
这次明显快多了,大概6.47s.
最后把secondary索引加上去就行了
2 然后试下load data infile
创建用于load data infile的表
create table 20130208load_infile like crap.20130208load
有索引的情况下load
9s
试下没有索引时候,用同样的load语句,花了5.2s多.
另外看了这篇文章
http://venublog.com/2007/11/07/load-data-infile-performance/
谈到了一些优化,在我的windows机器上,innodb_flush_method是无效的,
设置了innodb_doublewrite=0以后,变成了4.6s
这里有人谈到了,如果把load data infile的大文件拆分成若干个小文件,会不会提高性能.
从他的结果来看,貌似提高不明显.
http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/
另外吐槽下Navicat里执行source命令居然报语法错误 Err 1064,还是在mysql自带的客户端执行能好使.
哦?我这边没问题啊.我mysql是5.1的.
实验用的的表如下
show create table 20130208load; CREATE TABLE `20130208load` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `content` varchar(50) NOT NULL, PRIMARY KEY (`id`), KEY `20130208load_idx_uid` (`uid`) ) ENGINE=InnoDB
表里有30w数据
导出为outfile的方式为
SELECT * INTO OUTFILE 'F:\\temp\\20130122handler.txt' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM 20130122handler;
导出的文件7M,里面就是逗号分割的数据
导出为insert文件的方式为
.\mysqldump.exe -u root -proot crap 20130208load > F:\temp\20130208load.sql
导出的文件8M,可以看到它导出的insert语句是insert into values()()()......的形式
下面准备导入到另一个数据allcrap_test中
1 insert 方法
mysql> use allcrap_test;
Database changed
mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec)
mysql> source F:\\temp\\20130208load.sql
Query OK, 36537 rows affected (1.34 sec)
Records: 36537 Duplicates: 0 Warnings: 0
Query OK, 35535 rows affected (1.17 sec)
Records: 35535 Duplicates: 0 Warnings: 0
Query OK, 35537 rows affected (1.19 sec)
Records: 35537 Duplicates: 0 Warnings: 0
Query OK, 35536 rows affected (1.20 sec)
Records: 35536 Duplicates: 0 Warnings: 0
Query OK, 35544 rows affected (1.20 sec)
Records: 35544 Duplicates: 0 Warnings: 0
Query OK, 35540 rows affected (1.08 sec)
Records: 35540 Duplicates: 0 Warnings: 0
Query OK, 35542 rows affected (1.17 sec)
Records: 35542 Duplicates: 0 Warnings: 0
Query OK, 35534 rows affected (1.19 sec)
Records: 35534 Duplicates: 0 Warnings: 0
Query OK, 14695 rows affected (0.56 sec)
Records: 14695 Duplicates: 0 Warnings: 0
分为9次insert,差不多有10s
这里其实完全可以先把secondary索引去掉,然后插入,然后重建索引.
首先改下sqldump
.\mysqldump.exe --no-create-info -u root -proot crap 20130208load > F:\temp\20130208load_2.sql
加上了--no-create-info选项,没有导出DDL语句
这次先drop掉那个索引
alter table 20130208load drop index 20130208load_idx_uid
清空表(这是为了删除第一次导入的数据)
TRUNCATE table 20130208load
然后source命令
mysql> source F:\\temp\\20130208load_2.sql;
Query OK, 36537 rows affected (0.75 sec)
Records: 36537 Duplicates: 0 Warnings: 0
Query OK, 35535 rows affected (0.73 sec)
Records: 35535 Duplicates: 0 Warnings: 0
Query OK, 35537 rows affected (1.13 sec)
Records: 35537 Duplicates: 0 Warnings: 0
Query OK, 35536 rows affected (0.64 sec)
Records: 35536 Duplicates: 0 Warnings: 0
Query OK, 35544 rows affected (0.66 sec)
Records: 35544 Duplicates: 0 Warnings: 0
Query OK, 35540 rows affected (0.64 sec)
Records: 35540 Duplicates: 0 Warnings: 0
Query OK, 35542 rows affected (0.67 sec)
Records: 35542 Duplicates: 0 Warnings: 0
Query OK, 35534 rows affected (0.92 sec)
Records: 35534 Duplicates: 0 Warnings: 0
Query OK, 14695 rows affected (0.33 sec)
Records: 14695 Duplicates: 0 Warnings: 0
这次明显快多了,大概6.47s.
最后把secondary索引加上去就行了
alter table 20130208load add index 20130208load_idx_uid(uid);
2 然后试下load data infile
创建用于load data infile的表
create table 20130208load_infile like crap.20130208load
有索引的情况下load
load data INFILE 'F:\\temp\\20130208load.txt' INTO table 20130208load_infile FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
9s
试下没有索引时候,用同样的load语句,花了5.2s多.
另外看了这篇文章
http://venublog.com/2007/11/07/load-data-infile-performance/
谈到了一些优化,在我的windows机器上,innodb_flush_method是无效的,
设置了innodb_doublewrite=0以后,变成了4.6s
这里有人谈到了,如果把load data infile的大文件拆分成若干个小文件,会不会提高性能.
从他的结果来看,貌似提高不明显.
http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/
另外吐槽下Navicat里执行source命令居然报语法错误 Err 1064,还是在mysql自带的客户端执行能好使.
评论
2 楼
kabike
2013-02-25
JasonWilliams 写道
导出为outfile方式的代码有点小问题吧。。执行时会报错啊
应该是
SELECT * FROM 20130122handler INTO OUTFILE 'F:\\temp\\20130122handler.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
应该是
SELECT * FROM 20130122handler INTO OUTFILE 'F:\\temp\\20130122handler.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
哦?我这边没问题啊.我mysql是5.1的.
1 楼
JasonWilliams
2013-02-22
导出为outfile方式的代码有点小问题吧。。执行时会报错啊
应该是
SELECT * FROM 20130122handler INTO OUTFILE 'F:\\temp\\20130122handler.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
应该是
SELECT * FROM 20130122handler INTO OUTFILE 'F:\\temp\\20130122handler.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
发表评论
-
mysql 5.7关闭password validation,为root设置空密码
2018-05-20 11:44 0在centos 7.4上yum安装了mysql 5.7后,发现 ... -
centos系统下mysql load data infile报错(ERROR 29 (HY000): File '/tmp/data.txt' not fo)
2014-11-10 17:00 958执行load data infile报错 引用ERROR 29 ... -
CP还是AP?
2013-09-11 11:30 7225根据CAP理论,分布式存储系统最多只能满足其中两项.因为P是必 ... -
mysql大战mongodb
2013-04-03 21:39 7358nosql真是风起云涌,其中mongodb号称是比较像传统关系 ... -
innodb index的DDL
2013-04-03 21:14 987mysql的innodb表,如果想创建一个secondary ... -
mysql多列索引(Multiple-Part Index)多个列上range scan时使用in
2013-03-18 18:30 2361show create table 20130314t1 ... -
innodb不同事务隔离级别下行锁的释放
2013-03-13 19:37 4333innodb使用的是行锁,原来一直以为InnoDB不是只在最终 ... -
innodb的mvcc和read view
2013-03-03 12:18 6362最近读High Performance MySQL,里面提到了 ... -
Innodb log buffer的flush
2013-03-03 10:31 2481innodb为了保持事务的特性,需要redo log的支持, ... -
mysql case ... when语句的几个用法
2013-02-25 19:54 3967一般情况下,case ...when都 ... -
mysql的Late row lookups(延迟row查找)
2013-01-30 19:47 1807CREATE TABLE `20130122handler ... -
mysql Partition(分区)
2013-01-30 19:42 3107表数据量大的时候一般都考虑水平拆分,即所谓的sharding. ... -
innodb的buffer pool
2013-01-28 23:20 1743innodb是有buffer pool机制的,可以参考 htt ... -
mysql直接通过handler读取数据
2013-01-24 21:16 1440前几天在mysql文档中发现了它有个handlerhttp:/ ... -
mysql自带的性能测试工具mysqlslap
2013-01-24 21:14 1498想测试一下mysql的性能,可以使用它自带的工具mysqlsl ... -
mysql timestamp和int存储时间
2013-01-09 16:25 7755show create table 20130107date; ... -
[转载]MySQL索引背后的数据结构及算法原理
2012-12-29 16:46 889今天看到了一篇好文章,MySQL索引背后的数据结构及算法原理, ... -
mysql备份数据库权限
2012-11-12 17:35 1246不想用root用户备份mysql数据库,于是创建了专门用来备份 ... -
mysql的timestamp类型的列
2012-11-11 20:16 758用Mysql Query Browser 创建的表的某个列类型 ... -
mysql的PreparedStatement
2012-11-11 20:14 2178环境为 mysql 5.1.39 mysql-connecto ...
相关推荐
mysql快速导入百万级千万级数据 mysql快速导入百万级千万级数据 mysql快速导入百万级千万级数据 mysql快速导入百万级千万级数据 mysql快速导入百万级千万级数据 mysql快速导入百万级千万级数据
自己用JAVA做的第一个swing程序,用来快速导入导出MySQL数据库,导入整个库6万条数据只需要5秒钟,处女作 见笑了。 使用方法:需要系统支持JAVA环境并安装了MySQL,直接运行MySQLdump.jar,填好相应设置项,点击...
自己用JAVA做的第一个swing程序,用来快速导入导出MySQL数据库,导入整个库6万条数据只需要5秒钟,处女作 见笑了。 使用方法:需要系统支持JAVA环境并安装了MySQL,直接运行DBdump.jar,填好相应项,按步骤导入导出...
这个工具是之前写了做数据稽核用的工具,甲方发过来了几十个Excel表格,每个表格都有一百多万数据,必须导入数据库才能作分析,所以写了这个脚本用来导数据,做报表的可参考,改一下脚本中的数据库字段就能用了
主要介绍了MySQL如何快速导入数据,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
php快速导入1G以上大的mysql文件 bigdump.php 需要修改数据库配置和第66行左右 设置编码
可以用这个工具快速的将mysql数据库中的数据表批量导入到oracle数据库,非常方便! 只需要输入mysql和oracle链接地址,帐号,密码,选择要导入的表就可以了
使Excel数据同步到数据库中的源码
Excel导入到Mysql数据库源代码,快速、方便的将Excel表格数据导入到Mysql数据库
本地简单kettle抽MySQL数据到ES中 案例.zip本地简单kettle抽MySQL数据到ES中 案例.zip 本地简单kettle抽MySQL数据到ES中 案例.zip本地简单kettle抽MySQL数据到ES中 案例.zip 本地简单kettle抽MySQL数据到ES中 案例....
快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案.pdf
使用MySQL的SELECT INTO OUTFILE 、LOAD DATA INFILE快速导出导入数据 LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中。MySQL官方文档也说明了,该方法比一次性插入一条数据性能快20倍。
快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案资料.pdf