数据库管理(Database Admin):对数据库管理系统进行管理和维护的工作
数据库管理员(Database Administrator,DBA):从事管理和维护数据库管理系统的相关人员的统称
核心目标:保证数据库管理系统的安全性、稳定性、数据一致性、系统的高性能
数据库对象管理:
数据库安全管理:
备份恢复管理:
数据库性能管理:
数据库环境管理:
数据库对象:数据库里用来存储和指向数据的各种概念和结构的总称。
对象管理:使用对象定义语言或者工具创建、修改和删除各种数据库对象的管理过程。
常见的数据库对象:
数据对象_数据对象名称
,如student表我们可以写为t_student,也可以适当使用缩略词,如t_stu数据库备份:将数据库中的数据以及保证数据库系统正常运行的相关信息保存起来,以备系统出现故障后恢复数据库时使用。
备份对象:数据本身、和数据有关的数据库对象、用户及权限、数据库环境
数据库恢复:将数据库系统从故障或者瘫痪状态恢复到可正常运行,并能够将数据恢复到可接受状态的活动
企业级容灾:对于企业和单位来说,数据库系统和其他应用系统构成更大的信息系统平台,所以数据库备份恢复并不是孤立的功能点,要和其他应用系统一并考虑,即考虑整个信息系统平台的容灾性能。
灾难备份:为了灾难备份而对数据、数据处理系统、网络系统、基础设施、专业技术能力和运行管理能力进行备份的过程。
恢复时间目标(RTO):灾难发生后,信息系统或业务功能从停顿到必须恢复的时间要求。
恢复点目标(RPO):灾难发生后,系统和数据必须恢复到的时间点要求
根据备份的数据集合范围分类:全量备份、差异备份、增量备份。
根据是否停用数据库分类:热备、冷备、温备
根据备份内容分类:物理备份、逻辑备份
传统数据库:先对数据库进行一次全备,然后停止数据库服务,最后卸载数据库。
云数据库:先对数据库进行一次全备,然后从云平台删除数据库实例即可。
不同架构场景下:单机的卸载方式都是类似,需要在每个节点上执行相同的卸载操作;而分布式集群一般使用专有的卸载工具。
安全问题:对于一些客户,在数据库卸载时需要对存储介质上的数据再做销毁处理,保证数据不外泄。
说明:需要依据不同的迁移场景需求设计迁移方案。
考虑的要素:
时间窗口
注:时间窗口是股票的术语,指的是当时间段运行到了一定的阶段时,会出现转折点。
任何一个数据库系统的容量都是在某个时间点的基础上对未来一段时间内的数据量进行估算后确定的,容量不仅仅是数据存储量,还需要考虑以下几个方面:
扩容方案的选择:
数据库故障处理:
数据库:物理操作系统文件或磁盘数据块的集合
数据库实例:指的是操作系统中一系列进程以及为这些进程所分配的内存块,如JDBC中连接数据库返回的对象
单实例:数据库实例是访问数据库的通道,通常一个数据库实例对应一个数据库
多实例:利用多实例操作,可以更充分的利用硬件资源,让服务器性能最大化
分布式集群:集群就是一组相互独立的服务器,通过高速网络组成一个计算机系统。在分布式集群中,每个服务器都可能有数据库的一份完整副本或者部分副本,所有服务器通过网络互相连接,共同组成一个完整的、全局的,逻辑上集中、物理上分布的大型数据库
数据库连接(Connection):指的是通过网络建立的客户端和专有服务器或调度器的一个网络连接,建立连接时需要指定参数,如服务器主机名或ip,端口号,连接用户名和口令等。
数据库会话(Session):客户端和数据库之间通信的逻辑概念。指的是通信双方从开始通信到通信结束期间的一个上下文(Context)。这个上下文是一段位于服务器端的内存,记录了本次连接的客户端机器、对应的应用程序进程号、对应的用户登录等信息。
建立数据库连接时有代价的,如果我们频繁的建立和关闭数据库连接,则此过程也会成为限制数据库性能的指标,从而降低数据库系统的性能。比较好的解决方式是采用数据库连接池
。即一个用户用完的连接暂且不要马上断开,而是存于缓存中,等待一段时间看有无其他用户需要他。数据库连接池是数据库连接的复用,其负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
在数据库中存在模式Schema,它是数据库对象的集合
,其作用如下:
表空间概念:
表空间作用:
模式
安排数据物理存放位置,提高性能。可以将频繁使用的索引放置在性能稳定且运算速度快的磁盘上。而对于归档好的这类使用频率低的数据,我们则放于速度慢的磁盘上表:在关系数据库中,数据库表就是加了第一范式的二维表
记录:表中的每一行成为一个记录,也可以叫元组
,每个记录由若干个字段组成,字段也可以叫做属性
。
字段:也称为属性
,字段的取值我们称为域
,定义字段时都需指明其两个要素:字段名
和数据类型
。
CREATE TABLE t_author(
author_id integer,
author_name char(60),
author_age integer,
author_address varchar(255)
);
说明:数据库表中可定义的数据类型如下
一个会话
中需要的数据。当会话退出时,临时表的数据自动清空。CREATE TEMPORARY TABLE staff_history_session(
startdate DATE,
enddate DATE
)
表存分类:表可以分为行存表
和列存表
。
行存表:关系数据库中的二维表,每条元组是一行一行的。
列存表:HBase数据库中的表,每条元组是一列一列的。
列存适用场景:
行存适合场景:
分区:将大表的数据范围许多小的数据子集,这些子集称为分区。分区的类别:根据不同的依据可以分为不同的分区
分区表的收益:改善查询性能、增强可用性、方便维护、均衡I/O
分区剪枝:对于分区对象的查询可以仅搜索自己关心的分区,提高检索效率
数据分布:GuassDB(DWS)分布式数据库
的数据表是分散在所有数据节点(DataNode,DN)上的,所以创建表的时候需要指定分布列
。
分布方式:
分布方式 | 说明 |
---|---|
Hash | 表数据通过Hash方式散列到集群中所有DN |
Replication | 集群中每一个DN都有一份全量表数据 |
List | 表数据通过List方式分布到指定DN节点上 |
Range | 表数据通过Range方式分布到指定DN节点上 |
复制:适合记录集较小的表
Hash/List/Range:适合数据量较大的表
视图本质:通过逻辑映射将经常使用的数据映射为一张临时表。视图和基表不同,不是物理上实际存在的,是一个虚表。
视图作用:
视图的限制性:
CREATE VIEW stu_class(id,name,class) AS select student.s_id,student.name,stu_info.class from student,stu_info where student.s_id = stu_info.s_id;
说明:索引提供指向存储在表的指定列中的数据值的指针,如同图书的目录,能够加快表的查询速度,但同时也增加了插入、更新和删除操作的处理时间。
创建索引的建议:
有效索引:创建后的索引并非一定会被使用。如果系统判定使用索引的时间比顺序扫描还久,就不会使用索引。故我们要定期删除无用索引。我们还可以通过explain语句查看执行计划来判断是否使用索引。
完整性约束:数据的完整性
是指数据的正确性
和一致性
,在定义表时我们可以定义完整性约束。
常见的约束类型:
事务概念:事务(Transaction)
是用户定义的一系列操作,这些操作作为一个工作单元来执行,要么一个操作都不做,要么把操作全做完。
事务的四大特性:
事务结束的标记:
事务处理模型:
START TRANSACTION
DELETE FROM dbbank.orders;
SELECT COUNT(*) FROM dbbank.orders;
ROLLBACK;
脏读:一个事务读取了其他事务中还没有提交的数据
不可重复读:一个事务获得的数据可以被其他事务修改。在处理过程中多次读取同一个数据,这个数据可能发生变化
幻(影)读:是不可重复读的一种特殊情况。当重复读后,一个事务发现莫名其妙多了一些数据或者少了一些数据,这些数据就被成为幻影数据。
ANSI SQL标准定义了四种事务隔离级别来避免三种数据不一致问题。