美文网首页@IT·互联网
mysql常用的两种引擎

mysql常用的两种引擎

作者: 无崖老师 | 来源:发表于2020-03-06 18:03 被阅读0次

    引擎的介绍

    形式:
     create table tableName()engine=MyIsAM | InnoDB;
    

    作用:
    一种用来存储MySQL中对象(记录和索引)的一种特定的结构(文件结构)存储引擎,处于MySQL服务器的最底层,直接存储数据,规定数据存储的格式。导致上层的操作,依赖于存储引擎的选择.


    图片.png

    查看mysql数据库,支持的存储引擎有那些
    show engines;


    图片.png

    InnoDB

    介绍:

    =5.5 默认的存储引擎,MySQL推荐使用的存储引擎。
    提供事务,行级锁定,外键约束的存储引擎。
    事务安全型存储引擎。更加注重数据的完整性和安全性。
    可以很好的解决高并发的问题.
    行级锁定:
    数据库的数据都是一行一行的存在,如果有需要进行锁定的时候只是锁住一行数据.这样就不妨碍其他人的使用.
    [存储格式]
    非单独文件存放数据(数据库名 = 文件夹名)
    数据库信息 -> db.opt
    表结构frm -> 表名.frm
    create database php16;


    图片.png

    b 观察创建成功之后php16数据库的文件结构


    图片.png

    c 在php16数据库中创建数据表
    create table innodb_1(
    id mediumint auto_increment primary key,
    name varchar(10) not null
    )engine=InnoDB;

    图片.png

    d innodb_1数据表创建成功之后,观察文件的结构


    图片.png

    f 插入数据进行测试:ibdata1
    insert into innodb_1 values(null,'段誉');
    insert into innodb_1 values(null,'虚竹');
    insert into innodb_1 values(null,'乔峰');
    insert into innodb_1 values(null,'王语嫣');
    insert into innodb_1 values(null,'天山童老');
    insert into innodb_1 values(null,'慕容复');


    图片.png 图片.png

    问题:

    innodb把所有的数据都放在一个文件中,一旦这个文件损坏,所有的数据都丢失了.
    解决办法:可以进行配置,把数据文件单独存放.

    配置数据文件的单独存放:
    set global innodb_file_per_table=1;(不推荐这种配置)


    图片.png

    MyISAM

    介绍
    <= 5.5 MySQL默认的存储引擎。
    如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性要求不是很高;其优势是访问的速度快,擅长与处理高速读与写。
    ISAM:Indexed Sequential Access Method(索引顺序存取方法)的缩写,是一种文件系统。
    数据文件的存储:
    所有表的数据文件都是单独存放的,表中的索引和数据也是单独存放的.
    数据库结构文件:db.opt
    表中数据的存放文件: 表明.MYD
    表中索引数据的存放文件:表名.MYI
    表结构的定义文件:表名.frm.

    因为myisam的所有文件都是独立存放的,所以我们在读取的时候,速度就会比较快.

    测试

    a 新建myisam引擎数据表
    create table myisam_2(
    id mediumint auto_increment,
    name varchar(10) not null
    )engine=MyISAM;


    图片.png

    b 查看数据表的结构文件


    图片.png

    数据的插入,观察取出顺序

    a 插入数据
    insert into myisam_2 values(1,'段誉');
    insert into myisam_2 values(11,'虚竹');
    insert into myisam_2 values(5,'乔峰');
    insert into myisam_2 values(6,'王语嫣');
    insert into myisam_2 values(9,'天山童老');
    insert into myisam_2 values(8,'慕容复');

    b 取出的数据,观察顺序


    图片.png

    两种引擎的对比

    图示


    图片.png

    两中数据库引擎,如何选择呢?

    1 如果是希望以最节约空间和时间的或响应速度更快的方式来管理表,MyISAM数据表是最好的选择.
    2 如果新建的表需要用到事务,使用外键或者更高的安全性,以及需要很多用户同时修改(并发问题)某一个表中的数据,则InnoDB数据表更值得考虑.
    其他引擎
    Archive
    存档型。
    仅提供:插入和读取操作。没有更新和删除操作。
    做:日志类,存档类 业务逻辑。

    Memory
    内存型。
    在内存中存储数据和索引。
    特点:快。缓存型引擎。

    相关文章

      网友评论

        本文标题:mysql常用的两种引擎

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