MySQL的多种存储引擎

MyISAM

5.5之前的默认存储引擎
系统表,临时表(在排序分组等操作中,数量超过一定大小,由查询优化器建立的临时表)

MyISAM存储引擎由MYD数据信息和MYI索引信息组成
它的锁级别是表级锁,对表进行数据读取时使用共享锁进行(共享锁与共享锁之间不会发生阻塞,因为只进行读并未修改)
当表损坏时可以进行修复,并不支持事务!!!

create table myIsam(id int, c1 varchar(10))engine=myisam;//这是创建一个MyISAM存储引擎的表
check table myIsam;//检查表是否正常
repair table MyIsam; //这是对表名为MyIsam表进行修复

当然,也可以使用myisamchk工具进行修复,但是要停止mysql服务才能操作此工具
支持索引:全文索引
支持数据压缩,使用myisampack命令

myisampack -b -f(强制) muIsam.MYI//会自动备份生成myIsam.OLD

在mysql5.0之前表最大为4G,要想存储大表要修改参数MAX_Rows和AVG_ROW_LENGTH,但在5.0之后取消的对表的限制,默认为256TB。
使用场景:非事务性应用。报表应用,只读类应用,空间类应用,GPS数据存放

Innodb

使用表空间进行数据存储,适合处理小事务,很少进行回滚
innodb_file_per_table参数 如果是on,则每一个表都有一个tablename.ibd
系统表空间和独立表空间的选择
1.系统表空间无法简单的收缩文件大小,
2.独立表空间可以用 optimize table 命令收缩系统文件,对表进行重建,无需重启sql服务器
系统表空间,会产生顺序读写,影响IO效率
独立表空间可以对多个文件刷新数据
建议:innodb使用独立表空间

表转移的步骤(系统表转移到独立表)
1.使用mysqldump导出所以数据库数据
2.停止mysql服务,修改参数,删除相关文件,
3.重启MYSQL,重建表并导入

系统表中存放innodb数据字典信息(通过B树管理),Undo回滚段
innodb是事务性存储引擎
支持事务acid特性 原子性 一致性 持久性 隔离性
Redo Log 重做日志,存储已提交事务,顺序读写
Undo Log 回滚日志 ,存储未提交事务,随机读写

它支持行级锁(存储引擎层实现)最大程度支持并发

lock table tablename write;//锁上

锁实现了事务的隔离性
锁分为 共享锁(read) 和 独占锁(write)
锁的粒度,表示锁定的单位(表,行,等)
表级锁,并发低。
阻塞和死锁并不一样!!
innodb状态检查

show engine innodb status

innodb支持全文索引,空间函数
myisam innodb 都是以2进制存储

CSV

CSV存储引擎的存储是以文本形式存储的(打开文件能看得懂,,字符文件)
.csv存储表内容(数据) csm存储元数据 表状态数据量 .frm表结构
它的特点:以csv格式对数据进行存储,列不能为NULL,不支持索引(优化查询)

create table mycsv(id int not null,c1 varchar(10) not null,c2 char(10) not null) engine=csv;//这是创建一个csv引擎的表

适用场景:数据交换的中间表,电子表格(变成csv文件 放在mysql目录下)

Archive

缓存写,用zlib对表数据进行压缩
数据存在.ARZ文件中
只支持insert和select操作,支持缓冲区
只支持在自增ID上增加索引(auto_increment)

create table myarchive(id int auto_increment not null,key(id)) engine=archive;//创建archive索引表

适用场景 日志和数据采集类应用

Memory

存储在内存中,
功能特点:支持hash索引(不能范围查找,等值查找使用hash) 支持btree索引(范围查找使用)
所有字段固定长度,不支持BLOG和TEXT等大字段
使用的是表级锁,表的大小由max_heap_table_size参数决定。
适用场景
查找或者映射表,例如邮编和地区的对应表

Federated

提供了访问远程MySQL服务器上表的方法 但本地要保存表结构和远程服务器的连接信息
性能不太好
show engines;
这里写图片描述
要想支持 要在mysql配置文件中修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值