我有一个简单的表测试有三个栏插入1万条记录中花费过多时间MYSQL
id -> primary key (auto increment)
name -> varchar
age -> int
我用一个简单的存储过程来填充表1万个数据。
drop PROCEDURE if EXISTS big_data;
CREATE PROCEDURE big_data()
BEGIN
DECLARE i int DEFAULT 1;
WHILE i <= 10000000 DO
INSERT INTO test(id, name, age) VALUES (i, 'name', 34);
SET i = i + 1;
END WHILE;
END;
CALL big_data();
问题我面临的是将100万条记录正在采取近6〜7小时,这个简单的模式。我想知道如何快速插入数据? 我不想使用LOAD DATA INFILE
查询,我没有更改my.ini文件中的任何设置。
只想知道插入太慢的原因?
系统规范
Mysql version 5.5.25a
innodb_version =1.1.8
System = 16GB RAM/8 cores @ 2.70 GHz
考虑到这是一种插入数据的非常低效的方式,您的数据库实际上是在每秒插入几百行数据。它没有那么坏。考虑到机器上的大多数内核对这种串行插入没有好处(它是单线程的)......简而言之,由于您使用的数据库错误,所以速度很慢。 –
我没有得到您使用错误的数据库@AssafLavie 的观点,并且还建议我使用有效的方式插入数据? – Ali
不是错误的分贝,但使用分贝错误的方式。批量插入或LOAD DATA。这就是它的目的。 –