打造百萬級別數據庫

最近想全解了解 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()

最後,我只用了一分鐘就打造完我的百萬級別數據庫。撒花!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章