我有一个表像这样MySQL的INSERT INTO索引表需要长时间之后几百万条记录
CREATE TABLE IF NOT EXISTS `dnddata` (
`numbers` varchar(10) NOT NULL,
`opstype` char(1) NOT NULL,
PRIMARY KEY (`numbers`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
/*!50100 PARTITION BY KEY (numbers)
PARTITIONS 25 */;
我必须插入件300万条记录。我每次使用csv文件中的load data in file
插入1000万条记录。
要插入1000万条第一次记录需要近5分钟的记录。时间逐渐增加。在30万条记录停止插入和使用100%服务器没有响应的内存之后。
下面我my.cnf
文件
bulk_insert_buffer_size = 100M
key_buffer = 100M
sort_buffer_size = 50M
read_buffer = 50M
我使用CPU搭配2G内存设置。
细节30万个记录
Space usage
Type Usage
Data 545.3 MiB
Index 694.8 MiB
Total 1,240.1 MiB
MySQL client version: 5.5.14
与出索引它插入细1000万50秒。
请告诉我需要改变什么样的设置。
'数字'需要是varchar吗?整数列上的索引肯定会更有效。 – Sam 2012-07-24 07:17:13
@sam。数字必须是varchar。因为这些是手机号码,超出了整数值。 – 2012-07-24 07:20:32
您可以使用BIGINT,但它仍然比varchar更快。 – Omesh 2012-07-24 07:28:35