打造百万级别数据库

最近想全解了解 MySQL 的索引优化知识。当我打开本地数据库的时候,我惊了。只有几条数据默默的停在数据库表里面。因此,我就萌发自己造数据的想法。首先我想到时使用存储过程以及 do while循环语句。说干就干,当时我三两下就写好了存储过程语句。因为我使用的是 navicat 软件,所以不需要注意 ; 的编译问题,navicat 真香。

DROP  PROCEDURE wk;
create PROCEDURE wk()
begin
	declare i int DEFAULT 1;
	while i<1000000  do
	insert into person(id,`name`, `password`,age) values(i,CONCAT('a',i),CONCAT('b',i),i);
	set i = i +1;
	end while;
end; 

然后我就调用该存储过程。

call wk()

此时内心窃喜,so easy。谁知,大问题,我调了大半天这个存储过程,看看执行时间飞速流逝,我想要的百万数据迟迟都没有完成。心中一万个草泥马飞过。

后来,慢慢平复心情,默默打开浏览器,输入 小黄网,查询了资料。发现了问题所在,原来 mysql默认是自动提交事务的。我们可以自行查看。

show variables like 'autocommit';


当我们在编写带有循环的存储过程,其实程序每执行一次,都会提交一次事务。而我要提交一百万次,不卡成狗也是没天理了。于是,马上修改存储过程,让事务只需要提交一次。

DROP  PROCEDURE wk;
create PROCEDURE wk()
begin
	declare i int DEFAULT 1;
	SET AUTOCOMMIT=0; 
	while i<1000000  do
	insert into person(id,`name`, `password`,age) values(i,CONCAT('a',i),CONCAT('b',i),i);
	set i = i +1;
	end while;
	SET AUTOCOMMIT=1; 
end; 

调用存储过程

call wk()

最后,我只用了一分钟就打造完我的百万级别数据库。撒花!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值