MySQL数据迁移测试

    早上在笔记本上测试了一下, 以生成Insert语句的方式, 从Oracle到MySQL迁移数据的速度. 对于MySQL来讲, 是不是绑定变量并不重要, 在MySQL的客户端编程中, 并没有绑定变量的概念, 这是因为MySQL并没有Oracle中类似的共享池, 而是由每个连接进程自行去解释SQL并执行.

    写了一个Windows上的批处理脚本, 用SQLULDR2从Oracle中查询数据, 并生成MySQL的Insert脚本, 用管道输入到MySQL中去执行.

@echo off
echo %TIME%
sqluldr2 … table=emp_his format=mysql quote=0×27 escape=0×53 null=null file=- | mysql test
echo %TIME%

    首先在MyISAM下测试, 先将表改成MyISAM方式存贮.

mysql> alter table emp_his engine= myisam;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

    进行数据装载测试, 可以看出还是很快的.

D:\mysql-5.0.84-win32\bin>runload.bat
7:12:28.10
7:12:41.87

    查一下总共迁移的记录数.

mysql> select count(*) from emp_his;
+———-+
| count(*) |
+———-+
|  951308 |
+———-+
1 row in set (0.00 sec)

    接下来在Innodb下测试, 将表改成Innodb方式存贮.

mysql> alter table emp_his engine= innodb;
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

    进行数据装载测试, 可以看出比MyISAM要慢不少.

D:\mysql-5.0.84-win32\bin>runload.bat
7:09:34.85
7:10:06.15

    查一下总共迁移的记录数.

mysql> select count(*) from emp_his;
+———-+
| count(*) |
+———-+
|  951308 |
+———-+
1 row in set (2.11 sec)

    在MySQL中, 将同样的表从MyISAM转到Innodb, 需要多少时间?

mysql> alter table emp_his engine= innodb;
Query OK, 951308 rows affected (16.67 sec)
Records: 951308  Duplicates: 0  Warnings: 0

    对于在笔记本上测试的这个结果, 个人是相当满意的, 测试的表有8个字段, 差不多等于平均数.

觉得文章有用?立即: 和朋友一起 共学习 共进步!

猜您喜欢

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>