Chinaunix首页 | 论坛 | 博客
  • 博客访问: 65104
  • 博文数量: 22
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 260
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-16 21:39
文章分类

全部博文(22)

文章存档

2010年(3)

2009年(11)

2008年(8)

我的朋友

分类: Mysql/postgreSQL

2009-03-04 14:23:36

mysql> show create procedure pro_addusers\G
*************************** 1. row ***************************
       Procedure: pro_addusers
        sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_addusers`(userconut int)
begin
  set @i = 0;
  repeat set @i = @i + 1;
  insert into users values (@var:=replace(uuid(),'-',''),left(@var,10),@var,'abcdefghijglmn');
  until @i = userconut end repeat;
end
1 row in set (0.00 sec)


mysql> show create procedure pro_addusers\G
*************************** 1. row ***************************
       Procedure: pro_addusers
        sql_mode:
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_addusers`(userconut int)
begin
  set autocommit=0;
  set @i = 0;
  repeat set @i = @i + 1;
  insert into users values (@var:=replace(uuid(),'-',''),left(@var,10),@var,'abcdefghijglmn');
  if @i%1000=0 then commit;
  end if;
  until @i = userconut end repeat;
end
1 row in set (0.00 sec)

上面两个存储过程,向同一个INNODB表插入同样的数据量,时间差两个数量级。
插入10万条记录,前者10分钟,后者1秒钟。
所以对INNODB表批量处理数据的时候,最好不要用自动提交。
阅读(740) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~