Mysql的引擎详解

一、数据库的定义

我们说的Mysql数据库是数据库管理系统。其中包含了数据的存储,查询,以及更新数据库中存储数据的的功能等。

二、存储引擎的定义

关系型数据库是以表的形式存储在文件或者内存中。而存储引擎可以称为操作,存储这些表的类型

三、支持的存储引擎

1
$ mysql> show engines;

图片描述

四、详解InnoDB引擎

InnoDB引擎是一个常用的事务型存储引擎。提供了事务,行级锁机制和外键约束的功能。适用于以下场合:

  1. 事务
  2. 外键约束
  3. 崩溃后的灾难恢复
  4. 高并发,更新密集型的表
  5. 不支持全文索引

在RUN001数据库中创建MYTABLE,MYTABLE1两张表使用InnoDB引擎,在RUN001文件夹下会生成多个文件:
图片描述

.frm结尾的文件是表结构文件

  • [tips: 这个文件与数据库引擎无关,任何存储引擎都会去生产这个与表名同名的文件。可以用来在数据库奔溃时恢复表结构]

.ibd结尾的文件这个是单表空间文件(独立表空间),也就是每个表使用一个表空间文件。存储该表的相关的数据,索引。

  • [tips:如果是共享表空间,表数据和索引会保存在默认表空间文件是ibdata1(默认)中,这时候是所有表共用ibdata1(一个或者多个)文件。而bdata1文件不会在RUN001文件夹下]

.opt结尾的文件是存储改数据库下的所有表的字符集和排序规则

五、详解MyISAM引擎

MyISAM引擎则是不支持事务,行级锁和外键约束的。并且是强调性能,执行速度的引擎。适用于以下场合:

  1. 新增密集的表,在表有读取查询的同时,支持往表中插入新纪录
  2. 筛选select密集的表
  3. 支持全文索引
  4. 不支持行锁,读取时对需要读到的所有表加锁,写入时则对表加排它锁

在RUN001数据库中创建MYTABLE2,MYTABLE3两张表使用InnoDB引擎,在RUN001文件夹下每张表都会生成三个文件在数据库:
图片描述

.frm结尾的文件是表结构文件
.MYD结尾的文件是存储数据文件
.MYI结尾的文件是存储表的索引文件

最后总结一下,InnoDB适合inset和update密集型的表,MyISAM适合select密集的表

提示:最后的归类总结跟引擎使用的索引有关,下节会讲到。

六、使用示例

1
$ create table MYTABLE2 (name VARCHAR(20), sex CHAR(1))ENGINE=MyISAM;

(完)

  • 本文作者:Cindy
  • 本文标题:Create Custom Demain Name Of Github Pages
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享4.0许可证)