全国计算机等级考试三级数据库技术(十)

article/2025/9/26 2:10:42

第10章_数据库运行维护与优化

考点分析

◆在考试中一般情况下会出现在选择题、填空题部分。
◆常考知识点有:
1.熟悉数据库运行维护基本工作
2.理解运行状态监控与分析
3.熟悉数据库存储空间管理
4.掌握数据库的模式调整与优化、存储优化、查询优化

10.1 数据库运行维护基本工作

一、数据库运行维护基本工作
1.完成数据库应用系统的设计并实施后,数据库系统则进入运行维护阶段。这个阶段的主要任务是保证数据库系统安全可靠且高效率的运行。
2.数据库设计并试运行后的运行结果符合设计目标,就意味着数据库可以真正投入运行,也标志着开发任务的基本结束和维护工作的开始。
3.在数据库系统运行过程中必需不断地对其进行监控、评价、调整与修改,以保证数据库系统正常和高效的运行。
二、维护工作包括的内容
1.维护工作包括的内容:数据库的转储和恢复、数据库的安全性和完整性控制、数据库性能的监控分析和改进、数据库的重组和重构
2.数据库的转储与恢复
(1)数据库转储和恢复是系统正式运行后最重要的维护工作之一.
(2)作为数据库管理员,应该针对各种数据制定合理的转储计划,定期对数据库和日志文件进行备份,保证数据库一旦出现故障,也有能力恢复到正常状态。
(3)为了保证转储数据能正常进行恢复,数据库理员需要定期对转储的数据进行恢复测试工作。
(4)恢复测试工作是在与正式运行环境类似的环境中,利用转储数据进行数据库数据的恢复,恢复完成后对数据库中数据进行检查,确认数据的完整性、可靠性和一致性。
3.数据库的安全性、完整性控制
(1)数据库管理员可以通过行政手段制定规范 ,通过权限管理、口令、跟踪及审计等来保证数据库的安性。
(2)数据库管理员应该维护多个数据副本 ,可能的话将数据副本放在不同的安全地点。并采取有效措施预防和及时清除病毒,避免其对数据库的威胁。
(3)数据库管理员需要根据实际情况 (数据库运行过程中的应用环境变化)来修改原有的安全控制策略。同样,数据库管理员也要不断修正数据库的完整性约束条件,以满足用户的需求。
4.检测并改善数据库的性能
数据库管理员应经常检测数据库系统的运行,观察数据库的动态变化情况,以便在数据库出现故障时能够及时恢复或采取其他有效措施保护数据库。
5.数据库的重组与重构
数据库管理员应定期对数据库进行重组,即按照系统设计要求对数据库存储空间进行全面调整。
提高数据库性能的几种方法:
01调整磁盘分区方法和存储空间
02重新安排数据的存储
03整理回收碎块
数据库的重新组织并不修改逻辑结构和物理结构,而数据库的重构则不同,它是指部分修改数据库的模式和内模式。
数据库的重构是指当前数据库的设计不能满足新的需求,需调整数据库的模式和内模式。但只能结合实际情况对部分修改,如果应用需求变动太大,则应该考虑重新设计数据库及相应的应用程序,

10.2 运行状态监测与分析

一、监控分析
1.描述:指管理员借助相应工具在数据库运行过程中监测数据库系统的运行情况,掌握系统当前或以往的负荷、配置、应用和其他相关信息,并对监测数据进行分析,分析数据库的性能参数和环境信息,评估系统的整体运行状态,为系统的安全运行和性能调优提供依据,并提出相应的改善措施,帮助管理人员尽早清除数据库的性能隐患。
2.根据监测分析实现方法的不同,监测分析机制分以下两种。
01.自动监控机制
由数据库系统建立的,该机制由DBMS自动监测数据库的运行情况, 并在数据库出现问题时自动采取有效措施,防止出现的问题对数据库运行产生不良影响。
02.手动监控机制
由管理员建立的.要随时观察数据库的动态变化,并在数据库出现错误,故障或产生不适应的情兄(如数据库死锁、对数据库的误操作等)时能够随时采取有效措施保护数据库。

3.根据监控对象的不同,监控分析又分为对数据库构架体系的监控和对数据库性能的监控,内容如下所示。
01.对数据库构架体系的监控
主要监控内容:空间基本信息、空间使用率与剩余空间大小、空间是否具有自动扩展的能力、哪些表的扩展将引起空间的扩展。以及段的占用空间与区间数等。
02.数据库性能的监控
主要监控内容:数据缓冲区的命中率、库缓冲、用户锁、锁与等待、回滚段、临时段使用情况、素引的使用情况、等待事件和共享池等。

10.3 数据库存储空间管理

一、数据库的存储结构
数据库的存储结构一般分为逻辑存储结构和物理存储结构。如图所示。
数据库的存储结构

二、存储结构对应方式
针对不同的数据库产品,其逻辑存储结构及物理存储结构的对应方式是不同的,下面是Oracle数据库的存储结构示意图。
Oracle数据库的存储结构示意图

三、数据库空间管理的内容
1.数据库产品通常对空间的管理主要包括:
创建数据库空间、更改空间大小、删除空间、修改空间状态、新建、移动、关联数据库文件
2.数据库存储空间管理概述
01.在进行数据库设计时,需要根据数据库的数据保存期要求,数据结构信息和数据预期增长速度等因素,对数据库所需使用的空间进行预测。
02.随有数据库系统的不断运行,对数据库空间实际增长情况进行监控是非常重要的。应重点监控数据增长较快的数据表,并统计这些表的实际数据增长率。及时制定数据备份与转储策略.在数据量数据存储能力前,及时增加这些表的存储空间。
03.如若不能进行硬件扩展,应考虑制定合理的数据备份和转储第略,调整数据保存期,将远期的历史数据。转移到其他廉价存储介质中去如光盘、磁带等。从而为新的业务数据腾出足够的存储空间。

10.4 数据库性能优化

一、数据库性能优化概述
数据库性能优化是数据库应用系统上线后最常见的运行维护任务之一。 数据库性能优化对数据库管理员的要求也较高。调整一个数据库应用系统的性能要求熟悉系统环境、数据库管理系统、应用程序以及应用程序所使用的数据。
数据库性能优化:数据库运行环境、数据库参数调整、模式调整、数据库储存优化及查询优化。

二、数据库运行环境与参数调整
一般可以从外部环境、调整内存分配、调整磁盘I/O、调整资源竞争等几个方面改变数据库的参数。
1.外部调整
数据库并不是脱离于外部环境单独运行的。数据库的性能和外部环境有很大的关系,这些外部条件主要包括以下内容。
(1)CPU
当数据库操作对CPU性能的要求超过数据库服务器的CPU性能时,数据库性能就受到CPU的限制,使数据库操作变慢.
解决方法:为服务器适当增加CPU的数量或者终止需要许多资源的进程。
(2)网络
大量的SQL数据在网络上传输会导致网速变慢、网卡,交换机,集线器等网络设备的性能对网络的影响很明显。
解决方法:通过调整网络设备。也可以在一定程度上提高数据库系统的性能。
2.调整内存分配
通过调整相关参数控制数据库的内存分配,也可在一定程度上提高数据库系统的性能。
3.调整磁盘I/O
数据库性能优劣的一个重要度量是响应时间,而I/O时间是响应时间的最大组成部分。因此,可以通过令I/O时间最小化,减少磁盘上的文件竞争带来的瓶颈等方法来改善数据库系统的性能。
4.竞争调整
因资源有限,当多个进程对相同的资源发出申请,导致竞争的产生。解决这个问题可以采用以下方法。
01.修改参数以控制连接到数据库的最大进程数。
02.减少调度进程的竞争。
03.减少多线程服务进程竞争。
04.减少重做日志缓冲区竞争。
05.减少回滚段竞争。
三、模式调整与优化
规范化和反规范化描述如下所示
在数据库设计阶段.主要强调的是高效率利用存储空间,减少数据的冗余,减少数据的不一致,这个过程就是规范化过程。
反规范化是将规范的关系转换为非规范化的关系的过程。
常用的反规范化方法有:
01增加派生性冗余列
02增加冗余列
03重新组表
04分割表
05新增汇总表

1.增加派生性冗余列
在这里插入图片描述

2.增加冗余列
在这里插入图片描述

3.重新组表
在这里插入图片描述

4.分割表
在这里插入图片描述
在这里插入图片描述

5.新增汇总表
为了降低对数据进行加和、取平均等操作时间,可根据统计操作的使用情况,将频繁使用的统计操作的中间结果或最终结果存储在汇总表中,当用户发出汇总需求时,可以直接从汇总表中获取数据,降低了数据访问量以及汇总操作的CPU计算量。
例如:商场经营管理系统中" 经常要对销售额进行统计.可将每天的销售额统计后放入日销售额统计表.在进行统计时直接从日销售额统计表中读取数据,提高数据统计速度。
注意:数据库的反规范化是为了减少表间的连接,提高查询性能,但并非所有经反规范化的数据库都是高效的,这与实际的应用有关。只有满足一定条件的数据库采用反规范化方法才能提高。
无论使用何种反规范化技术都可能破坏数据的完整性,因此反规范化技术需要维护数据的完整。

四、存储优化
1.物化视图
描述:是包括一个查询结果的数据库对象(可由系统定期刷新其中的数据,物化视图不是在使用时才读取,而是预先计算并保存表连接或聚集等耗时较多的操作结果,提高了在查询时的读取速度。
物化视图还可进行远程数据的本地复制,此时物化视图的存储也称快照。主要用于实施数据库间的同步。
在这里插入图片描述

2.聚集
描述:聚集是物理存储表中数据的可选择方法。一个聚集是一组表,可将经常一起使用的具有同一公共列值的多个表中的数据行存储在一起,由它们的公共列构成聚集码。
优化的方法:创建一个聚集,通过聚集码存储或查询这些表中的数据,从而最小化必须执行的I/O次数。改善系统性能。
聚集码:多表中相关的列称为聚集码,在将记录插入聚集的表中之前,必须要为聚集对象建立一个聚集索引,且按聚集码进行索引;对于聚集中的多个表,聚集值只存储一次。

五、查询优化
效率低下的SQL语句常常是系统效率不佳的主要原因。以下是几种优化直询的常用方法。
1.合理使用索引
索引是数据库中重要的数据结构,建立索引的目的就是为了提高查询效率。查询的性能在很大程度上取决于存在什么样的索引来加快选择和连接的处理。在插入删除和更新操作中,索引的存在增加系统的开销。因此,要在加快查询与事务处理效率方面获得的好处与增加开销之间进行权衡。
(1)索引的物理设计决策涉及到的问题
在这里插入图片描述
(2)索引使用原则
01.经常在查询中作为条件被使用的列.应为其建立索引。
02.频繁进行排序或分组(进行group by或order by操作)的列,应为其建立索引。
03.一个列的值域很大时,应为其建立索引。
04.如果待排序的列有多个,应在这些列上建立复合索引。
05.可以使用系统工具未检查索引的完整性.必要时进行修复。当数据库表更新大量数据后.删除重建索引也可提高查询速度。
(3)索引调整与修改原因
在索引建立完成后,数据库系统运行期间可能还需要对索引进行调整与修改,索引调整与修改主要有以下原因:
01.由于缺少索引,某些查询语句执行时间过长。
02.某些索引自始至终没有使用。而索引占用较多的磁盘空间。
03.某些索引建立在被频繁改变的属性上,导致系统的开销过大。
通过分析从系统获得的关于查询执行过程的信息.可以得到上述问题的原因。基于调优分析,可能会删除某些索引,也可能增加新的索引。
调化的目的是动态地评估需求,需求随时间变化,要对索引进行重组以获得最好的整体性能。
2.避免或简化排序
在运行group by 和order by的SQL语句时,会涉及排序的操作,应当简化或避免对大型表进行重复的排序,因为磁盘排序的开销是很大的。与内存排序相比,磁盘排序操作很慢。会花费很长时间,降低数据库性能,而且磁盘排序会消耗临时表空间中的资源。
当能够利用索引自动以适当的次序产生输出时,优化器就可避免不必要的排序步骤。以下是些影响因素。
01.由于现有索引的不足,导致排序时索引中不包括一个或几个带排序的列。
02.group by或order by子句中列的次序与索引的次序不一样。
03.排序的列来自不同的表。

3.消除对大型表数据的顺序存储
4.避免复杂的正则表达式
5.使用临时表加速查询
6.用排序来取代非顺序磁盘存取
7.不充分的连接条件
8.存储过程
9.不要随意使用游标
10.事务处理

六、SQL Server性能工具
1.SQL Server profiler
2.数据库引擎优化顾问


http://chatgpt.dhexx.cn/article/RskA0phj.shtml

相关文章

全国计算机等级考试三级数据库技术(七)

考点分析 ◆在考试中一般情况下会出现在选择题、填空题、大题。 ◆常考知识点有: 1.掌握SQL Server数据库的类别、甩途及组成 2.掌握修改数据库、分离和附加数据库的语法 3.理解架构含义与语法格式 4.掌握分区表的概念、创建分区方案 5.掌握创建索引及索引视图 7.1 创建及维护…

全国计算机等级考试三级数据库技术(一)

第一章_数据库应用系统开发方法 考点分析 ◆在考试中一般情况下会出现在选择题和填空题部分。 ◆常考知识点有: 1.掌握数据库应用系统生命周期、DBAS生命周期模型 2.掌握系统规划与定义的内容 3.掌握数据、功能、性能的需求分析 4.理解概念、逻辑、物理设计 5.熟悉实现与部署…

2022计算机三级数据库总结和经验(有免费题库)

相信很多家人们都想简单轻松的考过三级数据库,个人感觉挺简单的,考前一个月开始学习都不晚(ps:自己算是考前两个星期开始学),话不多说上干货!!! 1.刷一遍题库…

计算机三级数据库技术

第一章 数据库应用系统开发方法 数据库应用系统生命周期 软件工程与软件开发方法 瀑布模型 快速原型模型 螺旋模型 DBAS生命周期 DBAS生命周期:项目规划、需求分析、系统设计、实现与部署、运行与维护 规划与分析 可行性分析:经济可行性、技术可行性、操…

Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method ‘dataSource‘ threw except

Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method ‘dataSource’ threw exception; bug分析 实例化com.zaxxer.hikari.HikariDataSource这个类失败。我也没使用它啊,怎么会示例化呢?百思不得其解啊。后面说dataSource的异…

c3p0,dbcp2,druid,hikari数据源对比

c3p0,dbcp2,druid,hikari数据源对比 说明 本次测试c3p0采用版本为0.9.5.2,dbcp2采用版本为2.1.1,druid数据源采用版本为:1.1.10,hikari数据源为2.7.9,数据库均采用oracle数据库。 单线程循环多次调用测试&#xff08…

Hikari连接池——java.lang.Exception: Apparent connection leak detected

Hikari连接池——java.lang.Exception: Apparent connection leak detected 问题分析总结 问题分析 首先,先看报错: java.lang.Exception: Apparent connection leak detectedat com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.j…

ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.

错误截图(截取一部分): 解决方法:去网上查看发现需要加useSSLfalse,在后面拼接上。这个的意思是禁用SSL。 上代码: spring.datasource.urljdbc:mysql://localhost:3306/springdd?serverTimezoneAsia/Sha…

mysql hikari连接池异常处理(com.zaxxer.hikari.pool.ProxyConnection)

异常信息如下:com.mysql.cj.jdbc.exceptions.CommunicationsException: The last packet successfully received from the server was 603,312 milliseconds ago. ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: T…

Hikari连接泄露分析:Apparent connection leak detected

Hikari连接池故障 前两天生产环境上触发了触发了CPU飙升的预警短信,查看日志发现出现如下数据库连接池的报错,通过网上查阅资料发现HikariCP连接泄露时就会抛出此异常。 故障分析 Hikari的相关配置 leak-detection-threshold:用来设置连接…

springboot实现多数据源配置(Druid/Hikari)

使用springbootmybatis-plus(Druid/Hikari)实现多数据源配置 操作步骤: 引入相应的maven坐标编写mybatis配置,集成mybatis或mybatis-plus(如果已集成可跳过)编写数据源配置类编写注解,并通过a…

HikariDataSource

DataSourceConfiguration 配置类,springBoot默认采用HikariDataSource /*** Hikari DataSource configuration.*/Configuration(proxyBeanMethods false)ConditionalOnClass(HikariDataSource.class)ConditionalOnMissingBean(DataSource.class)ConditionalOnPro…

Hikari

HikariCP 1 简介 数据库连接池就是在程序初始化的时候,预先创建一定数量的数据库连接对象,当后续需要数据库连接的时候,如果此时有连接未被使用,那么他就可以直接使用已经创建好的连接,不需要再重新创建新的连接&…

关于Hikari连接池的源码理解与配置使用

关于Hikari连接池的源码理解与配置使用 1. 连接池初始化 1.1 初始化连接池 对于应用者来说,我们构造一个线程池就是构造一个HikariDataSource。 重点看一下获取连接以及相关连接管理的流程。 public Connection getConnection() throws SQLException {if (this…

Hikari 讲解

前言 现在已经有很多公司在使用HikariCP了,HikariCP还成为了SpringBoot默认的连接池,伴随着SpringBoot和微服务,HikariCP 必将迎来广泛的普及。 下面带大家从源码角度分析一下HikariCP为什么能够被Spring Boot 青睐,文章目录如下…

SpringBoot系列十八:整合Hikari

Hikari是一款非常强大,高效,并且号称“史上最快连接池”。并且在springboot2.0之后,采用的默认数据库连接池就是Hikari。不需要引入依赖,已经在SpringBoot中包含了。  GitHub地址:https://github.com/brettwooldridge…

Android开发之RelativeLayout

文章目录 常见属性根据父容器定位根据兄弟容器定位 实例根据父容器定位根据兄弟组件定位 通用属性设置组件与父容器的边距设置父容器与组件的边距 常见属性 根据父容器定位 layout_alignParentStart 左对齐 layout_alignParentEnd 右对齐 layout_alignParentTop 顶部对齐 lay…

Android RelativeLayout布局

1. RelativeLayout类 相对布局(RelativeLayout)将子视图以相对位置显示。默认显示在父视图的左上角。 layout_alignParentTop,父视图的上边layout_alignParentBottom,父视图的下边layout_alignParentLeft,父视图的左…

android 继承relativelayout,Android开发中RelativeLayout相对布局

Android开发中RelativeLayout相对布局 RelativeLayout布局是Android界面布局中应用最广也最强大的一种布局,其不只十分灵活,能够解决开发中各类界面布局需求,同时也很方便了解决了多屏幕尺寸的适配问题。在iOS开发中,Autolayout技…

RelativeLayout实现居中偏下x距离引发的小问题

UE想实现一个简单的效果,某个控件在屏幕水平线下方50dp。由于受限于项目历史布局(RelativeLayout)和一套动态化设置控件位置的方案,竟然遇到了一点问题。(在这里还是喊一声:ConstraintLayout最香&#xff0…