zoukankan      html  css  js  c++  java
  • MySQL 存储引擎

    MySQL的基本架构:

     MySQL大致可以分为Server层和存储引擎层两部分

      Server层包括:连接器,分析器,优化器,执行器。

      存储引擎架构模式是插件式的,支持InnoDB,MyISAM,Memory等。可以使用show table status查看表的相关信息。

    InnoDB引擎:

    MySQL的默认事务性引擎,也是最常用的存储引擎。

    主要特性:

      1.InnoDB支持行锁,外键

      2.InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读。这  些功能增加了多用户部署和性能。在SQL查询中,可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合

      3.InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的

      4.InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件)。

      5.InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键。

      6.提供了良好的崩溃修复能力和并发控制

    缺点:

      读写效率较差,占用的数据空间相对较大

    InnoDB中,创建的表的表结构存储在.frm文件中。数据和索引存储在innodb_data_home_dir和innodb_data_file_path定义的表空间中。

    InnoDB使用B+Tree作为索引结构,

      主键索引,叶子节点存放就是数据本身了,叶子节点上存放的是所有的数据

      普通索引,叶子节点只存放了创建索引的属性和主键,如果想知道所有的属性,需要通过得到的主键再去主键索引树上查询。

    MyISAM引擎

    基于ISAM存储引擎,MyISAM拥有较高的插入、查询速度,但不支持事务。

    主要特性:

      1.大文件(达到63位文件长度)在支持大文件的文件系统和操作系统上被支持。

      2.当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成。

      3.每个MyISAM表最大索引数是64,这可以通过重新编译来改变。每个索引最大的列数是16

      4.NULL被允许在索引的列中,这个值占每个键的0~1个字节

      5.可以把数据文件(.MYD)和索引文件(.MYI)放在不同目录(InnoDB是放在一个目录里面的)

      6.占用空间小,读写速度快

    缺点:

      不支持事务

    MyISAM的表存储成3个文件。文件的名字与表名相同。拓展名为frmMYDMYI。其实,frm文件存储表的结构;MYD文件存储数据,是MYData的缩写;MYI文件存储索引,是MYIndex的缩写。

    MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址,再根据地址找到数据。

    Memory引擎: 

      1.MEMORY表支持hash索引,查找操作非常快

      2.MEMORY表使用一个固定的记录长度格式

      3.MEMORY不支持BLOB或TEXT列

      4.Memory表每行的长度固定,即使制定了varchar列,实际存储也会转换为char

      5.MySQL在执行查询过程中需要使用临时表来保存中间结果,内部使用的临时表为Memory表。如果中间结果过大或含有BLOB,TEXT字段,临时表会转化为MyISAM表。

    缺点:

      如果重启机器或者关机,表中的所有数据都将消失,因此,基于Memory存储引擎的表的生命周期都比较短,一般都是一次性的。

    引擎的选择:

    引擎 InnoDB MyISAM Memory
    支持事务 YES NO NO
    支持全文索引 NO   YES  NO
    插入数据的速度
    支持外键 YES NO NO
    支持热备份 YES NO NO
    崩溃恢复效率
  • 相关阅读:
    Linux系统性能优化
    Linux内核模块
    Linux守护进程的启动方法
    已有的游戏如何快速稳定迁移到云上?
    项目重构--使用策略模式
    设计模式学习--装饰者模式(Decorator Pattern)
    C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
    Resharper上手指南
    ReSharper 配置及用法(转)
    使用线程新建WPF窗体(公用进度条窗体)
  • 原文地址:https://www.cnblogs.com/jiezai/p/12287308.html
Copyright © 2011-2022 走看看