在SQL Server某数据库中存在销售单据明细表,其建表语句为: CREATE TABLE销售单据明细表( 销售单据编号 varchar(20), 商品编号 varchar(8), 单价 morIey, 数量 int ); 在系统

admin2020-05-25  158

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

选项

答案(1)在不改变SQL语句且不进行硬件调整的情况下,可以为销售单据明细表“商品编号”建立一个索引来提高查询的效率。 (2)方案一合理。提高数据库性能的方法,一般是从外部环境、调整内存分配、调整磁盘I/O、调整竞争资源等几方面着手来改变数据库的参数。SQL Server采用将数据缓冲在内存的方式,因此在数据库系统运行的过程中会占用一定的内存,又因为I/O并不存在问题,说明内存上满足需求。CPU使用率很高,说明CPU计算能力不足,应增加CPU的数量。

解析 本题考查的是索引相关知识,如索引定义,在什么地方建立索引,建立索引的条件等等,以及数据库性能优化的方法。
(1)索引的知识
索引技术是一种快速数据访问技术,它将一个文件的每个记录在某个或某些领域(或称为属性)上的取值与该记录的物理地址直接联系起来,提供了一种根据记录域的取值快速访问文件记录的机制。索引的使用要恰到好处,其使用原则一般如下:
①经常在查询中作为条件被使用的列,应为其建立索引;
②频繁进行排序或分组(即进行group by或order by操作)的列,应为其建立索引;
③一个列的值域很大时,应为其建立索引;
④如果待排序的列有多个,应在这些列上建立复合索引。
(2)数据库性能优化
一般来说,在数据库发现性能问题时,首先需要对数据库运行环境进行检查。可以从外部环境、调整内存分配、调整磁盘I/O、调整资源竞争等几个方面着手改变数据库的参数,提高其性能。
①外部调整:外部的条件主要包括CPU和网络。/
在任何机器中,CPU的数据处理能力往往是衡量计算机性能的一个标志。如果运行队列数目超过了CPU处理的数目,服务器性能就会受到CPU的限制而下降。解决方法是为服务器适当增加CPU的数量或者是终止需要许多资源的进程。
大量的SQL数据在网络上传输会导致网速变慢。网卡、交换机、集线器等网络设备的性能对网络的影响很明显。所以,通过调整网络设备,也可以在一定程度上提高数据库系统的性能。
②调整内存分配:通过调整相关参数控制数据库的内存分配,也可以在很大程度上改善数据库系统的性能。
③调整磁盘I/O:通过令I/O时间最小化,减少磁盘上的文件竞争带来的瓶颈等方法来改善数据库系统的性能。
④调整竞争:修改参数以控制连接到数据库的最大进程数、减少调度进程的竞争、减少多线程服务进程竞争、减少重做日志缓冲区竞争和减少回滚段竞争。
转载请注明原文地址:https://kaotiyun.com/show/osID777K
0

相关试题推荐
最新回复(0)