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比较

  MyISAM InnoDB
存储文件

.frm 表定义文件

.myd 数据文件

.myi 索引文件

.frm 表定义文件

.ibd 数据文件

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

总结

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

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

猜你喜欢

转载自blog.csdn.net/qq_37410328/article/details/83713625