美文网首页
web级mysql学习笔记(一)项目需求设计

web级mysql学习笔记(一)项目需求设计

作者: akon2016 | 来源:发表于2017-02-12 14:52 被阅读14次

项目需求###

我们来设计个实战项目需求
项目名称:在线考试系统。包含
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

相关文章

网友评论

      本文标题:web级mysql学习笔记(一)项目需求设计

      本文链接:https://www.haomeiwen.com/subject/tntnittx.html