美文网首页
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