《MySQL技术内幕 InnoDB存储引擎 》第一章学习笔记

第一章、mysql体系结构与存储引擎

1、定义数据库和实例

数据库:物理操作系统文件或其他形式文件类型的集合
数据库实例:有数据库后台进程/线程以及一个共享内存区组成。
共享内存可以被运行的后台进程/线程所共享。
数据库实例是真正用来操作数据库文件的
MySQL被设计问一个单进程多线程架构的数据库

2、mysql体系结构

MySQL由以下几部分组成:

1、连接池组件
2、管理服务和工具组件
3、SQL接口组件
4、查询分析器组件
5、优化器组件
6、缓冲(Cache)组件
7、插件式存储引擎
8、物理文件
插件式体系结构是MySQL独有的,并且存储引擎是MySQL区别于其他数据库的一个最重要特性。存储引擎是基于表的,而不是数据库。
存储引擎的好处:每个存储引擎有各自的特点,可根据不同的应用建立不同的存储引擎表。

3、MySQL表存储引擎

InnoDB存储引擎
默认的存储引擎,主要面向OLTP(联机事务处理,面向基本的、日常的事务处理)

特点:
支持事务,支持外键、支持行锁(有的情况下也会锁住整个表)、非锁定读(默认读取操作不会产生锁)

通过使用MVCC(多版本并发控制)来获取高并发性,并且实现sql标准的4种隔离级别,默认为可重复读(repeatable)级别

使用一种被称成next-key locking的策略来避免幻读(phantom)现象

还提供了插入缓存(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能高可用技术。

表数据采用聚集方式,每张表的存储都按主键的顺序进行存放。如果没有显式地在表定义时指定主键,InnoDB存储引擎会为每一行生成一个6字节的ROWID,并以此作为主键

MyISAM存储引擎:

不支持事务、支持全文索引,表锁设计,主要面向一些OLAP(联机分析处理,数据仓库的主要应用)。

它的缓冲池只缓冲索引文件,而不缓冲数据文件.

该存储引擎表由MYD和MYI组成,MYD用来存放数据文件,MYI用来存放索引文件.

NDB:

是一个集群存储引擎,其特点是数据全部放在内存中。

因此主键查找速度极快,并通过添加NDB数据库存储节点可以线性提高数据库性能,是高可用,高性能的集群系统。

Memory:

将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将消失。

它非常适合存储临时数据的临时表.默认采用哈希索引。

只支持表锁,并发性较差。

你可能感兴趣的:(数据库)