mysql学习与提高2:mysql存储引擎

目录

存储引擎

有哪些存储引擎

如何查看存储引擎

InnoDB

MyISAM

MyISAM 与InnoDB比较

总结


存储引擎

什么是存储引擎呢?

存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

有哪些存储引擎

有MyISAM、InnoDB、CSV、Archive、Memory、Federated等存储引擎,因为后面四种用的较少,我们主要掌握MyISAM和InnoDB这两种存储引擎。

如何查看存储引擎

1.查看所有引擎

show ENGINES

 

根据查询结果我们可以看到,InnoDB是mysql默认的存储引擎 

2.查看当前使用的引擎

show variables like '%storage_engine%'

3.指定数据库对象的存储引擎

create table tb(
		id int(4) auto_increment ,
		name varchar(5),
		dept varchar(5) ,
		primary key(id)		
	)ENGINE=MyISAM AUTO_INCREMENT=1
	 DEFAULT CHARSET=utf8 

InnoDB

MySQL 5.5 及之后版本的默认存储引擎

特性

  • InnoDB为事务性存储引擎
  • 完全支持事物的 ACID 特性
  • Redo log (实现事务的持久性) 和 Undo log(为了实现事务的原子性,存储未完成事务log,用于回滚)
  • InnoDB支持行级锁
  • 行级锁可以最大程度的支持并发
  • 行级锁是由存储引擎层实现的

应用场景

  • 可靠性要求比较高,或者要求事务
  • 表更新和查询都相当的频繁,并且行锁定的机会比较大的情况

MyISAM

MySQL 5.5 版本之前的默认存储引擎,在 5.0 以前最大表存储空间最大 4G5.0 以后最大 256TB

Myisam 存储引擎由 .myd(数据)和 .myi(索引文件)组成,.frm文件存储表结构(所以存储引擎都有)

特性

  • 并发性和锁级别 (对于读写混合的操作不好,为表级锁,写入和读互斥)
  • 表损坏修复
  • Myisam 表支持的索引类型(全文索引)
  • Myisam 支持表压缩(压缩后,此表为只读,不可以写入。使用 myisampack 压缩)

应用场景

  • 没有事务
  • 只读类应用(插入不频繁,查询非常频繁)
  • 空间类应用(唯一支持空间函数的引擎)
  • 做很多 count 的计算

MyISAM 与InnoDB比较

 MyISAMInnoDB
存储文件

.frm 表定义文件

.myd 数据文件

.myi 索引文件

.frm 表定义文件

.ibd 数据文件

表锁表锁、行锁
事务不支持ACID
外键不支持支持
在线热备份不支持支持
crud大量select性能更佳insert和update多性能更加
count操作缓存了表的总行数,直接返回需要扫表

总结

本文主要介绍了两种存储引擎

InnoDB(默认) :事务优先 (适合高并发操作;行锁),适合写密集的表。
MyISAM :性能优先  (表锁) ,适合读密集的表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值