mysql不充分利用我的cpu和ram?

时间:2010-06-06 03:21:34

标签: mysql

我正在将2.5gb的csv文件导入mysql表。我的存储引擎是innodb。这是脚本:

use xxx;
DROP TABLE IF EXISTS `xxx`.`xxx`;
CREATE TABLE  `xxx`.`xxx` (
  `xxx_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(128) NOT NULL,
  `yy` varchar(128) NOT NULL,
  `yyy` varchar(64) NOT NULL,
  `yyyy` varchar(2) NOT NULL,
  `yyyyy` varchar(10) NOT NULL,
  `url` varchar(64) NOT NULL,
  `p` varchar(10) NOT NULL,
  `pp` varchar(10) NOT NULL,
  `category` varchar(256) NOT NULL,
  `flag` varchar(4) NOT NULL,
  PRIMARY KEY (`xxx_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
set autocommit = 0;
load data local infile '/home/xxx/raw.csv' 
into table company
fields terminated by ',' optionally enclosed by '"'
lines terminated by '\r\n'
(
  name,
  yy,
  yyy,
  yyyy,
  yyyyy,
  url,
  p,
  pp,
  category,
  flag
);
commit;

为什么我的PC(核心i7 920和6GB内存)在运行这些查询时只消耗9%的CPU功率和60%的内存?

2 个答案:

答案 0 :(得分:8)

可能是因为它是一个受I / O限制的进程。这意味着该过程中最慢的部分是从磁盘读取CSV文件并将MySQL数据库写回磁盘。磁盘访问速度远远低于计算机内部的任何其他内容,因此您的CPU可能只需要几个百分点的使用率来跟上它。

此外,MySQL正在一次复制数据,而不是一次复制,因此它只需要在RAM中一次存储一点。这就是它可能没有使用大量内存的原因。

答案 1 :(得分:1)

因为它不是真正的CPU或内存操作,它主要是磁盘I / O操作吗?