Mysql常用的存储引擎

时间:2023-03-09 19:51:07
Mysql常用的存储引擎

存储引擎

存储引擎是表级别的概念,不同的存储引擎保存数据和索引的方式是不相同的.

MyISAM存储引擎

MyISAM最典型的性能问题就是表锁的问题.  MyISAM只将数据写到内存中,然后等待操作系统定期将数据刷到磁盘上.

不支持事务

表级锁定

读写相互阻塞,写入不能读,读时不能写

只缓存索引

不支持外键约束

不支持聚簇索引

读取数据较快,占用资源较少

不支持MVCC(多版本并发控制机制)高并发

崩溃恢复性较差

MySQL5.5.5前默认的数据库引擎

适用场景:只读(或者写较少),表较小(可以接受长时间进行修复操作)

MyISAM引擎文件:

tbl_name.frm: 表格式定义

tbl_name.MYD: 数据文件

tbl_name.MYI: 索引文件

InnoDB引擎特点

支持事务,适合处理大量短期事务

行级锁

读写阻塞与事务隔离级别相关

可缓存数据和索引

支持聚簇索引

崩溃恢复性更好

支持MVCC高并发

从MySQL5.5后支持全文索引

从MySQL5.5.5开始为默认的数据库引擎

InnoDB数据库文件

所有InnoDB表的数据和索引放置于同一个表空间中

表空间文件:   datadir定义的目录下

数据文件:      ibddata1, ibddata2, ...

每个表单独使用一个表空间存储表的数据和索引

启用:innodb_file_per_table=ON

两类文件放在数据库独立目录中

数据文件(存储数据和索引):tb_name.ibd

表格式定义:tb_name.frm

CSV引擎

CSV存储引擎使用逗号分隔值格式将数据存储在文本文件中.可以使用 CSV引擎以CSV格式导入和导出其他软件和应用程序之间的数据交换

管理存储引擎

查看mysql支持的存储引擎:

show engines;

查看当前默认的存储引擎:

show variables like '%storage_engine%';

设置默认的存储引擎:

vim /etc/my.conf

[mysqld]

default_storage_engine= InnoDB;

查看库中所有表使用的存储引擎

show table status from db_name;

查看库中指定表的存储引擎

show table status like ‘tb_name‘;

show create table tb_name;

设置表的存储引擎:

CREATE TABLE  tb_name(... )  ENGINE=InnoDB;

ALTER TABLE  tb_name  ENGINE=InnoDB;

选择合适的引擎

事务

备份

崩溃恢复

特有的特性

MySQL分层架构

上层是服务器层的服务和查询执行引擎

下层是存储引擎

存储引擎和服务层之间处理查询的时候通过API来回交互