(2022.04.21 Thur)
数据库中的数据通过不同的技术存储在文件或内存中,不同技术的区别在于存储机制、索引方式、锁定水平以及其他方面的功能。数据库存储引擎是DBMS的底层组件,用于数据的创建读取更新删除(CRUD)。多数的DBMS提供了访问引擎的API,而免于用户直接访问DBMS的UI。
不同DBMS对引擎的支持不同。以MySQL为例,MySQL支持InnoDB,MyISAM,ARCHIVE,MEMORY等。
InnoDB
InnoDB的设计目标是处理大容量数据时最大化性能,CPU利用率是基于磁盘的关系数据库引擎中最高;是一套置于MySQL后台的完整数据库系统,有自己的缓冲池,用于缓冲数据和索引。数据和索引存在表空间里,可包含多个文件。作为对比MyISAM的表被放在单独的文件中。InnoDB表的大小只受限于操作系统文件大小,一般2GB。
事务transaction:访问并可能操作各种[数据项]的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。
ACID:原子性Atomicity,或称不可分割性、一致性Consistency、隔离性Isolation,又称独立性、持久性Durability。ACID是数据库事务正确执行的四个基本要素。
特点:
- 提供事务处理,支持ACID
- 支持行锁
- 提供一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量
MyISAM
特点:
- 查询、插入速度快
- 不支持事务,每次查询都是原子的
- 支持表级锁,即每次操作都对整个表加锁
- 单表最大支持条记录
- 单表最大建立64条索引
- 三个文件:索引文件、表结构文件、数据文件
- 采用非聚集索引(Non-clustered),索引文件的数据域存储指向数据文件的指针