MySQL(四) — MySQL存储引擎

目录

一、准备

二、MyISAM

三、InnoDB

四、CSV

五、Memory

六、Archive

六、Ferderated


一、准备

1、查看MySQL支持什么引擎。
    mysql> show engines;
    +--------------------+---------+--------------+------+------------+
    | Engine             | Support | Transactions | XA   | Savepoints |
    +--------------------+---------+--------------+------+------------+
    | MyISAM             | YES     | NO           | NO   | NO         |
    | CSV                | YES     | NO           | NO   | NO         |
    | PERFORMANCE_SCHEMA | YES     | NO           | NO   | NO         |
    | BLACKHOLE          | YES     | NO           | NO   | NO         |
    | MRG_MYISAM         | YES     | NO           | NO   | NO         |
    | InnoDB             | DEFAULT | YES          | YES  | YES        |
    | ARCHIVE            | YES     | NO           | NO   | NO         |
    | MEMORY             | YES     | NO           | NO   | NO         |
    | FEDERATED          | NO      | NULL         | NULL | NULL       |
    +--------------------+---------+--------------+------+------------+
2、查看MySQL默认的引擎是什么?
    mysql> show variables like '%storage_engine%';
    +----------------------------------+--------+
    | Variable_name                    | Value  |
    +----------------------------------+--------+
    | default_storage_engine           | InnoDB |
    | default_tmp_storage_engine       | InnoDB |
    | disabled_storage_engines         |        |
    | internal_tmp_disk_storage_engine | InnoDB |
    +----------------------------------+--------+

二、MyISAM

简介

MySql 5.5之前默认的存储引擎

组成

MyISAM 存储引擎由MYDMYI组成

使用示例

create table testmysam (

  id int PRIMARY key

) ENGINE=myisam;

insert into testmysam  VALUES(1),(2),(3)

物理结构
特性

并发性与锁级别→表级锁

支持全文检索

支持数据压缩,(压缩后,表变为只读,不允许再插入数据)

         myisampack -r -f testmysam.MYI

使用场景

非事务型应用(数据仓库,报表,日志数据)
只读类应用

空间类应用(空间函数、坐标)

三、InnoDB

简介MySql 5.5以及以后版本默认存储引擎
组成

ibd和frm组成

使用示例

create table testinnodb (id int PRIMARY key) ENGINE=InnoDB;

物理结构
特性Innodb是一种事务性存储引擎
完全支持事务的ACID特性
Redo Log 和 Undo Log
Innodb支持行级锁(并发程度更高
使用场景

Innodb适合于大多数OLTP应用

1、查看是否使用独立表空间
    mysql> show variables like 'innodb_file_per_table';                                                                                                                                                                    
    +-----------------------+-------+
    | Variable_name         | Value |
    +-----------------------+-------+
    | innodb_file_per_table | ON    |
    +-----------------------+-------+
#####################
	ON:独立的表空间:tablename.ibd
	OFF:系统表空间:ibdataX

mysql5.6以前默认为系统表空间

系统表空间和独立表空间比较:
    1、系统表空间无法简单的收缩文件大小
    2、独立表空间可以通过optimize table 收缩系统文件
    3、系统表空间会产生IO瓶颈
    4、独立表空间可以同时向多个文件刷新数据
建议:Innodb使用独立表空间
 MYISAMInnoDB
主外键不支持支持
事务不支持支持
行表锁

表锁,即使操作一条记录也会锁住整个表

不适合高并发的操作

行锁,操作时只锁某一行,不对其它行有影响

适合高并发的操作

缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响
表空间
关注点性能事务
默认安装YY

四、CSV

 

简介

数据以文本方式存储在文件

组成

.csv:存储文件内容

.csm:存储表的元数据,如表状态和数据量

.frm:表结构

使用示例

create table mycsv(id int not null,c1 VARCHAR(10) not null,c2 char(10) not null) engine=csv;

物理结构
特性以csv格式进行数据存储
所有列都不能为null的
不支持索引(不适合大表,不适合在线处理)
可以对数据文件直接编辑(保存文本文件内容),编辑后需要刷新表flush TABLES;

五、Memory

使用示例

create table mymemory (

  id int,c1 varchar(10),c2 char(10)

) ENGINE=memory;

特性memory数据易丢失,所以要求数据可再生
HEAP存储引擎,所以数据保存在内存中
支持HASH索引和BTree索引
所有字段都是固定长度 varchar(10) = char(10)
不支持Blog和Text等大字段
Memory存储引擎使用表级锁
最大大小由max_heap_table_size参数决定
使用场景hash索引用于查找或者是映射表(邮编和地区的对应表)
用于保存数据分析中产生的中间表
用于缓存周期性聚合数据的结果表

 

六、Archive

简介

以zlib对表数据进行压缩,磁盘I/O更少

数据存储在ARZ为后缀的文件中

组成

由ARZ和FRM组成

使用示例

create table myarchive(id int auto_increment not null,c1 VARCHAR(10),c2 char(10), key(id)) engine = archive;

物理结构
特性

只支持insert和select操作

只允许在自增ID列上加索引

使用场景

日志和数据采集的应用

六、Ferderated

特性

提供了访问远程MySQL服务器上表的方法;
本地不存储数据,数据全部放到远程服务器上;
本地需要保存表结构和远程服务器的连接信息;

使用场景

偶尔的统计分析及手工查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值