MySql性能调优--存储引擎介绍

今天咱们简单了解下mysql的存储引擎

 概述

   Mysql5.1之前版本中,存储引擎是需要在msyql安装中必须和mysql一起被编译同时安装的。之后的版本中,基本上完全是通过接口实现。从5.1开始,mysql对结构体系做了较大改造,引入了新的概念:插件式引擎结构,让存储引擎和sql层各自更为独立,耦合更小。让加载和一出更为灵活。

    插件式存储引擎主要包括MyiScminnodbNOBClustermatria MemoryMerge等,较为广泛的是 MyIsamInodb两种。Myisammysql最早的。Innodb是第三方公司研发的,特点是支持事务控制。其他的如NDB cluster也有事务,但是主要是用于分布式环境,术语share nothing的分布式数据库存储引擎。

存储引擎


MyIsam 

myISAM存储引擎的表在数据库中有三部分构成

分别是:

如:tb_demo

  • tb_demo.frm 存储表定义
  • tb_demo.myd 存储表数据
  • tb_demo.myi 存储索引

 

MyISAM支持的索引有三种类型

  • B-Tree索引所有索引节点按照平衡树的数据结构存储
  • R-Tree 主要用于存储空间和多维数据的字段索引
  • Full-test 全文索引存储结构是b-tree,解决linke查询效率底问题

MyISAM无法处理事务,所以对事务请的表,不能使用myisam存储引擎,但是一些情况还是很MYISAM

MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。

 

InnoDB

Innodb之所以这么受欢迎,主要是有以下特点:

1支持事务

2数据库多版本读取

3锁定机制的改进,实现了行锁

4实现外键

5物理存储方面

              物理结构分为两大部分,数据文件和日志文件

一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

 

NDB  

NDB存储引擎也叫NDB Cluster存储引擎,主要用于Mysql Cluster分布式集群环境, Cluster是从5.0版本开始的。

主要构成有三部分


1负责管理各个节点的Mange节点主机

包括集群配置,启动关闭各个节点,以及实施数据库备份恢复等。manage节点是必须最先配启动的节点

2Sql等的sql服务节点

是我们常说的Mysql server,主要负责实现一个i额和数据库在存储层之上的事情,不如连接管理,queyr优化和响应,cache管理,之后的工作就给了NDB节点处理。

3Stirage层的NDB数据节点

NDB是内存式存储一你去那个,所有数据二话索引数据都load到内存中,但也会将数据持久化到存储设备上。主要是实现底层数据存储功能,保存Cluster的数据


Memory

          使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。获得速度的同时也带来了一些缺陷。它要求存储在Memory数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOBTEXT这样的长度可变的数据类型,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。

 

若要查看咱们数据库的版本以及使用的默认存储引擎基本命令如下:

当前版本

show variables like 'version';

查看默认存储引擎

  show engines ,带有default是默认

MySql性能调优--存储引擎介绍_第1张图片

 

小结:


Mysql存储引擎有多种,这里只是简单的介绍了常用的两种情况,其他版本的还的大家多多去了解


你可能感兴趣的:(mysql,存储引擎)