MyISAM存储引擎简介

MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。

首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI文件,分别存放了表的数据(.MYD)和索引数据(.MYI)。每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI文件中。

MyISAM支持以下三种类型的索引:

1、B-Tree索引

B-Tree索引,顾名思义,就是所有的索引节点都按照balancetree的数据结构来存储,所有的索引数据节点都在叶节点。

2、R-Tree索引

R-Tree索引的存储方式和b-tree索引有一些区别,主要设计用于为存储空间和多维数据的字段做索引,所以目前的MySQL版本来说,也仅支持geometry类型的字段作索引。

3、Full-text索引

Full-text索引就是我们长说的全文索引,他的存储结构也是b-tree。主要是为了解决在我们需要用like查询的低效问题。

MyISAM上面三种索引类型中,最经常使用的就是B-Tree索引了,偶尔会使用到Full-text,但是R-Tree索引一般系统中都是很少用到的。另外MyISAM的B-Tree索引有一个较大的限制,那就是参与一个索引的所有字段的长度之和不能超过1000字节。

MyISAM存储引擎的表是否足够可靠呢?在MySQL用户参考手册中列出在遇到如下情况的时候可能会出现表文件损坏:

1、当mysqld正在做写操作的时候被kill掉或者其他情况造成异常终止;

2、主机Crash;

3、磁盘硬件故障;

4、MyISAM存储引擎中的bug?

MyISAM存储引擎的某个表文件出错之后,仅影响到该表,而不会影响到其他表,更不会影响到其他的数据库。如果我们的数据库正在运行过程中发现某个MyISAM表出现问题了,则可以在线通过checktable命令来尝试校验他,并可以通过repairtable命令来尝试修复。在数据库关闭状态下,我们也可以通过myisamchk工具来对数据库中某个(或某些)表进行检测或者修复。不过强烈建议不到万不得已不要轻易对表进行修复操作,修复之前尽量做好可能的备份工作,以免带来不必要的后果。

Innodb 存储引擎简介

在MySQL中使用最为广泛的除了MyISAM之外,就非Innodb莫属了。Innodb做为第三方公司所开发的存储引擎,和MySQL遵守相同的开源License协议。

Innodb之所以能如此受宠,主要是在于其功能方面的较多特点:

1、支持事务安装

Innodb在功能方面最重要的一点就是对事务安全的支持,这无疑是让Innodb成为MySQL最为流行的存储引擎之一的一个非常重要原因。而且实现了SQL92标准所定义的所有四个级别的要求(READUNCOMMITTED,READCOMMITTED,REPEATABLEREAD和SERIALIZABLE)。

2、数据多版本读取

Innodb在事务支持的同时,为了保证数据的一致性已经并发时候的性能,通过对undo信息,实现了数据的多版本读取。

3、锁定机制的改进

Innodb改变了MyISAM的表锁机制,实现了行锁。Innodb的行锁机制的实现是通过索引来完成的,而数据库中99%的SQL语句都是要使用索引来做检索数据的。所以,行锁定机制也无疑为Innodb在承受高并发压力的环境下增强了不小的竞争力。

4、实现外键

Innodb实现了外键引用这一数据库的重要特性,使在数据库端控制部分数据的完整性成为可能。虽然很多数据库系统调优专家都建议不要这样做,但是对于不少用户来说在数据

库端加如外键控制可能仍然是成本最低的选择。

除了以上几个功能上面的亮点之外,Innodb 在物理存储方面,Innodb存储引擎也和MyISAM不太一样,虽然也有.frm文件来存放表结构定义相关的元数据,但是表数据和索引数据是存放在一起的。至于是每个表单独存放还是所有表存放在一起,完全由用户来决定(通过特定配置)。

MySql常用两大存储引擎简介的更多相关文章

  1. Mysql的两种存储引擎以及区别

    一.Mysql的两种存储引擎 1.MyISAM: ①不支持事务,但是整个操作是原子性的(事务具备四种特性:原子性.一致性.隔离性.持久性) ②不支持外键,支持表锁,每次所住的是整张表     MyIS ...

  2. MySQL两大存储引擎:MyISAM和InnoDB

    Mysql有两大常用的存储引擎MyISAM,InnoDB,默认的形式是前者. 两者基本的差别是对事务处理.外键和行级锁的主持上,InnoDB支持事务处理.外键等高级特性,而MyISAM不支持.MyIS ...

  3. MySQL两大存储引擎InnoDB与MyISAM

    1.InnoDB存储引擎 MySQL5.5中InnoDB成为默认的存储引擎.InnoDB是事务型存储引擎,被设计用来处理大量的短期事务.它的性能和自动崩溃恢复特性,使得它在非事务场景中也很流行. 所以 ...

  4. mysql的两种存储引擎

    MySQL 有多种存储引擎,目前常用的是 MyISAM 和 InnoDB 这两个引擎,除了这两个引擎以为还有许多其他引擎,有官方的,也有一些公司自己研发的.这篇文章主要简单概述一下常用常见的 MySQ ...

  5. MySQL 的两种存储引擎

    MyISAM 是MySQL的默认数据库引擎(5.5以后默认是InnoDB)性能极佳,但不支持事务处理. InnoDB 是MySQL的数据库常用的数据引擎. MyISAM 和 InnoDB 两者之间有明 ...

  6. MYSQL的两种存储引擎区别

    Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL ...

  7. Mysql有两种存储引擎:InnoDB与Myisam

    http://www.cnblogs.com/kevingrace/p/5685355.html

  8. MySQL的两种存储引擎storage engine特点和对比

    MyISAM 优点:快速读取数据, 占用空间小 缺点:不支持事务,外键 (表级别锁) InnoDB 优点:支持事务,外键; 高性能(CPU效率高) 缺点: 慢,占空间 (行级别锁)

  9. 第 3 章 MySQL 存储引擎简介

    第 3 章 MySQL 存储引擎简介 前言 3.1 MySQL 存储引擎概述 MyISAM 存储引擎是 MySQL 默认的存储引擎,也是目前 MySQL 使用最为广泛的存储引擎之一.他的前身就是我们在 ...

随机推荐

  1. Android OnLowMemory和OnTrimMemory

    1.OnLowMemory 是Android提供的API,在系统内存不足,所有后台程序(优先级为background的进程,不是指后台运行的进程)都被杀死时,系统会调用OnLowMemory. 系统提 ...

  2. ffplay的快捷键以及选项

    ffplay是ffmpeg工程中提供的播放器,功能相当的强大,凡是ffmpeg支持的视音频格式它基本上都支持.甚至连VLC不支持的一些流媒体都可以播放(比如说RTMP),但是它的缺点是其不是图形化界面 ...

  3. 总账追朔各模块SQL

    SELECT gjh.set_of_books_id, gjl.je_line_num, mta.organization_id, ood.organization_code, ood.organiz ...

  4. OAF实现下拉菜单联动

    当需要输入多个下拉菜单选项时,可能某些下拉菜单是有级联关系的.这时候就需要使用级联的下拉菜单来解决.下面的教程将介绍如何使用ppr制作级联下拉菜单 一.新建AM 在test.oracle.apps.c ...

  5. Linux - quota的举例说明

    实作 Quota 流程-1:文件系统支持 [root@www ~]# df -h /home Filesystem Size Used Avail Use% Mounted on /dev/hda3 ...

  6. OpenCV——色调映射

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...

  7. 客户全局信用控制&非全局信用控制

    看个简单的例子 客户信用限额 非全局信用控制 非全局信用控制比较简单,我们看一下全局信用控制 设置: 实现结果:全局&非全局对比

  8. 部署与管理ZooKeepe

    1.部署 本章节主要讲述如何部署ZooKeeper,包括以下三部分的内容: 1. 系统环境 2. 集群模式的配置 3. 单机模式的配置 系统环境和集群模式配置这两节内容大体讲述了如何部署一个能够用于生 ...

  9. bash配置文件说明

    login shell: /etc/profile 所有用户全局设定,它首先会调用以下文件:     /etc/inputrc     /etc/profile.d/*.sh     /etc/sys ...

  10. Qt5中this application has requested the runtime to terminate it in an unusual way 无法运行问题的解决

    在windows平台使用Qt5.8mingw版写出的程序,在Qt中运行正常,而以release的形式编译并且补充完必要的dll文件后,在其他电脑上运行出现了以下问题: 经过查阅许多资料和亲身实验,终于 ...