设在SQL Server 2008某数据库中存在销售单据明细表,其建表语句为: CREATE TABLE销售单据明细表( 销售单据编号 varchar(10), 商品编号 varchar(8), 是否有效 varchar(4), 单价

admin2018-06-19  14

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

选项

答案(1)“销售单据编号”、“商品编号”和“是否有效”都是查询的条件,因此在这三列上建立索引,可以提高查询效率。 原因:经常在查询中作为条件被使用的列,应为其建立索引,可提高查询效率。 (2)从读的方面来看:当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1可以提高读取性能,也提高了磁盘的存储空间。增加一个RAID1可以提高磁盘的存储空间,在一定程度上提高了读速度,加强了系统的可靠性。但是增加RAIDl,系统变成四块硬盘,同时也就增加了系统的I/O开销,当数据量大时,并不能很好地提高系统的读的速度。 从写的方面来看:RAIDl磁盘阵列的写入速度通常较慢,因为数据得分别写入两块硬盘中并做比较。现在增加了一块RAID1磁盘阵列,相当于有四块硬盘,在写入数据时,可能会做两个备份,写入的速度更慢。 因此从读写两个方面来说,增加一块RAIDl磁盘阵列不是解决问题的好的方式,这种方法不建议使用。

解析 本题考查的是索引相关知识,如索引定义,在什么地方建立索引,建立索引的条件以及RAID1磁盘阵列的特点。
    (1)索引的知识
    索引技术是一种快速数据访问技术,它将一个文件的每个记录在某个或某些领域(或称为属性)上的取值与该记录的物理地址直接联系起来,提供了一种根据记录域的取值快速访问文件记录的机制。索引的使用要恰到好处,其使用原则一般如下:
    ①经常在查询中作为条件被使用的列,应为其建立索引;
    ②频繁进行排序或分组(即进行group by或order by操作)的列,应为其建立索引;
    ③一个列的值域很大时,应为其建立索引;
    ④如果待排序的列由多个,应在这些列上建立复合索引。
    (2)RAID1磁盘阵列的特点
    RAID1磁盘阵列级,是一种镜像磁盘阵列,其原理就是将一块硬盘的数据以相同位置指向另一块硬盘的位置。RAID1又称为Mirror或Mirroring,它的宗旨是最大限度地保证用户数据的可用性和可修复性。RAID1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。由于对存储的数据进行百分之百的备份,在所有RAID级别中,RAID1提供最高的数据安全保障。同样,由于数据的百分之百备份,备份数据占了总存储空间的一半,因而,Mirror的磁盘空间利用率低,存储成本高。Mirror虽不能提高存储性能,但由于其具有的高数据安全性,使其尤其适用于存放重要数据,如服务器和数据库存储等领域。
    RAID1提高了读速度,加强了系统可靠性。但其磁盘的利用率低,冗余度为50%,同时写速度并未提高。RAIDl经常要求保证用户数据的可用性和可修复性场所,体现系统的可靠性,而不是读写速度。
    RAID1是将一个两块硬盘所构成RAID磁盘阵列,其容量仅等于一块硬盘的容量,因为另一块只是当作数据“镜像”。RAID1磁盘阵列显然是最可靠的一种阵列,因为它总是保持一份完整的数据备份。它的性能自然没有RAID0磁盘阵列那样好,但其数据读取确实较单一硬盘来的快,因为数据会从两块硬盘中较快的一块中读出。RAID1磁盘阵列的写入速度通常较慢,因为数据得分别写入两块硬盘中并做比较。RAID1磁盘阵列一般支持“热交换”,就是说阵列中硬盘的移除或替换可以在系统运行时进行,无须中断退出系统。RAID1磁盘阵列是十分安全的,不过也是较贵一种RAID磁盘阵列解决方案,因为两块硬盘仅能提供一块硬盘的容量。RAID1磁盘阵列主要用在数据安全性很高,而且要求能够快速恢复被破坏的数据的场合。
转载请注明原文地址:https://kaotiyun.com/show/WHlZ777K
0

最新回复(0)