美文网首页
MySQL存储引擎

MySQL存储引擎

作者: ccoke | 来源:发表于2018-09-19 14:24 被阅读58次

《MySQL技术内幕 InnoDB存储引擎》读书笔记

1.1 数据库和实例

  • 数据库:物理操作系统下的文件或其他形式文件(如内存)类型的集合
  • 实例:MySQL数据库程序运行时的一个线程,用于操作数据库文件

1.2 MySQL体系结构

结构图 摘自互联网

自上而下,从左到右介绍:

  • Connectors: 不同语言连接MySQL,如Java的mysql-connector-java 驱动
  • Enterprise Management Services: 管理服务或工具组件
  • ConnectionPool: 连接池,维护数据库连接状态
  • SQL interface: 数据库操作接口
  • Parser: 查询分析器
  • Optimizer: 优化器组件
  • Caches & Buffers: 缓冲组件
  • Pluggable Storage Engines: 插件式存储引擎
  • File System: 物理文件

1.3 MySQL存储引擎

存储引擎能够根据具体的应用建立不同存储引擎表。

下面是对一些存储引擎简单介绍:

1.3.1 InnoDB

  • 支持 事务,其特点是 行锁设计、支持外键
  • 支持全文索引
  • 支持 非锁定读,即默认读取操作不会产生锁
  • 高并发,高性能,高可用,高可拓展
  • 采用了聚集的方式,每张表都是按主键的顺序进行存放,如果没有显式的指定主键,它会为表的每一行生成一个6字节的ROWID作为主键

1.3.2 MyISAM

  • 不支持事务、表锁设计
  • 支持全文索引
  • 缓冲池只缓冲索引文件,不缓冲数据文件
  • 存储引擎表由MYDMYI组成,MYD用来存放数据文件,MYI用来存放索引文件

1.3.3 NDB

  • 是一个集群存储引擎,结构是share nothing的集群架构,具备更高的可用性
  • 数据全部存放在内存中,可以将非索引数据存放在磁盘上
  • 主键查找
  • 不适合连接操作(Join)。ps: MySQL数据库层完成,而不是存储索引层,复杂的连接需要巨大的网络开销,因此查询速度很慢。

1.3.4 Memory

  • 数据存放在内存中,断电后消失,查询速度快,适合存储临时数据
  • 默认使用哈希索引
  • 只支持表锁,并发性能
  • varchar类型是按照定常字段(char)的方式存储,会浪费内存

相关文章

网友评论

      本文标题:MySQL存储引擎

      本文链接:https://www.haomeiwen.com/subject/pyhinftx.html