一些术语
数据库:物理操作系统文件或其他文件类型的集合。
实例:
MySQL
数据库由后台线程以及一个共享内存组成。DDL
、DML
、DCL
、TCL
DDL
:Data Definition Language
数据定义语言,如CREATE|ALTER|DROP|TRUNCATE|COMMENT|RENAME
DML
:Data Manipulation Language
数据操作语言,如SELECT|INSERT|UPDATE|DELETE
DCL
:Data Control Language
数据控制语言,如GRANT|REVOKE
TCL
:Transaction Control Language
事务控制语言,如COMMIT|ROLLBACK|SAVEPOINT|SET TRANSACTION
索引组织表
目前的表存储方式主要分为两种:索引组织表(Index-Organized Tables)、堆表(Heap-Organized Tables)
oracle
:默认堆表,支持索引组织表。mysql
:只支持索引组织表,对应的索引叫做聚集索引(clustered index
)。postgresql
:只支持堆表
简单的一句话来概括两者的区别就是一种数据是有序存储(按主键聚集),一种是无序存储。
OLTP
数据库、OLAP
数据库数据处理大致可以分成两大类:
在线事务处理
OLTP
(Online Transaction Processing
)在线分析处理
OLAP
(Online Analytical Processing
)
OLTP
是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP
是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。ETL
ETL
是英文Extract-Transform-Load
的缩写,用来描述将数据从来源端经过抽取(
extract
)、转换(transform
)、加载(load
)至目的端的过程。聚集索引 / 非聚集索引
聚集索引(
clustered index
):按照每张表的主键构造一棵B+树,同时叶子节点中存放的即为整张表的行记录数据。也将聚集索引的叶子节点称为数据页。
聚集索引的特性决定了索引组织表中数据也是索引的一部分。同B+树结构一样,每个数据也都通过一个
双向链表来进行链接。
优点:对于主键的排序查找和范围查找速度非常快。
非聚集索引(
non-clustered index
):也被称为辅助索引(secondary index
),叶子节点并不包含记录的全部数据。其叶子节点上存储的是聚集索引的键值,查找数据时先找到聚集索引的键值,
再依靠聚集索引找到数据页。
数据页
聚集索引的叶子节点称为数据页。
脏页
数据库中的缓冲池是通过
LRU
(Latest Recent Used
,最近最少使用)算法管理的。InnoDB存储引擎中页的大小默认为16KB。在
LRU
列表中的页被修改后,称该页为脏页(
dirty page
)