画板

1. 定义数据库和实例

概念

  1. 数据库**: **操作系统或者是内存中数据库类型文件的集合。

  2. 实例: 数据库实例是真正操作数据库的对象。通过数据库实例完成对数据库文件的增删改查。

MySQL 是一个单进程多线程的数据库。MySQL 数据库实例在系统上表现的就是一个进程。

2. MySQL 体系结构

1. 结构图

2. MySQL 组成部分

1. 8 大组成部分

  1. 连接池
  2. 管理服务和工具组件
  3. Sql 接口组件
  4. 查询分析器
  5. 优化器
  6. 缓存
  7. 插件式存储引擎
  8. 物理文件

存储引擎是基于表的,而不是数据库。

3. MySQL 存储引擎

1. InnoDB 存储引擎(最常用的 5.5.8 后默认存储引擎)

1. 特点

  1. 行锁设计
  2. 支持外键
  3. 类似于 Oracle 的非锁定读

2. 主要功能

  1. InnoDB 使用多版本并发控制(MVCC)来实现高并发性。
  2. 实现了 4 种隔离级别。默认的为 REPEATABLE 级别
  3. 使用next-key locking 策略来避免幻读现象
  4. 提供了插入缓冲(insert buffer)、二次写、自适应哈希索引、预读等高性能和高可用功能
  5. 数据的存储的采用了聚集的方式,表的数据存储按主键的顺序存放。如果没有主键会默认每行生成一个 ROWID 作为主键。

3. 面向对象

设计目标主要面向在线事务处理应用。



2. MyISAM 存储引擎(5.58 之前默认存储引擎)

1. 特点

  1. 不支持事务、表锁/行锁
  2. 支持全文索引
  3. 缓冲池只缓存索引文件,不缓存数据。
  4. MyISAM 存储引擎表的由 MYD 和 MYI 两种文件存储。MYD 存储数据,MYI 存储索引。

3. NDB 存储引擎(集群存储引擎)

1. 特点

  1. 数据全部放在内存中,5.1 后,可将非索引数据存放到磁盘上。
  2. 主键查找速度极快
  3. 通过增加 NDB 数据存储节点,可以线性提高数据性能。是高可用、高性能集群系统
  4. 查询速度慢。由于 NDB 存储引擎连接操作在数据库层完成,导致需要巨大网络开销。

4. Memory 存储引擎

1. 特点

  1. 数据存放在内存中
  2. 默认使用哈希索引
  3. 只支持表锁,并发性能差
  4. 不支持 TEXT 和 BLOBl 乐行
  5. 浪费内存,存储 varchar 是按照 char 的方式存储。

5. 存储引擎的比较

4. 连接 MySQL

本质: MySQL 实例和连接进程的进行通信。

进程间的通信方式:TCP/IP 套接字,UNIX 域套接字、管道、命名管道。

1. TCP/IP(常用)

客户端通过向 MySQL 服务器发送 TCP/IP 连接请求,连接成功后。MySQL 数据库会查权限视图,判断用户的客户端 IP 是否连接到 MySQL 实例。

5. 小结

  1. 介绍了实例和数据库的区别。实例是操作数据库的对象,数据库是所有数据库类型文件的集合
  2. MySQL 的体系结构和其中的组件
    1. 连接池
    2. 管理服务和工具组件
    3. Sql 接口
    4. 查询和分析器
    5. 优化器
    6. 缓存
    7. 插件式存储引擎
    8. 物理文件
  3. MySQL 主流的存储引擎及其特点
    1. InnoDB 支持行锁、事务\外键
    2. MyISAM 不支持行表锁、事务。支持全文索引
    3. Memory 支持哈希索引、表锁、不支持 BLOB、TEXT 类型。varchar 定长.
    4. NDB 数据存放在内存中