Mysql InnoDB引擎的索引与存储结构详解

  

  

在Oracle和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。

  

而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。

  


  

  

MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB,另外还有合并、记忆(堆)等。

  

<强>主要的几个存储引擎
  

  

MyISAM管理非事务表,提供高速存储和检索,以及全文搜索能力。

  

MyISAM是Mysql的默认存储引擎。当创建创建新表时,未指定新表的存储引擎时,默认使用MyISAM。每个MyISAM在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是.frm(存储表定义),.MYD (MYData,存储数据),。MYI (MYIndex存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。

  

InnoDB存储引擎用于事务处理应用程序,具有众多特性,包括酸事务支持,提供了具有提交,回滚和崩溃恢复能力的事务安全。但是对比MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

  

内存将所有数据保存在内存中,可以应用于临时表中在需要快速查找引用和其他类似数据的环境下,可提供极快的访问.Memory使用哈希索引,所以数据的存取速度非常快。

  

合并允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。

  

<强>不同存储引擎的横向对比,

  

           特点   MyISAM   BDB   内存   InnoDB         存储限制   没有   没有   有   64年结核病         事务安全   ,   支持   ,   支持         锁机制   表锁   页锁   表锁   行锁         B树索引   支持   支持   支持   支持         哈希索引   ,   ,   支持   支持         全文索引   支持   ,   ,   ,         集群索引   ,   ,   ,   支持         数据缓存   ,   ,   支持   支持         索引缓存   支持   ,   支持   支持         数据可压缩   支持   ,   ,   ,         空间使用   低   低   N/A   高         内存使用   低   低   中等   高         批量插入的速度   高   高   高   低         支持外键   ,   ,   ,   支持            

  

<强>查看和配置存储引擎的操作
  

  

1。用显示引擎;命令可以显示当前数据库支持的存储引擎情况,
  

  

2。要查看表的定义结构等信息可以使用以下几种命令:
  

        Desc(活性离子束腐蚀)表;//查看数据表的结构   显示创建表的表;//显示表的创建语句,可以查看创建表时指定的引擎   显示表状态像‘表’\ G显示表的当前状态值      

3。设置或修改表的存储引擎
  

  

创建数据库表时设置存储存储引擎的基本语法是:

        创建表的表(   columnName(列名1)类型(数据类型)素质(属性设置),   columnName(列名2)类型(数据类型)素质(属性设置),   ……. .)引擎=engineName      

修改存储引擎,可以用命令

        改变表的表引擎=engineName      

对于整个服务器或方案,你并不一定要使用相同的存储引擎,可以为方案中的每个表使用不同的存储引擎。

  


  

  

InnoDB使用页面存储结构,下面是InnoDB的表空间结构图:

  

 Mysql InnoDB引擎的索引与存储结构详解

  

页面页面存储格式如下图所示:

  

 Mysql InnoDB引擎的索引与存储结构详解

  

<强>一个页面的存储由以下几部分组成:

  
      <李>页头(页眉):记录页面的控制信息,共占150字节,包括页的左右兄弟页面指针,页面空间使用情况等,页头的详细说明会在下一篇中描述。

    Mysql InnoDB引擎的索引与存储结构详解