MySQL使用的是插件式存储引擎。

主要包含存储引擎有:MyISAM,Innodb,NDB Cluster,Maria。Falcon,Memory,Archive。Merge。Federated。

当中最为广泛的是MyISAM 和Innodb两种存储引擎。所以接下来对它们做简单介绍。

MyISAM 存储引擎简单介绍
MyISAM 存储引擎的表存储在数据库中,每个表都被存放为三个以表名命名的物理文件。
1、(.frm文件)不论什么存储引擎都必不可少的存放表结构定义信息的文件
2、(.MYD文件)存放表数据的文件
3、(.MYI文件)存放该表全部索引数据的文件
注:有且仅有这样三个文件做为MyISAM 存储类型的表的存储

MyISAM 的表以不同的格式存放在一个同样后缀名的.MYD 文件里。
当中格式分为:静态(FIXED)固定长度、动态(DYNAMIC)可变长度以及压缩(COMPRESSED)三种格式。
压缩:能够创建表的时候通过ROW_FORMAT 来指定{COMPRESSED | DEFAULT}(默认不压缩)
                            也能够通过myisampack 工具来进行压缩
非压缩:
      动态:只要表中有可变长度类型的字段存在,那么该表就肯定是DYNAMIC 格式的
      静态:假设没有不论什么可变长度的字段,则为FIXED 格式

MyISAM 支持下面三种类型的索引:
1、B-Tree 索引
    B-Tree 索引,全部的索引节点都依照balance tree 的数据结构来存储。全部的索引数据节点都在叶节点。
2、R-Tree 索引
    R-Tree 索引的存储方式和b-tree 索引有一些差别。主要设计用于为存储空间和多维数据的字段做索引,支持geometry 类型的字段作索引。
3、Full-text 索引
    Full-text 索引就是我们长说的全文索引。他的存储结构也是b-tree。主要是为了解决在我们须要用like 查询的低效问题。

注:參与一个索引的全部字段的长度之和不能超过1000 字节

Innodb 存储引擎简单介绍
1、支持事务安装
  实现了SQL92 标准所定义的全部四个级别(READ UNCOMMITTED,READ COMMITTED。REPEATABLE READ 和SERIALIZABLE)
2、数据多版本号读取
  Innodb 在事务支持的同一时候,为了保证数据的一致性已经并发时候的性能,通过对undo信息。实现了数据的多版本号读取。
3、锁定机制的改进
  Innodb 改变了MyISAM 的锁机制,实现了行锁。行锁机制的实现是通过索引来完毕的。
4、实现外键
  建议不要使用外键,数据库系统调优专家都建议不要使用
5、Innodb 的物理结构
  跟MyISAM一样:(.frm 文件)来存放表结构定义相关的元数据。

  跟MyISAM不一样:表数据和索引数据是存放在一起的

Innodb 的物理结构分为两大部分:
1、数据文件(表数据和索引数据)
  存放数据表中的数据和全部的索引数据。包含主键和其它普通索引。
  Innodb 的表空间分为两种形式:
    一种是共享表空间,也就是全部表和索引数据被存放在同一个表空间(一个或多个数据文件)中,
                      通过innodb_data_file_path 来指定,添加数据文件须要停机重新启动。
    第二种是独享表空间,也就是每个表的数据和索引被存放在一个单独的.ibd 文件里。

注:共享表空间是必须存在的,由于Innodb 的undo 信息和其它一些元数据信息都是存放在共享表空间里面的。

    共享表空间的数据文件是能够设置为固定大小和可自己主动扩展大小两种形式,
    自己主动扩展形式的文件能够设置文件的最大大小和每次扩展量。

2、日志文件
  Innodb 的日志文件和Oracle 的redo 日志比較相似:
    能够设置多个日志组(最少2个)。
    採用轮循策略来顺序的写入,
    甚至在老版本号中还有和Oracle 一样的日志归档特性。
注:千万别全部删除innodb 的日志文件。由于非常可能就会让你的数据库crash,无法启动。或者是丢失数据。

    Innodb 全然能够通过redo 日志将数据库Crash 时刻已经完毕但还没有来得及将数据写入磁盘的事务恢复,也能够将全部
部分完毕并已经写入磁盘的未完毕事务回滚并将数据还原。

    Innodb 的全部參数基本上都带有前缀“innodb_”。
    能够只通过參数(skip-innodb)来屏蔽MySQL 中的Innodb存储引擎。
    这样即使我们在安装编译的时候将Innodb 存储引擎安装进去了。使用者也无法创建Innodb 的表。

MySQL存储引擎简单介绍的更多相关文章

  1. MySQL存储引擎的介绍

    数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎还可以获得特定的功能. ...

  2. MySQL存储引擎入门介绍

    什么是MySQL? MySQL 是一种关系型数据库,在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的. ...

  3. {MySQL存储引擎介绍}一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用

    MySQL存储引擎介绍 MySQL之存储引擎 本节目录 一 存储引擎解释 二 MySQL存储引擎分类 三 不同存储引擎的使用 一 存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是 ...

  4. MySQL数据库(2)- 库的操作、表的操作、数据的操作、存储引擎的介绍

    一.库的操作 1.系统数据库 执行如下命令,查看系统数据库: mysql> show databases; 参数解释: information_schema: 虚拟库,不占用磁盘空间,存储的是数 ...

  5. mysql 存储引擎介绍

    一  存储引擎解释 首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点. 在讲清楚什么是存储引擎之前,我们先来个比喻, ...

  6. MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎

    文章目录 Mysql逻辑架构介绍 总体概览 总体概览 mysql存储引擎 查看命令 看你的 mysql 现在已提供什么存储引擎 : 看你的 mysql 当前默认的存储引擎 : 各个引擎简介 MyISA ...

  7. Mysql存储引擎概念特点介绍及不同业务场景选用依据

    目录 MySQL引擎概述 1 MySAM引擎介绍 2 什么是InnoDB引擎? 3 生产环境中如何批量更改MySQL引擎 4 有关MySQL引擎常见企业面试题 MySQL引擎概述 Mysql表存储结构 ...

  8. 数据库 --> MySQL存储引擎介绍

    MySQL存储引擎介绍 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然 ...

  9. 常用Mysql存储引擎--InnoDB和MyISAM简单总结

    常用Mysql存储引擎--InnoDB和MyISAM简单总结 2013-04-19 10:21:52|  分类: CCST|举报|字号 订阅     MySQL服务器采用了模块化风格,各部分之间保持相 ...

随机推荐

  1. LOJ #6060. 「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set

    有趣的思博套路题,想到了基本上加上个对线性基的理解就可以过了 首先考虑到这个把数分成两半的分别异或的过程不会改变某一位上\(1\)的总个数 因此我们求出所有数的\(\operatorname{xor} ...

  2. 【干货】快速部署微软开源GPU管理利器: OpenPAI

    [干货]快速部署微软开源GPU管理利器: OpenPAI 介绍 不管是机器学习的老手,还是入门的新人,都应该装备上尽可能强大的算力.除此之外,还要压榨出硬件的所有潜力来加快模型训练.OpenPAI作为 ...

  3. [.net core] 在 Windows 中运行出现 WinHttpException: The parameter is incorrect

    有一个 web 服务一直跑在 docker 中,今天需要在 Windows 上部署一个备份版本,于是,签出源代码,编译,运行.结果抛出 500 ,日志中有如下记录: System.Net.Http.H ...

  4. Python爬虫9-request包介绍及应用

    GitHub代码练习地址:1.两种简单get请求方法:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac13_request ...

  5. gcc链接,去掉不用的函数和data

    编译代码的时候,没有用到的函数经常会被编译,该怎么才能去掉呢? 解决方法: CFLAGS 加上 -ffunction-sections -fdata-sections LDFLAGS 加上 --gc- ...

  6. CAS、原子操作类的应用与浅析及Java8对其的优化

    前几天刷朋友圈的时候,看到一段话:如果现在我是傻逼,那么我现在不管怎么努力,也还是傻逼,因为我现在的傻逼是由以前决定的,现在努力,是为了让以后的自己不再傻逼.话糙理不糙,如果妄想现在努力一下,马上就不 ...

  7. 接口自动化:HttpClient + TestNG + Java(五) - 接口测试数据驱动

    在上一篇中,我们实现了post方法请求的封装和测试,这一篇我们做测试数据的分离. 5.1 测试数据处理思路 5.1.1 测试数据分离 这里我想到,我们之前的测试demo里,全都是在testNG类里去写 ...

  8. 补习系列(14)-springboot redis 整合-数据读写

    目录 一.简介 二.SpringBoot Redis 读写 A. 引入 spring-data-redis B. 序列化 C. 读写样例 三.方法级缓存 四.连接池 小结 一.简介 在 补习系列(A3 ...

  9. Generator和Async

    引言 接触过Ajax请求的会遇到过异步调用的问题,为了保证调用顺序的正确性,一般我们会在回调函数中调用,也有用到一些新的解决方案如Promise相关的技术. 在异步编程中,还有一种常用的解决方案,它就 ...

  10. Reactive Extensions 相见恨晚的Rx.Net

    何为Reactive Extensions(Rx) Rx是一个遵循函数式编程的类库,它引用观察者以及迭代器设计模式对可观察对象产生的数据进行异步消费.使用Rx, 开发人员将使用LINQ运算符操作异步数 ...