MySQL的load data命令性能小测试


以下环境为:

软件:

主机:winxp sp3

虚拟机软件:wmware ws 7.1

虚拟机系统:rhel5.1+mysql5.157

主机硬件:

cpu:酷睿2 T8100

内存:3G

  1. mysql> desc t;   
  2. +-----------------+---------------------+------+-----+---------+-------+   
  3. | Field           | Type                | Null | Key | Default | Extra |   
  4. +-----------------+---------------------+------+-----+---------+-------+   
  5. | TABLE_CATALOG   | varchar(512)        | YES  |     | NULL    |       |    
  6. | TABLE_SCHEMA    | varchar(64)         | NO   |     | NULL    |       |    
  7. | TABLE_NAME      | varchar(64)         | NO   |     | NULL    |       |    
  8. | TABLE_TYPE      | varchar(64)         | NO   |     | NULL    |       |    
  9. | ENGINE          | varchar(64)         | YES  |     | NULL    |       |    
  10. | VERSION         | bigint(21) unsigned | YES  |     | NULL    |       |    
  11. | ROW_FORMAT      | varchar(10)         | YES  |     | NULL    |       |    
  12. | TABLE_ROWS      | bigint(21) unsigned | YES  |     | NULL    |       |    
  13. | AVG_ROW_LENGTH  | bigint(21) unsigned | YES  |     | NULL    |       |    
  14. | DATA_LENGTH     | bigint(21) unsigned | YES  |     | NULL    |       |    
  15. | MAX_DATA_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |    
  16. | INDEX_LENGTH    | bigint(21) unsigned | YES  |     | NULL    |       |    
  17. | DATA_FREE       | bigint(21) unsigned | YES  |     | NULL    |       |    
  18. | AUTO_INCREMENT  | bigint(21) unsigned | YES  |     | NULL    |       |    
  19. | CREATE_TIME     | datetime            | YES  |     | NULL    |       |    
  20. | UPDATE_TIME     | datetime            | YES  |     | NULL    |       |    
  21. | CHECK_TIME      | datetime            | YES  |     | NULL    |       |    
  22. | TABLE_COLLATION | varchar(32)         | YES  |     | NULL    |       |    
  23. | CHECKSUM        | bigint(21) unsigned | YES  |     | NULL    |       |    
  24. | CREATE_OPTIONS  | varchar(255)        | YES  |     | NULL    |       |    
  25. | TABLE_COMMENT   | varchar(80)         | NO   |     | NULL    |       |    
  26. +-----------------+---------------------+------+-----+---------+-------+   
  27. 21 rows in set (0.04 sec)   
  28. mysql> select count(*) from t;   
  29. +----------+   
  30. | count(*) |   
  31. +----------+   
  32. |   502564 |    
  33. +----------+   
  34. 1 row in set (0.00 sec)   
  35. mysql> select * from t into outfile '/tmp/t.txt' fields terminated by ',' enclosed by '"';   
  36. Query OK, 502564 rows affected (5.09 sec)   
  37. mysql> create table t1 select * from t where 1<>1;   
  38. Query OK, 0 rows affected (0.02 sec)   
  39. Records: 0  Duplicates: 0  Warnings: 0   
  40. mysql> select * from t1;   
  41. Empty set (0.01 sec)   
  42. mysql> load data infile '/tmp/t.txt' into table t1 fields terminated by ',' enclosed by '"';   
  43. Query OK, 502564 rows affected (8.73 sec)   
  44. Records: 502564  Deleted: 0  Skipped: 0  Warnings: 0   
  45. mysql> select count(*) from t;   
  46. +----------+   
  47. | count(*) |   
  48. +----------+   
  49. |   502564 |    
  50. +----------+   
  51. 1 row in set (0.00 sec)   
  52. mysql> select count(*) from t1;   
  53. +----------+   
  54. | count(*) |   
  55. +----------+   
  56. |   502564 |    
  57. +----------+   
  58. 1 row in set (0.00 sec)   
  59. mysql>   

图1 用 information_schema.tables来生成测试表t.

  1. [root@rhel5 ~ 05:04:56]#ll -h /tmp   
  2. total 88M   
  3. -rw-rw-rw- 1 mysql  mysql      80 Sep 21 16:16 a.txt   
  4. drwx------ 2 root   root     4.0K Feb 18  2015 keyring-mViyDu   
  5. srwxr-xr-x 1 Oracle oinstall    0 Aug  3  2010 mapping-oracle   
  6. srwxr-xr-x 1 root   root        0 Feb 18  2015 mapping-root   
  7. -rw-rw---- 1 mysql  mysql    2.8K Sep 21 16:56 mysqlslow.log   
  8. srwxrwxrwx 1 mysql  mysql       0 Sep 21 15:17 mysql.sock   
  9. srw------- 1 oracle oinstall    0 Aug  3  2010 scim-panel-socket:0-oracle   
  10. srw------- 1 root   root        0 Feb 18  2015 scim-panel-socket:0-root   
  11. drwx------ 2 root   root     4.0K Sep 21 17:02 ssh-kahSRu6355   
  12. drwx------ 2 root   root     4.0K Sep 21 16:16 ssh-XCGOuG6217   
  13. -rw-rw-rw- 1 mysql  mysql     88M Sep 21 17:01 t.txt  

图2 测试表t导出数据文件为t.txt

测试过程如下:

用 insert into t select * from t; 不断插入数据直到其记录数为50万条。

然后把t的数据导入到文本文件中。

用loaddata命令把文本文件中的数据导入到表t2中。

各操作时间已经显示在图中,速度比我预想得要快得多!

相关内容