项目需求###
我们来设计个实战项目需求
项目名称:在线考试系统。包含
1、用户信息表
2、试卷信息表
3、用户提交的答案表
4、统计分析表
5、其他信息表
建立一个数据库ithink
比较数据库引擎InnoDB与MyISAM的执行效率
建立两张表,user_sys和user_sys2,表的结构和数据一样user_sys的引擎设置为InnoDB,user_sys2的引擎设置为MyISAM。
写一个函数insert_user_sys(IN t int) 分别向两张表插入20条数据;
user_sys用户表结构:
id int 自增
user_name varchar(30)
user_pwd varchar(30)
user_regdate timestamp 默认值是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使用的时间为0.076s(InnoDB)
user_sys2使用的时间为0.003s(MyISAM)
可以看到MyISAM的插入速度远比InnoDB块,所以如果插入数据量特别大的时候,可以先设置表为MyISAM,当数据插入完毕后,再设置后InnoDB
将上面的@num<20改为10000,然后执行插入,
user_sys使用的时间是4.165s,user_sys2使用的时间是0.064s
比较查询速度:
select * from user_sys; select * from user_sys2
结果:user_sys 为0.003s,user_sys为0.002s,数据量较小,差距不是很明显
注:
1、InnoDB支持事务和外键,MyISAM则不支持
2、事务性表应该使用InnoDB,频繁读取如select操作很频繁的应该使用MyISAM
网友评论