項(xiàng)目需求###
我們來(lái)設(shè)計(jì)個(gè)實(shí)戰(zhàn)項(xiàng)目需求
項(xiàng)目名稱:在線考試系統(tǒng)接校。包含
1、用戶信息表
2狮崩、試卷信息表
3蛛勉、用戶提交的答案表
4、統(tǒng)計(jì)分析表
5睦柴、其他信息表
建立一個(gè)數(shù)據(jù)庫(kù)ithink
比較數(shù)據(jù)庫(kù)引擎InnoDB與MyISAM的執(zhí)行效率
建立兩張表诽凌,user_sys和user_sys2,表的結(jié)構(gòu)和數(shù)據(jù)一樣user_sys的引擎設(shè)置為InnoDB,user_sys2的引擎設(shè)置為MyISAM坦敌。
寫一個(gè)函數(shù)insert_user_sys(IN t int) 分別向兩張表插入20條數(shù)據(jù);
user_sys用戶表結(jié)構(gòu):
id int 自增
user_name varchar(30)
user_pwd varchar(30)
user_regdate timestamp 默認(rèn)值是CURRENT_TIMESTAMP
begin
set @num=1;
while @num<20 DO
if t=1 then
insert into user_sys (user_name,user_pwd) values(concat('user',@num),'123');
else
insert into user_sys2 (user_name,user_pwd) values(concat('user',@num),'123');
end if;
set @num=@num+1;
end while;
end
user_sys使用的時(shí)間為0.076s(InnoDB)
user_sys2使用的時(shí)間為0.003s(MyISAM)
可以看到MyISAM的插入速度遠(yuǎn)比InnoDB塊侣诵,所以如果插入數(shù)據(jù)量特別大的時(shí)候招刹,可以先設(shè)置表為MyISAM,當(dāng)數(shù)據(jù)插入完畢后窝趣,再設(shè)置后InnoDB
將上面的@num<20改為10000疯暑,然后執(zhí)行插入,
user_sys使用的時(shí)間是4.165s哑舒,user_sys2使用的時(shí)間是0.064s
比較查詢速度:
select * from user_sys; select * from user_sys2
結(jié)果:user_sys 為0.003s妇拯,user_sys為0.002s,數(shù)據(jù)量較小洗鸵,差距不是很明顯
注:
1越锈、InnoDB支持事務(wù)和外鍵,MyISAM則不支持
2膘滨、事務(wù)性表應(yīng)該使用InnoDB甘凭,頻繁讀取如select操作很頻繁的應(yīng)該使用MyISAM