3.3、全国计算机三级数据库考试一一运行维护与优化(问答题)

题目一:

设在SQL Server 2008某数据库中存在销售单据明细表,其建表语句为: CREATE TABLE 销售单据明细表( 销售单据编号 varchar(10), 商品编号     varchar(8), 是否有效     varchar(4), 单价         money, 数量         int, 总价         money ) 在系统运行一段时间后,此表中有近千万条数据。该系统中存在如下操作: select * from 销售单据明细表 where 销售单据编号 = '135671445' and 商品编号 = '021' and 是否有效 = '是'; 在系统运行中发现此操作的效率比较低,系统工程师提出如下建议: 由于查询中使用了“销售单据编号”、“商品编号”和“是否有效”三个条件,因此可以分别在这三列上建立索引,提高查询效率。 系统工程师建议中建立的三个索引是否能够提高查询效率?请简要说明原因。 随着系统运行时间增长,系统运行速度逐渐变慢,经分析为磁盘IO不能满足数据库系统频繁读写的要求。工程师建议增加一块相同磁盘,将两块磁盘调整为RAID1模式。请从读写两方面分析,此操作是否能够改善磁盘IO问题。
答:

  1. “销售单据编号”、“商品编号”、“是否有效”都是查询条件,因此在这三列上建立索引,可以提高查询效率。经常在查询中作为条件的列,应为其建立索引,可以提高查询效率
  2. 从读的方面来看,添加一块相同的磁盘,将两块磁盘调整为RAID1模式,是可以提高读的效率,也提高了磁盘的存储空间,添RAID1模式加了一块镜像,提高了系统的可靠性。但是添加RAID1,系统会变成多块硬盘,同时增加了系统的I/O开销,当数据量大时,并不能很好的提高系统的读取速度。
    从写的方面来看,RAID1磁盘阵列的写入速度通常比较慢,因为数据得分别写入两块硬盘中并做比较。现在添加了一块READ1磁盘阵列,相当于四块硬盘,在写入数据时,可能会做两个备份,写入速度更慢。
    因此从读写两个方面来说,增加一块RAID1磁盘阵列不是解决问题的好方式,这种方式不是很建议。

题目二:

在SQL Server某数据库中存在销售单据明细表,其建表语句为:
CREATE TABLE 销售单据明细表(
销售单据编号 varchar(20),
商品编号 varchar(8),
单价 money,
数量 int
);
在系统运行一段时间后,此表中有近千万条数据,程序员在数据库中执行如下SQL语句:
SELECT 商品编号,sum(单价*数量) FROM 销售单据明细表 WHERE 单价>150 GROUP BY 商品编号
为提高此查询的执行效率,在不改变SQL语句且不进行硬件调整的情况下,请给出提高查询执行效率的方案。(5分)
在运行过程中,发现此系统数据库CPU使用率很高,达到近95%,高峰期间达到100%,且系统内存使用率达到90%,但系统I/O很轻。业务人员反映系统操作速度慢。为了提高系统运行速度,在不修改应用程序的前提下,两位工程师提出了两种不同的解决方案:
方案一:为服务器增加1颗CPU
方案二:为服务器增加一倍内存
考虑成本因素,现阶段只能选择一种方案实施。请指出在现有情况下,哪种方案更合理并给出原因。(5分)

答:

  1. 由于运行一段时间后,就有了近千万条数据,说明数据的写入量很大,这种情况下不能使用索引,因为写入量大,所以索引的维护开销将非常巨大,不仅无法提高效率,反而会降低性能,所以不适合查询优化。
    由于题目不允许改变SQL语句,所以无法使用反规范化或使用临时表的方式,以空间换取时间。题目同样不允许硬件调整,不允许进行硬件升级。
    本题最适合的方案是数据表的水平分割,由于商品编号有很多,所以应该按照单价区间进行水平分割。

  2. 题目说明数据库CPU使用率很高达到95%高峰期更是达到100%。说明此系统更急需方案一。
    虽然内存使用率达到90%,但是考虑成本因素只能选择一种方案实施的话,优先选择方案一。

题目三:

在这里插入图片描述

答:

  1. 提高CPU的主频,可以稍微缓解选课速度慢的问题。因为CPU主频高,单位时间内处理的数据多,但不能解决服务器反应慢的问题。题目中CPU选课期间使用率达到100%,增加CPU的频率不能解决跟本性问题。
  2. 内存提高,可以改善选课速度慢的问题,内存增加可以从一定程度上提高处理的数据,题目中,内存使用率达到95%,说明内存没有完全用完,因此内存容量不是造成服务器响应慢的原因。
  3. SLC的特点是成本高、容量小、速度快,而MLC的特点是容量大,成本低,但是速度慢。因此替换MLC不能提高读取速度,不能解决选课运行慢的问题。
  4. 更换网课不能解决选课运行慢的问题,因为本体中网络带宽使用率才20%,说明网络问题不是选课慢的主要原因。
  5. 可以从根本上解决选课慢的问题。原校验SQL语句需要1-2分钟才能执行完成,当大量学生选课时,CPU和内存主要用于处理SQL语句,大量的资源被消耗,引起服务器反应减慢。本题中,SQL语句的效率低下,是产生服务器响应慢的主要原因,应对SQL语句优化。一般来说,效率低下的SQL雨具常常是系统效率不佳的主要原因。

题目四:

在这里插入图片描述
答:

  1. 修改难易层度:表的分割对所有的数据库都适用,而表分区只能用特定的数据库,表分区属于数据库物理设计,表分割属于数据库逻辑设计。从实现方式来看,甲工程师的易于实现。
  2. 采用乙工程师的优化方案,即表的分区进行处理。因为分区表的特点是:如果数据了大,而且数据是分段的,而且对不同段的数据使用的操作不同。则适于使用分区表。本题中对表的当月数据,经常进行增删改查操作,而对于以往的数据,则几乎不用操作,或者操作仅限于查询,那么久可以按月份对表进行分区。从而提高查询效率。

题目五:

在这里插入图片描述
答:

  1. 产生掉线的原因是网络产生的问题。因为ping命令,发现丢包达到10%。而CPU、内存、磁盘I/0等使用率没有达到100%,说明还是有一定的富余。
  2. 数据库服务器最有可能的瓶颈是内存。因为内存的使用率在无任何操作下达到80%,使用率较高。说明内存容量不足以支撑服务器的活动。
    对一台数据库服务器来说,如果其在业务空闲时,使用率超过90%,说明服务器缺乏CPU资源;如果高峰期CPU使用率仍然很低,说明服务器CPU资源充足。据此,可以判断一个数据库CPU的使用情况。本题中CPU使用最高使用率只有12.5%,说明CPU不可能是数据库服务器的瓶颈。磁盘的I/O很低,说明不可能是服务器的瓶颈。

题目六:

设某社交网站使用sQL Server 2008数据库管理系统,上线运行1年后,用户操作速度明显变慢,数据库服务器负荷很高经技术人员分析,发现速度缓慢的原因为用户频繁访问网站,查看自己是否有新消息。某工程师建议利用数据库复制技术将相关数据表定期(例如1分钟)分发到另外一台服务器的只读数据库中,以便用户查询使用。请从数据一致性、用户体验、可扩展性三个方面逐一分析此方案优劣。说明此方案是否可行,并简要给出理由。

答:

  1. 优点:该方案能满足一致性。因为利用数据库快照复制技术,可以将相关表分发给另外一台服务器,可以满足一致性要求。数据更新可以采用自动更新和手动更新方式。更新时间可以建立分发数据库时设置,设置时间小于1分钟。通过这种方式可以满足用户体验。数据库的分发只是在软件层面进行,对于已经建好的发布和订阅可以至肌肤delete按钮删除,然后重新进行设置,扩展性强。
  2. 缺点:增加了一台服务器的开销。

题目七:

设某超市经营菅理系纳使用SCL Sarer 214晓据库管理系统。为了保证的埋库可靠运行,数据库曾理员设置7每天疯间时的据库一次全备份,备什鼓据保留2个月的备份策晗。上统运什i年后.( ore战据库中数已经坛到近uwB每天夜间要运行3个小时才能将数据库进行一次全备份,影影响了夜间统计等业务正常运行。同时,备份空间也非常紧张。请解释出现此现象的原因,并提出优化的方法。(10分)

  1. 产生此现象的原因是系统采用了全备份策略,随着业务的开展,需要备份数据量逐渐增大,备份时间越来越长,占用了系统的资源,从而影响了其他业务。解决的方法是采用全备份+差异备份+日志备份组合策略备份数据库。
    全备份+差异备份+日志备份组合策略是指在全备份中加一些差异备份, 例如每日0:00进行一次全备份,,然后每天0:00点进行一次差异备份,然后两次备份之间增加一些日志备份。这样做备份和恢复的速度都比较快。而当系统出现故障时,丢失的数据也很少

题目八:

在这里插入图片描述

  1. 此方案不可行。
  2. 触发器可以通过数据库中的相关表进行层叠更改,这比直接把代码写在前台的做法更安全,保证了一致性,但同时增加了磁盘空间的消耗。在经营中,要批量操作,多次触发的情况下,触发器的效率低,因为它相当于每次都执行一段sql语句,使CPU的消耗更高。因而从时空代价角度来说并不能达到优化效果。
  3. 在数据单表中增加“付款总金额”不是正确的优化方法,应该在数据单据明细中增加“付款总金额”,这样才能提高查询效率

题目九

在这里插入图片描述

  1. 为商品编号添加索引
  2. 此架构为数据库服务器容错架构,双机热备份。在不考虑硬件提升因素,此架构是能够提高系统性能以及可靠性。
    原因,双机热备份技术是一种软硬结合的较高容错应用方案。该方案是由两台服务器系统和一个外接共享磁盘矩阵以及相应的双机热备份软件组成。
    在这个容错方案中,极大的保护了数据安全性和机密性。用户的数据存放在外接共享磁盘阵列中,在一台服务器出现故障时,备机主动代替主机工作,保证网络服务器不间断。

题目十

在这里插入图片描述

  1. SELECT COUNT (*) FROM 学生表 JOIN 系所表 ON 学生表.所系号 = 系所表.系所号 WHERE 系所名 LIKE ‘%电%’ 性能更好。
    原因:T-SQL的代码需要先扫描一遍系所表,然后根据扫描得到的每个记录重新扫描一遍学生表得出结果。使用所写的SQL语句实现同样的功能,将学生表和系链接之后按条件过滤,只需要扫描一遍链接之后的表即可。
  2. 创建复合索引对第二条语句查询效率提高不明显,因为其复合索引身份证号排在前面,对查找姓名的查询效率提高不明显,而明显会提高第一条语句的查询效率。

题目十一

某学枚图书管理系统保存了能够借书的教师数据,该数据来源于人事系统另一家开发商开发的教师豉据。现需要将教师数据自动同步到图书管理系统中,教师做据总计约1万条,每天数据修改量约2条。
为了实现自动数据同步,图书管理系统新上线了一数据同步程序。在同步程序上线后,数信库管理员发现每天6据备价量大幅变增加,过其是数据库日志式大幅喷增加,经的查海的据动陟程存锅作的力侮1⑾饼将任有从小事系烈中黾的数据册除,而后将数据重新插入。
现需要对同步程序进行优化,某工程师提出了两套方案:
①在人事系统相关表中新增触发器,提取新增数据到增量数据表,同步程序每10分钟将增量数据表中数据同步至图书管理系统中。
@在图书管理系统中新建一临作时数据库,在其中新增与八事系纳结构相同的表,同步程序每10分钟将人事的的活传输到图书管理杀珠对应表中,在图书管官通系纳的据幸中岐用Sp语句为比困书宜强系结拍的据。怏轲增后参询图用管绿
系统数据。
请从对人事系统影响、对图书管理系统景影响、系统整体运行效率、相关开发人员协调复杂度四方面比较两套方案,并给出理由。

  1. 使用方案1,如果数据量大时会影响人事系统的运行,但对图书管理系统影响不大,系统整体运行效率高,相关开发人员协调复杂度也小。而使用方案2,会影响人事系统和图书管理系统的运行,也会增加系统的开销吸纳骨干人员协调的复杂度,比1低。
    总体而言,方案1优于方案2
    原因是在方案1中,只有在触发器设计时需要相关人员协调,数据量大时可能会影响人事系统的运行,而方案2,只有在开发人员协调的复杂度比方案1低,总体来说,会增加图书管理系统的开销。因为新建的数据库会占用系统的开销,影响系统整体运行的效率。

题目十二

某学校网络计费系统使用SQL Server 2008作为数据库管理系统,系统中需保存每个用户的每次登录和退出时间,该表的结构如下。CREATE TABLE登录日志表(
序列号int identity(1,1).
帐号varchar(8).
登录时间datetime,退出时间datetime,本次上网费用real);
在系统运行一段时间后,此未中有近5千万条数据。此时,用户按照登录时间查询自己过期上阏情况时速度缓慢。为了据高用户体验,某工程两程t建改对比表进行分风,请分析其建议合理性(若合理请给‰最代的分区市案),并兹
原因。
在解决了①中的问题系统平稳运行3年后,管理员考虑升级硬件。经过监控,系统资源使用情况如下:
-CPU使用率一般不超过50%
·内存使用率90%
-破盘IO使用率高峰期90%-95%,主要为读操作某工程师给出两种升级后的硬件配置方案:
.配置—:2颗处理器,6核心,主频2.4GHz;64GB内存,300GB 10K转SAS硬盘,3块,RAIDO
.配置二:2颗处理器,6核心,主频1.9GHz128GB内存;800GB固态硬盘SAS读取密集型MLC,2块,RAID1请根据以上数据,在不考虑费用因素的前提下,说明哪种配置更合理,并给出原因。

  1. 对登录日志表中在登录时间列上以月为单位创建右侧分区函数,将登录日志表分成12个分区,每个分区对应一年中的每一个月。因为操作仅限于查询,建立分区表可以有效的提高查询效率。
  2. 采用方案二。对于CPU、内存、磁盘凳硬件设备在空闲时使用率超过90%,说明硬件资源匮乏。如果在高峰期使用率小于90%说明硬件资源充足。本题中,内存和磁盘的使用率都高达90%,而CPU的使用率不高于50%,说明内存、硬盘的资源匮乏,需要调整,而内存的资源充足不需要调整。因此在硬件调整时,应提高内存的容量和磁盘的访问效率。RAID1相对RAID0来说提高了写的速度,加强了系统的可靠性,但是写效率没有提高。

试题十三

在SQL Server 2008中,设有教师表(教师号, 姓名, 所在部门号, 职称)和部门表(部门号, 部门名, 高级职称人数)。请编写满足下列要求的后触发型触发器(设触发器名字为tri_zc)。
每当在教师表中插入一名具有高级职称(“教授"或"副教授”)的教师时,或者将非高级职称教师的职称更改为高级职称时,均修改部门表中相应部门的高级职称人数。(假设一次操作只插入或更改一名教师的职称)

答疑:【参考答案】
CREATE TRIGGER tric_zc
ON 教师表
AFTER INSERT,UPDATE
AS
BEGIN
DECLATE@zc varchar(10),@dept varchar(30)
SEL @ze = (select 所在部门号 FROM inserted)
IF @zc = ‘教授’ or ‘副教授’
Update 部门表
Sel高级职称人数 = 高级职称人数 + 1
Where 部门号 = @dept
End
【解题思路】
创建触发器的SQL语句为:CREATE TRIGGER,其语法格式为:
CREATE TRIGGER 触发器名称
ON {表名|视图名}
{FOR | AFTER | INSTEAD OF} {[INSERT] [,] [DELETE] [,] [UPDATE]}

AS
[ { IF UPDATE(column)
[{AND | OR } UPDATE(column)…]
SQL 语句

猜你喜欢

转载自blog.csdn.net/weixin_44391817/article/details/132378829
今日推荐