1.数据库分析与设计
- 事务规范包括了事务名称、事务描述、事务所访问的数据项、事务用户
- 事务概要设计内容包括:事务名称、事务所访问的关系表、关系属性、事务处理逻辑、事务用户
- 在数据库应用系统分析与设计中,事务规范可以用来表示数据库应用系统的数据处理需求
- 在IDEF1X中一个非确定联系又称为多对多关系或m:n 联系
- 一对多联系就被称为“非标定型联系”(不会产生从属实体集)
- 如果子女实体集中的每个实例都是由它与双亲的联系而确定的,那么这个联系就被称为"标定型联系"
- 在现实世界中,有些事务是其他事务的类。例如本题中本科生和研究生都是学生类分类。在IDEF1X模型中,可以通过一个分类联系来表达这类事务。
- 螺旋模型的基本开发过程一般包括四个阶段:需求分析、设计、实施和测试;需求分析是计划阶段
-
表示层:负责用户交互,即用户界面。
业务逻辑层:梳理DBAS各项业务活动,将其表示为各种系统构件。
数据访问层:使用事件进行信息交换。
数据持久层:保存和管理应用系统数据。
- 事务的并发访问可以提高吞吐量,并发控制常用的是封锁技术,避免死锁,其设计原则是:
(1)按同一顺序访问资源。
(2)避免事务中的用户交互。
(3)采用小事务模式。
(4)尽量使用记录级别的锁(行锁),少用表级别的锁。
(5)使用绑定连接。
- 在数据库操作中,为了有效保证并发读取数据的正确性提高事务隔离级别,目的是减少数据不一致现象的发生,常用的技术是封锁技术。
- 降低事务隔离级别可以提高事务的吞吐量,提高活锁的可能性,降低发生死锁、发生阻塞的可能性。
- DBAS的生命周期模型有 项目规划、需求分析、系统设计、系统实现与部署、运行管理与维护。
- 数据库应用系统实现与部署内容包括:
①建立数据库结构;
②数据加载;
③事务和应用程序的编码及测试;
④系统集成、测试与试运行;
⑤系统部署。
- 一般来说,项目规划包括以下内容:
1)确定项目的目标和范围。
2)分解和定义整个项目包括的工作活动和任务。
3)估算完成该项目的规模及所需各种资源。
4)制定合理的项目计划。
- 完整性约束条件的作用对象分为列、元组和关系三种级别。
1)对列的约束主要指对其值类型、范围、精度、排序等的约束条件。
2)对元组的约束主要指对记录中各个属性之间的联系的约束条件。
3)对关系的约束是指对若干记录间、关系集合上以及关系之间联系的约束条件。
- 在数据库应用系统安全架构设计中包括环境安全设计和数据安全设计:
环境安全设计包括 漏洞与补丁、计算机病毒防护、网络环境安全和物理环境安全。
数据安全设计主要有 安全性保护、完整性保护、并发控制、数据库的备份与恢复、数据加密传输、视图机制、用户身份鉴别、权限控制
- 逻辑设计:关系模式、约束条件、对数据模式进行规范化、进行关系范式化
- 物理设计: 数据库逻辑模式描述、文件组织与存取设计、数据分布设计、确定系统配置、物理模式评估、文件的结构、索引技术、对关系模式进行规范化处理,分区表、确定数据存放位置、数据库事务、数据库事务的相关设计、数据库物理设计并不包括文件和数据库的具体实现细节。
- 概念设计:E-R图、数据流图和数据字典
- 触发器、外键和视图都可以用于支持数据库完整性保护,而索引主要用于提高查询效率
- DBAS的性能指标主要包括:数据操作响应时间、系统吞吐量、允许并发访问的最大用户数、每TPS代价值、性能
- DFD方法由四种基本元素组成: 数据流、处理、数据存储和外部项。
- 数据库系统结构分为三级模式和两级映像:
三级模式分别为外模式、模式和内模式。
两级映像是外模式/模式映像、模式/内模式映像。
外模式/模式映像保证了数据库系统中数据的逻辑独立性;
模式/内模式映像保证了数据库系统中数据的物理独立性、
- C/S(客户端和服务器端)体系结构中和B/S(浏览器/服务器)体系结构中,两种结构的事务逻辑都放在数据库服务器,
B/S体系结构业务逻辑放在应用服务器。
C/S结构中,将业务逻辑放在客户端;
- B/S结构的数据库应用系统的特点是用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,主要的事务逻辑在服务器实现,所以对客户机配置要求不高,即使对服务器要求较高,也不需要安装客户端软件。
- 用现代工程的概念管理软件生产与开发全过程的典型方法有:瀑布模型(也称生命周期法)、快速原型模型、螺旋模型等。
瀑布模型:是严格的、明确需求的软件开发模型。
快速原型模型:是在用户的参与下,不断改进和完善
螺旋模型:引入了风险评估活动。
- 实体联系模型简称ER模型
- 在一个数据文件上可以建立一个聚集索引,还可以建立多个非聚集索引。
- 关系模式描述关系的静态结构,它是静态、稳定的
- 数据库应用系统日常维护包括:备份与恢复、完整性维护、安全性维护、存储空间管理和并发控制。
监控与分析包括:数据采集与统计、操作分析、基准程序评估。
性能优化调整包括:查询调整与优化、索引调整、事务调整、模式调整、参数调整、硬件调整与升级、应用程序优化。
系统进化包括:应用程序升级、数据库重组、DBMS和OS(操作系统)升级。
- 关系模式规范化的过程实质上是将一个关系模式分解为一系列子模式。反规范化将多个模式合并为一个模式,可以减少连接操作。
- 数据库应用系统的实施工作包括 :创建数据库、装载数据编写、调试应用程序、数据库试运行。
数据库运行维护与优化:数据库性能调优、数据转储、系统监控
- 有序索引的其中一种分类就是稠密索引和稀疏索引
- 数据分布设计的任务是按照实际情况:
稀疏索引所指向的数据文件一定是有序的
将各种数据合理安排在不同存储介质中
将各种数据通过水平划分或垂直划分,分布存储在各局部数据库中,以提高数据访问效率和数据可靠性;
合理调整关系模式的规范化程度。
- 概念数据模型没有描述数据的完整性约束条件。
- 需求分析在项目规划后完成。
- 根据事务数据访问特性分析结果,可以对基本表设计成更为有效的文件组织和索引方式。
- 需求获取的方法包括面谈、实地观察、问卷调查、查阅资料。
- 在编写事务时,提高事务的隔离性级别带来的好处是降低了发生数据不一致的可能性
- 增加冗余列和重新组表以及反范式化都常被用来在查询时避免连接操作
- 严格的范式化可以防止出现数据不一致的情况,但是随之而来的可能是数据库性能下降,所以需要在范式化和性能之间做出权衡,有时可能需要反范式化来调优数据库的性能
- 函数依赖研究一个关系中属性之间的依赖关系
- 触发器、外键和视图都可以用于支持数据库完整性保护
- 一个实体集中的属性名要唯一;属性一般用名词或名词短语命名;实体集的标识属性能够唯一识别实体集中每一个实体;一个属性的值必须属于唯一的域
- 关系数据模型主要支持非过程化语言,如SQL,用于直接存取数据。
- 查询数据表时SQL语句不会检查数据的完整性约束。
- 反规范化将多个模式合并为一个模式,可以减少连接操作。
- 通信的接口,不同的用户访问同一个数据库对应多个外模式。
- 一个数据库只有一个内模式
- 聚集索引可以是主索引也可以是辅索引。
- 在数据文件的主码属性集上建立的索引称为主索引。主索引一定是唯一索引,可能是聚集索引也可能是非聚集索引。
- 根据事务-基本表交叉引用矩阵可以确定哪些事务对哪些表列执行了何种操作,基于该矩阵可以帮助数据库设计人员建立合适的索引
2.UML与数据库应用系统
- 类图是一种静态模型,它描述了系统的结构和静态关系,而不涉及系统的动态行为。
- 通信图(协助图)、交互图(顺序图和通信图)、顺序图(序列图)都是UML用于描述系统动态行为的图;对象图也是静态试图
- 顺序图和通信图都描述交互,但是顺序图强调的是时间;通信图强调的是空间
- 数据库安全性保护的主要保护方式有用户身份鉴别、权限控制、视图机制。
- 宏观设计包括包图、交互概述图、复合结构图。
微观设计:对象图、状态机图、时间图
- 用例图由系统、角色、用例三种模型元素
- 用例模型描述的是外部执行者(Actor)所理解的系统功能,它是从系统外部看系统功能,并不描述系统内部对功能的具体实现,用例图主要用于描述系统需求。
- 类图用于描述系统内部的静态结构,表达问题领域的概念模型
- 顺序图用于描述系统内部的动态结构,主要用于描述系统内对象之间的消息发送与接收序列;顺序图将交互关系表示为一个二维图,其中纵向是时间轴,时间沿竖线向下延伸。横向轴则代表生命线。生命线是一条虚线 ;顺序图的横向矩形框代表对象
- 通信图用于描述系统内部的动态结构,也称为协作图,用于展示对象之间的联系以及对象间发送和接收的消息
- UML可用于表达DBAS的内部结构。类图、顺序图、通信图属于系统结构图
- 包图可以表达系统中不同的元素彼此间的关系,不属于行为视图,属于结构视图
- UML的语义定义在一个由元元模型层、元模型层、模型层和用户模型层的四层建模概念框架。
- 元元模型层组成了UML的最基本元素“事物”,代表要定义的所有事物。是最高层; 每个概念都是元模型层中概念的实例
- 用户模型层中的所有元素都是UML模型的实例,这层中的每个概念都是模型层的一个实例
- 元模型层组成了UML的基本元素,这一层中的每个概念都是元元模型中的事物概念的实例
- 模型层组成了UML的模型,这层中的每个概念都是元模型层中概念的实例
- 用例间的扩展关系用于描述一个已有用例及在其基础上增加新动作形成的用例间的关系
3.高级查询
- Union并连接
- Intersect交连接
- Except差连接(三者要求列数都要相同,列数类型兼容)
- sum函数是对符合条件的记录的数值列求和;
- count函数是对查询中符合条件的结果的个数求和。(计数)
- 如果用户查询是基于散列值域的等值匹配,特别是访问顺序是随机的,则散列文件比较合适。
- 唯一索引可以确保索引列不包含重复的值。在多列唯一索引的情况下,可以确保索引列中每个值的组合都是唯一的
- FOREIGN KEY和PRIMARY KEY表达关系级别完整性约束
- 聚合函数min应在having中,或者子查询中出现
- Case语句:
CASE
WHEN condition THEN result1WHEN condition THEN result2
ELSE result N
END
- 建立索引使用CREATE INDEX语句,一般格式为:
- CREATE [UNIQUE]INDEX[索引名]ON [表名]([列名][[次序]],[列名][[次序]],)INCLUDE(属性名)WHERE 约束条件
4.数据库后台编程技术
- for或after指的是后触发器,instead of是前触发器,insert指的是引发触发器执行的操作是插入操作
- 后触发型触发器,即只有在引发触发器执行的语句中指定的操作都已成功执行,并且所有的约束检查也成功完成后才执行触发器。
- 一个存储过程可以同时有输入参数和输出参数,且均可以为多个
- 触发器是在对表中数据进行UPDATE、INSERT、DELETE操作时自动触发的。
- 声明游标未指定scroll,则next是唯一支持的提取选项
- NEXT关键字的作用是返回紧跟在当前行之后的数据行并且当前行递增为结果行。PRIOR关键字返回紧临当前行前面的数据行,并且当前行递减为结果行。
- ABSOLUTE n和RELATIVE n关键字用于指定特定行。
- FIRST关键字返回游标中的第一行并将其作为当前行。
- LAST关键字返回游标中的最后一行并将其作为当前行。
- FETCH NEXT表示先将游标当前行指针移动到下一行,并提取所指向的行数据
- Fetch是提取数据的命令动词
- 在对游标数据进行提取的过程中,可以使用@@FETCH STATUS全局变量判断数据提取的状态。由于@ @FETCH STATUS对于在一个连接上的所有游标是全局性的,不管是对哪个游标,只要执行一次FETCH语句,系统都会对@@FETCH STATUS赋一次值,以表明该FETCH语句的执行情况。
- 如果是输出参数需要在变量名后标记"output",输入参数不需要标记。
- 标量函数可以返回除timestamp之外的所有数据类型
- 对于前触发器,在一个表上针对同一个数据操作只能定义一个前触发器;对于后触发器,可以在同一种操作上建立多个触发器。
- 触发器通常用于保证业务规则和数据完整性。
- 前触发型触发器只执行触发器指定的内容而不执行引发触发器的SQL语句
- 删除存储过程的语句为DROP
- 存储过程,实际上是存储在数据库中供所有用户程序调用的子程序。
- 创建后触发器:CREATE TRIGGER tri T Del ON T FOR delete AS.
- 存储过程的好处是允许模块化程序设计、改善性能、减少网络流量、增强应用程序的安全性,提高数据操作性
- 对于UPDATE操作,触发器不会生成UPDATED临时表,而是生成inserted表和deleted表
- 删除存储过程的语句为:DROP { PROC |PROCEDURE } { [schema name.]procedure}[...n]
- 一个用户只能拥有一个架构,而一个架构可以被多个用户所使用。
- 使用CREATE FUNCTION语句创建标量函数,在CREATEFUNCTION关键字后面指定函数名,指定一个参数列表在函数名后面用括号括起来,在RETURNS语句中指定返回值的数据类型,包含一个RETURN语句来返回函数体中的值。
5.数据库及数据库对象
- 次要数据文件的推荐扩展名是.ndf。一个数据库可以包含0至多个次要数据文件,次要数据文件的存储位置任意。
- 主要数据文件不能小于3MB 。主要数据文件的推荐扩展名是.mdf,每个数据库有且仅有一个主要数据文件,主要数据文件和日志文件可以存放在不同的位置
- SQLServer2008不强制使用.mdf、.ndf和.df文件扩展名,但建议使用这些扩展名以利于标识文件的用途。
- 主要数据文件的大小不能小于model数据库的大小
- 数据库所包含文件及文件存储位置信息均保存在主要数据文件中
- SQL Server数据库的组成SQLServer将数据库映射为一组操作系统文件,分为数据文件和日志文件。其中:数据文件分为主要数据文件(每个数据库有且只有一个)、次要数据文件(可无可有,个数无限制)每个数据库必须至少有一个事务日志文件,也可以有多个事务日志文件。
- 一个数据库至少包含一个主要数据文件和一个日志文件
- 分区表是按水平方向分区
- 表分区步骤:首先创建文件组、创建数据文件、创建分区函数、创建分区方案、创建分区表
- 用户访问表中数据,不指明分区
- 创建分区表通过以下几个步骤实现
(1)创建分区函数。创建分区函数的目的是告诉数据库管理系统以什么方式对表进行分区
(2)创建分区方案。分区方案的作用是将分区函数生成的分区映射到文件组中。
(3)使用分区方案创建表水平划分将一张基本表划分为多张具有相同属性、结构完全相同的子表。垂直划分则是将一张基本表划分为多张子表,每张子表包含的属性是原基本表的子集。
- 创建聚集索引使用CLUSTEREDINDEX,列需要用圆括号,
- 在sqlserver中,整数有4种类型:
1)tinyint,可以存储0-255之间所有数字,占用1B
2)smallint,类似C语言中的signed short int,可以存储-32768到32767之间所有数字,占用2B。
3)int,类似C语言32位编译器下的signed int,可以存储-2147483648到2147483647之间所有数字,占用4B,
4)bigint,类似C语言中signed long long int,可以存储-9223372036854775808到9223372036854775807之间所有数字,占用8B。
- 数据库所包含文件及文件存储位置信息均保存在主要数据文件中
- Clustered是聚集索引,noclustered是非聚集索引,默认为非聚集。
- 如果数据文件中的数据记录的排列顺序与索引文件中索引项的排列顺序一致,那么该索引文件就成为聚集索引。
- 架构(Schema,也称为模式)是数据库下的一个逻辑命名空间,可以存放表、视图等数据库对象。一个数据库可以包含一个或多个架构,架构由特定的授权用户所拥有在同一个数据库中,架构名必须唯一,架构名必须唯一;架构名可以是显示的,也可以由DBMS提供默认名。
- 索引视图通常不会提高下列查询类型的性能
1)具有大量写操作的OLTP系统
2)具有大量更新操作的数据库
3)不涉及聚合或连接的查询
4)Group by列具有高基数度的数据聚合
- as range短语后的的left和right指的是间隔值属于哪一侧,默认为left。
- tempdb是临时数据库,仅作为临时工作空间,每次启动都会重建tempdb数据库。
- 创建分区方案时指定的文件组数需要大于等于分区函数生成的分区数。
- 唯一索引可以确保索引列不包含重复的值。
- 复制数据库的方法有:①首先从数据库服务器中分离出要复制的数据库,然后复制数据库文件;②首先停止SQLServer数据库引擎服务,然后复制数据库文件。
- 进行大量删除操作后,数据有较大变动,应该重建B树索引。索引能大幅度提高查询效率
- 是否创建分区表主要取决于表当前以及将来的数据量大小,同时还取决于两个条件:该表包含或将包含以多种不同方式使用的大量数据;数据是分段的,例如按年份分隔。
- 分区表是从物理上将一个大表分成几个小表,但从逻辑上来看还是一个大表。数据库管理系统会自动将数据放置到对应的物理小表中。
- 日志文件不包括在文件组内,日志文件和数据文件是分开管理的。
- SQLServer有两种类型的文件组:主文件组(包含主要数据文件和任何没有明确分配给其他文件组的其他数据文件)和用户定义的文件组(用户可以创建自己的文件组以将数据文件组织起来,便于管理和数据分配)
- 文件组
1)日志文件不包括在文件组内。
2)一个文件不能属于多个文件组
3)如果文件组中有多个文件,则它们在所有文件被填满前不会自动增长,而填满后这些文件会循环增长。用户定义的文件组中只能包含次要数据文件
- 扩大数据库空间语句:
ALTER DATABASE 数据库名 MODIFY FILE文件名
- 创建索引只能引用同一数据库中的基表,而不能是其它标准视图。所有引用的函数必须是确定性的,行集函数、派生表和子查询都不能在索引视图中使用;
- 主索引是根据数据对象的主键建立的索引,它们决定了被索引记录的位置,而辅助索引没有这样的限制,可以用于任何索引目的并且可以查找多个数据文件存放的位置。
- Primary文件组是主文件组
- 日志文件的大小与数据文件的大小并没有规定要求
- SQL Server实例的作业信息存储在msdb数据库中
- msdb供SQLServer代理服务调度报警和作业以及记录操作员时使用,保存关于调度报警、作业、操作员等信息。
- 在表上建立非聚集索引后,该表数据将不按非聚集索引键值排序
- 差异数据库备份是备份从最近的完整备份之后数据库的全部变化内容
- 在使用差异数据库备份时应定期进行日志备份
- 大容量日志恢复模式会备份数据库日志
- 在表上建立聚集索引会引起表中数据的物理排序
- 在一个表上可以同时有聚集索引和非聚集索引
- 聚集索引键值的逻辑顺序决定表中对应行的物理顺序。一个表或视图只允许同时有一个聚集索引。
- 索引占的存储空间大小可能超过索引列占大小
- model数据库是数据库管理系统自动创建的
- 用户创建的数据库都自动包含model数据库中的
- 用户数据库的大小不能小于model数据库的大小
- 在一个数据库中用户可以创建多个文件组
- 创建唯一非聚集索引使用关键字UNIQUE INDEX
- 分离数据库是指将数据库从SQLServer实例中删除,但不删除数据库的数据文件和日志文件,实际就是让数据库的文件不受数据库管理系统的管理,使用户可以将数据库的数据文件和日志文件复制到另一台计算机上或者是同一台计算机的其他地方。
6.安全管理
- SQLServer 2008的身份验证模式有"Windows身份验证模式"和"混合身份验证模式"两种。
- 混合身份验证模式是指SQLServer允许Windows授权用户和SQL授权用户登录到SQL Server数据库服务器
- 使用Windows身份验证模式时,用户必须首先登录到Windows操作系统中,然后再登录到SQLServer。
- Windows身份验证模式下只允许Windows用户登录SQL Server服务器
- 数据库用户一般都来自于服务器上已有的登录账户,让登录用户成为数据库用户的操作称为映射。
- 一个登录账户可以映射为多个数据库中的用户;但一个数据库用户不一定都对应有登录账户,guest没有对应的登录账户
- 除guest用户外,所有的数据库用户都必须对应一个登录账户
- 所有的数据库用户不是继承数据库中guest用户的权限。
- 任何SQL Server登录账户都可以访问启用了guest用户的数据库
- 所有新建数据库用户都要有对应的登录名
- 可以将数据用户添加到固定数据库角色中;可以将登录账户添加到固定服务器角色中
- db_ datawriter角色只分配了对数据库的插入、更改、删除数据库中所有用户数据的权限,不具备查询
- SQLServer登录账户可以不是Windows操作系统账户,可以使用sql server自建的账户
- sa是SQLServer身份验证模式的系统管理员,但不是windows用户
- sa是SQL Server身份验证的登录名
- db_ datereader具有查询数据库中所有用户数据的权限, 该角色是固定数据库角色,是定义在数据库级别上的,而且存在于每个数据库中。用户不能添加、删除或更改固定数据库角色。
- 只有在创建#Temp表(临时表)的连接中才可以查询#Temp表数据
- 局部临时表:以单个井号(#)开头;全局临时表:以双井号(##)开头。
- A类提供验证保护,B类提供强制保护,C类提供自主保护,D类提供最小保护。
- Oracle的安全控制机制可分为数据库级、表级、行级和列级的安全控制。
- 数据库级的安全性通过用户身份认证和授予用户相应系统权限来保证,而表级、行级、列级的安全性是通过授予或回收对象特权保证的。
- Oracle数据库中的用户按其操作权限大小可分DBA用户和普通用户。
- 授权语句格式是"GRANT 可以授予的权限 ON 表名TO用户名"
- 自助存取控制中用户分类(操作权限控制对象)包括系统管理员、数据库对象拥有者、普通用户
- DENY UPDATE 权限的优先级高于UPDATE权限
- WITH GRANT OPTION表示允许向其他主体授予该权限。
- GRANT UPDATE ON T1 TO U1语句的作用是用户U1具有对表T1各列数据进行修改的权利,
- 对于仅有登录权限的用户来说,通常只能访问master和msdb数据库中的部分数据。
7.运行维护与优化
- 数据库维护工作:数据库的转存和恢复;数据库的安全性和完整性控制;数据库性能的监控分析和改进;数据库的重组和重构
- 新建索引以提高查询速度、数据库恢复、数据库软件升级、数据库补丁安装、调整数据库用户权限、检查数据库锁情况、数据库备份、数据库存储空间、数据库中的无效对象检查网络、新建数据库用户、调整索引优化查询效率、数据库管理软件漏洞修复
- 增加冗余列可以减少查询过程中的JOIN操作
- 增加派生冗余列的作用是在查询时减少连接操作;避免使用聚合函数,以牺牲空间来换取减少查询时间的目的。
- 反规范化是将规范化的关系转换为非规范化的关系的过程。
- 常用的反规范化方法有增加派生冗余列、增加冗余列、重新分组、分割表和新增汇总表等。
- 满足下列情况的列,应建立索引:
1)经常在查询中作为条件被使用的列(经常被查询输出的列)
2)频繁进行排序和分组的列
3)值域很大的列
4)如果待排序的列有多个,应建立复合索引
5)使用系统工具来检查索引的完整性,必要时进行修复。
- 当数据库表更新大量数据后,删除并重建索引可以提高查询速度
- 为连接条件的列增加索引可以提高查询效率
- 为执行时间很长的查询建立物化视图有利于提高查询效率
- 调整一个数据库应用系统的性能要求熟悉系统环境、数据库管理系统、应用程序以及应用程序所使用的数据。
- 数据库性能优化一般需要由DBA(数据库管理员)和系统研发人员协同完成。
- 数据库重组是指按照系统设计要求对数据库存储空间进行全面调整,如调整磁盘分区方法和存储空间、重新安排数据的存储、整理回收碎块等,以提高数据库性能
- 改变某一列的数据类型属于数据库重构操作
- 数据库重构应该尽量避免应用程序的改动。
- 数据库重构是对数据库进行的简单改动,在保持行为和信息语义的前提下改进设计
- 数据库性能监控::数据库缓冲区的命中率、服务器内存使用情况、网络带宽使用情况、库缓冲、用户锁(用户连接数)、锁与等待、回滚段、临时段使用情况、索引的使用情况、等待事件和共享池、服务器CPU使用情况、数据空间、数据库备份
- 根据监控对象的不同,监控分析可以分为两种:
(1)对数据库架构体系的监控主要监控内容:空间基本信息、空间使用率与剩余空间大小、空间是否具有自动扩展的能力、哪些表的扩展将引起空间的扩展,以及段的占用空间与区间数等。
(2)对数据库性能的监控主要监控内容:数据缓冲区的命中率、库缓冲、用户锁、锁与等待、回滚段、临时段使用情况、索引的使用情况等待事件和共享池等
- 提高数据库写性能,可以考虑将RAID5改为RAID1
- 索引会增加插入、删除和更新操作的开销。
- 组合索引中,索引顺序一般按照属性的区分度排列。
- 一个表中最多只能有一个主索引
- 在复合索引中,一般将where短语后的条件的顺序当做索引的顺序。
- 数据库优化有以下几方面:外部调整、调整内存分配、调整磁盘I/0、调整竞争。
- 外部调整中除了CPU调整外,还有网络调整。
- 数据库系统运行需要依赖服务器、操作系统、存储、网络等多种因素。
- 在分布式数据库中进行查询优化需要考虑许多因素,其中通信代价最为主要的因素
- 水平分割是对一张表在水平方向分割,分割后得到的表结构相同,查询时需要使用UNION(并)运算:
- 垂直分割则是对一张表在垂直方向分隔,分割后每张表中除主码列外,其他列均不同,查询时需要使用JOIN运算。分割的目的是提高性能。垂直分割后,所有表中均需保留原有表的主键
- 数据库应用系统投入运行标志着系统开发任务的基本完成和系统运行维护工作的开始。
- 备份和恢复是自动运行的,不需要人工干预
- 数据文件和索引文件放置在不同硬盘上有利于提高查询效率,
- 完全规范化可能会导致数据库性能下降,所以有可能需要反规范化,即降低范式要求。
- 数据库性能优化会涉及到数据库的重组和重构
- 性能优化中外部环境调整包括对CPU、网络等的调整
- 散列索引适用于等值查询,尤其是在连接操作中查找匹配记录时。
- 如果数据库服务器中运行队列数量超过逻辑CPU数量说明CPU已经饱和,解决方法是为服务器适当增加CPU的数量或者是终止需要许多资源的进程。
- 业务低峰期数据库服务器CPU平均使用率起过90%说明CPU已经严重不足
- 数据库设计过程中,为了提高查询效率会进行反规范化但由此会带来数据冗余。
- 在数据库设计阶段,主要强调的是高效率利用存储空间减少数据的冗余,减少数据的不一致,这个过程也就是规范化的过程。
- 根据监控分析实现的方法不同,监控分析机制分为两种,一种是由数据库系统建立的自动监控机制,另一种是由管理员手动实施的监控机制。
- 数据库优化过程最主要的工作是SQL语句的优化
- 基于列A对R进行范围分区:
- SELECT A,SUM(B) FROM R GROUP BY A
- 数据库设计过程中,数据库的安全性、完整性和一致性等的设计往往以牺牲效率为代价数据库设计过程中,提高数据库安全性的同时不一定能提高数据库性能。实现安全性需要额外实施一些工作,会降低数据库性能
- 对表进行水平分割不会增加数据库存储空间
8. 故障管理、备份与恢复
- 日志文件记录每个事务对数据库的修改操作,主要用来实现数据恢复
- 事务日志备份仅用于完整恢复模式和大容量日志恢复模式。
- 事务日志备份不备份数据库本身,只备份上次备份之后到当前备份时间发生变化的日志内容
- 事务日志备份属于差异数据库备份
- 结尾日志备份是恢复计划中的最后一个备份
- 纯日志备份只包括一定时间间隔内的事务日志,不包含大容量操作日志记录
- 完整备份是备份特定数据库中的所有数据,以及可以恢复这些数据的足够的日志。
- 使用差异备份时,应定期进行完整备份(日志备份)。
- 采用硬件RAID1可以避免介质故障所带来的影响
- tempdb是临时数据库,每次启动SQL Server都会被重新创建。
- SQLServer 2008支持数据库、数据文件两个级别的数据恢复。
- 非介质故障一般只需要执行REDO(重做)和UNDO(回滚)即可
- 数据库系统发生异常重启后,需撤销(UNDO)所有未提交的事务,重做(REDO)所有已提交的事务,以达到容错的目的。
- 对事务进行回滚操作可保证数据库中数据的一致性。
- 日常监控的内容可以包括以下几个方面
1)数据库空间使用情况
2)数据库缓冲区命中率情况
3)数据库中索引使用情况
- 差异数据库备份是备份从最近的完整备份之后数据库的全部变化内容
- 差异备份从最近的一次完整备份到当前时间数据库中变化的数据和日志
- Model数据库是所有数据库的模板,创建数据库后,由于尚未写入数据,无须备份。
- master是分区表,修改数据不会影响master表,所以不需要备份。
- 系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。
- 数据转储有三种方式
(1)完全转储,对数据库中所有数据进行转储,占用较多的时间和空间,但是恢复时间最短。是系统失败时恢复数据库的基础。占用空间最大、备份速度最慢但是恢复速度最快
(2)增量转储,只复制上次转储后发生变化的文件或数据块。占用空间最小、备份速度最快但是恢复速度最慢
(3)差量转储,是对最近一次数据库转储以来发生的数据变化进行转储。
- 差量转储与完全转储相比占用空间小、速度快、;
- 差量转储与增量转储占用空间多、相比速度慢、但是恢复速度快。
- 事务故障恢复和系统故障恢复必须使用日志文件
- 在动态转储方式中必须建立日志文件
- 为保证数据库是可恢复的,登记日志文件必须遵循两条原则:
(1)登记的次序严格按并行事务执行的时间次序;
(2)必须先写日志文件,后写数据库。
- 数据库恢复模式:完整恢复模式、、简单恢复模式、大容量日志恢复模式
- 完整恢复模式完整地记录所有事务,并将事务日志保留至其备份完毕; 支持还原单个数据页
- 简单恢复模式适用于测试和开发数据库,通常,主要包含只读数据的数据库(如数据仓库),不适合生产系统。不备份事务日志
- 大容量日志恢复模式不支持时点恢复,需要在增大日志备份与增加工作丢失风险之间进行权衡, 大容量日志恢复模式只对大容量操作进行最小记录,一般只作为完整恢复模式的附加模式
- 对数据库的备份一般选在操作较少的时间
- 检查点技术大幅度减少了数据库完全恢复时所必须执行的日志部分。
- DIFFERENTIAL表示差异备份,NOINIT表示该次备份内容追加到指定媒体集上,以保留原有的备份集
- 数据库系统日志写入顺序必须和并行事务执行的时间次序一致,因为这样才能在数据库恢复时进行redo、undo操作,从而保证数据的一致性而不会产生脏数据,
- 数据库恢复使用日志文件和备份文件。
- 数据库的恢复顺序如下:
①恢复最近的完全数据库备份;
②恢复完全备份之后的最近的差异数据库备份;
③按日志备份的先后顺序恢复自最近的完全或差异数据库备份之后的所有日志备份。
- 仅有完全备份才能够独立恢复数据库,其他备份方法均需要与完全备份配合才能恢复。
- 创建备份设备的T-SQL存储过程为sp _addumpdevice。
- 备份策略的制定包括定义备份的类型和频率、备份所需硬件的特性和速度、备份的测试方法以及备份媒体的存储位置和方法。
- 通常情况下,完整数据库备份+差异数据库备份+日志备份策略=最为完备的备份策略
- 组成raid 5阵列所有磁盘容量最好一样大,当容量不同时,会以最小的容量为准。
- 可用空间=(磁盘数-1)*最小硬盘容量
- norecovery表示在数据库的还原操作完成前,数据库将处于不可用状态。除最后一个日志文件外,其他日志文件的恢复也需要添加norecovery。
- 非预期的事务内部故障不能由事务程序处理;事务故障的恢复是由系统自动完成的,对用户是透明的。
- 可预期的事务内部故障可以通过将事务回滚,撤销其对数据库的修改,使数据库回到一致性状态
- 日志文件可以大于数据文件大小;一个数据库可以建立多个日志文件,日志文件可以与数据文件在同一个目录;数据库的日志文件不能共享,
- 在OLTP(在线事务处理)系统中,由于大量的并发事务对数据进行频繁地修改,因此日志文件的空间使用量可能会比数据文件大得多。日志文件用于记录所有对数据库的修改操作,包括插入、更新和删除等,以便在数据库出现故障时可以进行恢复
- 日志文件格式主要有以记录为单位的日志文件和以数据块为单位的日志文件
- 数据库存在事务锁定:如果数据库正在被使用或存在锁定的事务,备份可能会失败或不完全。为了确保备份成功,请尽量避免在数据库有锁定事务时进行备份。
- 在制定备份策略时,除考虑使用备份恢复时丢失的数据量外,还需考虑数据库备份所需的时间。
- 静态转储虽然保证了数据的有效性,但是却是以降低数据库的可用性为代价:
- 动态转出虽然提高了数据库的可用性,但数据的有效性却可能得不到保障。
- 检查点记录最近一个日志记录的地址
- 在建立检查点时,数据库管理系统会将当前数据缓冲区中的所有数据写入数据库中
- 使用检查点方法可以改善恢复效率,但并不敢保证一定能够快速恢复
- 检查点技术大幅度减少了数据库完全恢复时所必须执行的日志部分。
- 日志文件中检查点记录的主要作用是提高系统出现故障后的恢复效率,
- 对master数据库只能进行完全数据库备份操作,
- 若要将数据库还原到故障点,必须保证日志链是完整的,
- 数据库备份设备可以是磁带也可以是磁盘,数据库备份设备可以为本地设备,也可以使用远程网络设备。
- 数据更改频繁,不适合使用完整备份,耗时耗空间,应该采用完整+差异备份。
- 断电后使用日志文件进行差异恢复。
- 完全转储是对数据库中所有数据进行转储,需占用较多的时间和空间。转储速度并不快
- "SQL Server代理(MSSQLSERVER)"服务是 SQL Server2008 中的一个关键服务,它负责启动和执行维护计划、作业和警报等任务。如果此服务未启动,那么维护计划将无法执行。
9大规模数据库架构
- 分布式数据库的目标是本地自治、非集中式管理、高可用性、位置独立性、数据分片独立性等
- 分布式数据库最基本特征是本地自治、非集中式管理以及高可用性。
- 位置独立性、数据分片独立性和数据复制独立性形成了分布式数据库系统中的分布透明性。
- 分布式数据库中的分布透明性包括分片透明性、位置透明性、局部数据模型透明性,其中分片透明性是最高层次的透明性,
- 分片透明性:是最高层次,指的是用户或应用程序只对全局关系进行操作而不必考虑关系分片的情况。位于全局模式与分片模式之间
- 分布透明性使用户完全感觉不到数据库是分布的与使用集中式数据库完全一样
- 位置透明性:是下一层次,指用户或应用程序只需了解数据分片情况,而不必了解片段的存储场地。
- 局部数据模型透明性:指的是用户或用户程序不必了解局部场地上使用的是哪种数据模型,但是必须了解全局数据的分片情况,还需了解各片断的副本复制情况及各片断和它们副本的场地位置分配情况;局部数据透明性位于分配模式与局部概念模式之间
- 全局外模式是全局应用的用户视图,即终端用户看到的逻辑上并未分布的表、视图等。
- 在分布式数据库查询中,导致数据传输通信代价大的主要原因是各个站点分片间的连接和并操作,
- 全局外模式是全局应用的用户视图,即终端用户看到的逻辑上并未分布的表、视图等。
- 分布式数据库的12个目标是:本地自治;不依赖于中心场地;可连续操作性;位置独立性;分片独立性;复制独立性;分布式查询处理;分布式事务管理;硬件独立性;操作系统独立性;网络独立性;DBMS独立性。
- 一维数据划分主要有:
(1)轮转法,适合扫描整个关系的应用,充分发挥并行性,但不适合点查询和范围查询。适用整表扫描的拆分方式。
(2)散列划分,比转轮法更适合于点查询,对顺序扫描关系也非常高效,选择一个优良的散列函数是关键、对关系中的元组基于划分属性进行散列
(3)范围划分,适合范围查询和点查询,但可能引起数据分布不均匀,导致并行处
- 理能力下降;根据表中某个属性取值区间划分成不同的子区间,然后根据表中的属性值所属的不同区间将表分成不同的子表。
- 采用的元组划分策略是轮转法和散列划分散列划分和范围划分
- 多维划分:维是人们观察事物的角度,同样的数据从不同的维进行观察可能会得到不同的结果。
- 每个维度又可按粒度的不同划分成多个层次,称为维度成员。(每年每个分店)
- 范围划分是按照关系中某个属性的取值范围将数据文件划分为n部分,分别存放到磁盘上。
- BigTable模型表的索引是行关键字、列关键字和时间戳,每个单元由这三者共同定位。
- 每一行都有且仅有一个可排序的主键和任意多的列,在BigTable中,不仅可以随意地增减行的数量,同在一定的约束条件下,还可以对列的数量进行扩展。
- BigTable数据模型的特点是:
(1)表中的行关键字可以是任意的字符串
(2)列族是由列关键字组成的集合,是访问控制的基本单位。
(3)时间戳记录了BigTable中每一个数据项所包含的不同版本的数据的时间标识。
- 数据分配是分布式数据库的特征,解决数据分配有以下几种方法:
(1)集中式--所有数据片段都安排在一个场地上。便于控制,但数据过于集中,负载过重,易形成瓶颈。
(2)分割式--所有全局数据有且只有一份,它们被分割成若干片段,每个片段被分配在一个特定场地上。对局部数据控制灵活,但对全局数据存取效率较低。
(3)全复制式--全局数据有多个副本,每个场地上都有一个完整的数据副本。可靠性高,响应速度快,但数据几余量大,同步维护复杂。
(4)混合式--全局数据被分为若干个数据子集,每个子集被安排在一个或多个不同的场地上,但是每个场地未必保存所有数据,是一种介于分割式和全复制式之间的一种分布关系。灵活性较大,可依据不同情况扬长避短,从而取得较高效率。
- 集中式数据库中,查询代价主要是cpu代价和I/O代价,
- 在分布式数据库中,需要再考虑通信代价。所以应该优先优化通信代价,使其接近集中式数据库的性能。
- 数据分片有四种基本方法
(1)水平分片是在关系中从行的角度(元组)依据一定条件划分为不同的片断,每个分片的元组结构完全相同;关系中的每一行必须至少属于一个片断,以便在需要时可以重构关系。每个片段必须包含主码
(2)垂直分片是在关系中从列的角度(属性)依据一定条件分为不同的片断,各片断中应该包含关系的主码属性,即每一个片断都要包含。以便通过连接方法恢复关系。进行垂直分片以后,每个分片都必须包含关系的主键
(3)导出分片是导出水平分片,分片的依据不是本关系属性的条件,而是其他关系属性的条件。
(4)混合分片指以上三种方法的混合。
- 不管采用何种分片方式,必须确保能根据所有分片重构整个数据集
- 层次结构分两层,顶层是由若干节点组成的无共享结构;底层是共享内存或共享磁盘结构。
- 并行数据库的目标是:利用多处理机结点并行的完成数据库任务以提高数据库系统的整体性能。
- 并行数据库则经常采用负载平衡方法来提高数据库的业务吞吐率
- 并行数据库仅仅依靠采用多处理器、共享硬件资源等手段无法实现真正意义上的并行处理,只有当数据分布合理易于并行处理,才能将并行数据库的性能最优化。
- 共享内存结构是指多个处理机共享一个公共的内存区域通过共享内存来进行数据交换和消息传递。这种结构的优点是实现简单、效率高,缺点是容易出现内存冲突和竞争,需要使用锁等机制来解决。
- 并行数据库系统主要分为共享内存结构、共享磁盘结构和无共享结构
- 共享内存结构中所有的处理机通过互联网络共享一个公共的主存储器;共享资源来降低资源竞争的概率,具有极高的可扩展性。
- 共享磁盘结构中所有处理器都有独立的内存,通过网络共享磁盘,共享磁盘结构会产生一定的通信代价
- 无共享结构的每个处理机均拥有独立的主存储器和磁盘,不共享任何资源,通过最小化
- 与传统数据库相比,XML数据库具有以下优势
(1)XML数据库能够对半结构化数据进行有效的存取和管理。如网页内容就是一种半结构化数据,而传统的关系数据库对于类似网页内容这类半结构化数据无法进行有效的管理。
(2)提供对标签和路径的操作。传统数据库语言允许对数据元素的值进行操作,但不能对元素名称进行操作,半结构化数据库提供了对标签名称的操作,包括对路径的操作。
(3)当数据本身具有层次特征时,由于XML数据格式能够清晰表达数据的层次特征,因此XML数据库便于对层次化的数据进行操作。XML数据库适合管理复杂数据结构的数据集。
- XML数据库需要对XML文档进行解析
- 目前XML数据库主要包括XEDB、NXD和HXD三种类型
- 现阶段在现实环境中,一边使用的是原有的关系数据库厂商在其传统商业产品中进行了相关的扩充,使其能够处理XML数据的产品
- PaaS,即Platform as a Service,中文意思是平台即服务。
- SaaS,即Software as a Service,中文意思是软件即服务。
- 聚集函数SUM、MIN、MAX的计算一般都可以通过"先分后合"的方式实现并行化
- 分布式数据库的事务管理包括恢复控制和并发控制,恢复控制一般采用的策略是基于两阶段提交协议
- MapReduce运算不在云数据库的主服务器结点完成的
10数据仓库与数据挖掘
- 元数据是关于数据的数据,或者叫做描述数据的数据。元数据描述了数据的结构、内容、链和索引等项内容。
- 数据越详细,粒度就越小,级别也就越低,
- 数据仓库的特性包括面向主题性、集成性、不可更新性和时间特性。
- 有监督学习是从打上标签的训练数据中推断函数的机器学习任务。聚类挖掘是典型的无监督学习。
- 封锁粒度越大,数据库系统能够封锁的数据单元就越少,封锁开销也就越小,并发度也就随之降低。
- 分类算法(分类器的构造方法)有统计方法、机器学习方法、神经网络方法等。
- 在大型企业的数据库应用系统中,联机事务处理(OLTP)和联机分析处理(OLAP)是常见的数据管理与数据分析形式。
- 快照是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的像。
- 维护策略分为三种,如下
实时维护:数据源发生变化时,立即更新数据仓库中的数据。(前一分钟)
延时维护:不是在数据源的更新事务中完成,而是在数据仓库中的视图被查询时完成,(不是最新数据,刷新得到最新数据)
快照维护:定期对数据仓库进行维护,触发的条件是时间。(前4小时)
- 建立数据仓库的主要目的在于根据决策需求对企业的数据采取适当的手段进行集成,形成一个综合的、面相分析的数据环境,用于支持企业的信息型、决策型的分析应用。
- 数据集成就是将多个数据源合并存放在一个数据存储中(如数据仓库),从而方便后续的数据挖掘工作。
- 数据挖掘可以简单地理解为从大量数据中提取或挖掘知识,是数据库知识发现的一个步骤。
- 主题是一个抽象的概念,用于标识某一宏观的分析领域所涉及的对象。
- 数据仓库四个特点:
1)主题性:从实际需求出发,具有较高的抽象性,数据可用性比OLTP较为宽松。
2)集成性:需要将数据抽取、转换、清理、装载。
3)稳定性:是面向决策支持应用主题的,数据进入数据仓库后不允许修改。
4)动态性:数据需要定期更新。
- 数据仓库的更新与时间间隔有关,所以不会实时更新
- 决策支持系统DSS是综合利用大量数据,有机组合众多模型(数学模型和数据处理模型)通过人机交互,辅助各级决策者实现科学决策的系统,