Mysql常用的存储引擎

一、概述:

    数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除(增删改查)数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySql的核心就是存储引擎。

二、查看Mysql支持的存储引擎

    SHOW ENGINES;



三、常用的存储引擎介绍

    1. InnoDB存储引擎

        InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。

    特点:支持事务、外键具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎,行级锁定

    数据存储顺序:   

   Innodb表数据的存储是按照主键的顺序排列每个写入的数据,该特点决定了该表类型写入数据的操作较慢    

    注意: 

        事务: 把许多写入(增、改、删)sql语句捆绑在一起,要么执行、要么不执行事务经常用于与有关的方面

        四个特点: 原子,一致,持久,隔离

        具体操作:

        start transaction;

        许多写入sql语句

      sql语句有问题

    rollback;回滚

               commit;提交


      rollbackcommit只能执行一个

并发性:

    该存储类型的并发性较高,多人同时操作该数据表时,为了使数据表的内容不容易发生变化需要对该表的数据进行'锁定'

 该类型的锁为行级锁,只锁定被操作当期的纪录。


InnoDB不创建目录,使用InnoDB时,该类型 数据、索引 的物理文件位置:

    所有innodb表的数据和索引信息都存储在以下ibdata1文件中。

    注: 可以为每个innodb类型表创建自己的存储空间,默认情况下,每个InnoDB表数据和索引不会创建单独的文件存储


    2.Myisam存储引擎

        MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务。    

① 该类型的数据表  表结构、数据、索引 都有独立的存储文件:

MyISAM数据表:

    *.frm:表结构文件

    *.MYD:表数据文件

    *.MYI:表索引文件

每个myisam数据表的 结构、数据、索引 都有独立的存储文件

特点:独立的存储文件可以单独备份、还原


② 数据存储顺序:Myisam数据表存储是按照自然顺序排列每个写进的数据

特点: 该特点决定了该类型的数据表写入数据的速度较快

③ 并发性:

    该存储类型的数据表的并发性较低。

    原因:该类型锁的级别是——表锁

④ 压缩机制

    如果一个数据表的数据非常多,为了节省存储空间,需要对表进行压缩处理

    压缩工具: myisampack.exe  表名

    重建索引: myisamchk.exe -rq 表名

    解压缩工具: myisamchk.exe --unpack 表名

    注:

        压缩后的数据表不能进行插入,更新,删除(只能读)操作,需要操作时需要先进行解压,写入数据后再压缩 

    压缩的数据表特点: 不能频繁的写入操作,知识内容固定的数据表可以做成压缩处理

        例如: 存储全国地区信息的数据表,收货地址信息的数据表


总结:

    Innodb存储引擎:适合做修改,删除

    Myisam存储引擎:适合做查询,写入


3. Archive(归档存储引擎)

    该引擎只有写入,查询操作,没有修改,删除操作。Archive支持高并发的插入操作,但是本身不是事务安全的;

    比较适合存储「日志」性质的信息


4. Memory

    如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

    特点:操作数独非常快,但是服务器断电,给存储引擎的数据立即丢失。


使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能




阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页