layout: post
title: Mysql的存储引擎
date: 2018-05-12
tags: [“Mariadb”,”软件服务”]


一、mysql的存储引擎

1、mysql的存储引擎都是插件式的,可以安装第三方的引擎以扩展,登录mysql可以通过以下命令查看

  1. show engines;
  2. show engines\G
  3.  
  4. show variables like '%storage_engine%';

现在mariadb使用的是percona的innodb存储引擎。

配置mysql的默认存储引擎可以在配置文件中填入

  1. [mysqld]
  2. default_storage_engine=InnoDB

2、innodb(支持事物,AIDB 原子性、隔离性、一致性、持久性)

Innodb的特点:

1)支持事物,适合处理大量短期事物
2)行级锁
3)读写阻塞与事物隔离级别相关
4)可缓存数据和索引
5)支持聚簇索引
6)崩溃恢复性更好
7)支持MACC高并发
8)从Mysql 5.5后支持全文索引
9)从mysql5.5.5开始为默认的数据库引擎

修改某个表的存储引擎为innodb

  1. alter table ta_name engine=InnoDB;

查看表的存储引擎

  1. show create table user;
  2. show table status from db
  3. show table status like '%table%';

Mysql的数据文件

在库目录下只有表结构文件”.frm”,数据文件存在mysql的数据根目录以idata{1..}命名,所有以innodb为数据引擎的表数据会存放在这个文件中。在我们构建数据库的时候,需要对此项进行优化,配置每个表单独使用一个表空间存储表的数据和索引。在mysql的配置文件中加入如下选项

  1. innodb_file_per_table=ON
  2. innodb_file_per_table

分库分表之后,innodb的表结构存放在以数据库名称的目录下,以.frm为结尾,数据和索引存储在.idb文件中

3、MyISAM引擎特点:

1)不支持事物
2)表级锁
3)读写相互阻塞,写入时不能读,读时不能写
4)只缓存索引
5)不支持外键约束
6)不支持聚簇索引
7)读数据较快,占用资源少
8)不支持MACC(多版本并发控制机制)高并发
9)崩溃恢复性差
10)mysql5.5.5之前默认的数据库引擎

MACC:会在表中多添加两个字段(代表事物值)

1)、增加记录的事务编号;
2)、删除记录的事务编号

版本号是递增的 事物编号

MyISM的数据文件: .MYD为数据文件 .MYI为索引文件 .frm为表结构文件

4、performance_schema引擎,数据库自带的存储引擎(存放系统性能数据,元数据,)

5、Blackhole存储引擎

黑洞存储引擎接收但不存储数据,检索总是返回一个空集。该功能可用于分布式数据库设计,数据自动复制,但不是本地存储。例,主从复制,blackhole存储引擎可以作为中间层。

文档更新时间: 2020-05-25 12:16   作者:张尚