问答题
某商品销售管理系统使用SQL Server 2000数据库。在数据库中有销售单据表,其建表语句为:
CREATE TABLE 销售单据表(
销售单据编号 varchar(8) primary key,
付款总金额 money,
销售日期 datetime,
销售人员编号 varchar(8),
收银台编号 varchar(8)
)
由于该表数据量巨大,因此建立有销售单据历史表,将6个月以前的数据从销售单据表转入销售单据历史表,销售单据历史表的结构与销售单据表相同。
设已在销售日期和销售人员编号列上建立了索引。
①现需查询编号为“001000”的销售人员的全部销售情况,有如下两个SQL语句:
Ⅰ.SELECT销售单据编号,付款总金额,销售日期 FROM销售单据表
WHERE销售人员编号='01000'
UNION
SELECT销售单据编号,付款总金额,销售日期 FROM销售单据历史表
WHERE销售人员编号='001000'
Ⅱ.SELECT销售单据编号,付款总金额,销售日期 FROM销售单据表
WHERE销售人员编号='001000'
UNION ALL
SELECT销售单据编号,付款总金额,销售日期 FROM销售单据历史表
WHERE销售人员编号='001000'
请比较以上两个SQL语句的执行效率,并说明原因。
②设此数据库的数据存储在由两块146GB SAS硬盘组成的软件RAID1上。
随着业务发展,数据库数据量逼近100G,且磁盘I/O很重。现考虑对硬件进行升级,有三种不同配置方案;
Ⅰ.采用两个3.46GHz六核Intel Xeon 5600系列处理器,16GB内存,4块300GB SAS硬盘,使用硬件RAID卡做RAID 1+0
Ⅱ.采用两个3.46GHz六核Intel Xeon 5600系列处理器,16GB内存,4块300GB SAS硬盘,使用硬件RAID卡做RAID 0
Ⅲ.采用两个3.46 GHz六核Intel Xeon 5600系列处理器,16GB内存,4块300GB SAS硬盘,使用软件RAID 5
请分别从系统可用磁盘空间、磁盘I/O性能和系统可靠性上对以上三种方案进行比较。
【正确答案】①第二个执行效率较高。第一个在执行完union语句后,需要对表中数据逐个查询,该表数据量较大,所以,并不理想。而第二个在执行完union语句后,执行all语句,根据由销售日期和销售人员编号建立的索引,直接查询,故查询效率较高。
②RAID 0:并行读/写于多个磁盘上,具有很高的数据传输率,但它只是单纯地提高性能,并没有为数据的可靠性提供保障。
RAID 1+0:同时拥有RAID0的高数据传输率和RAID1的高数据可靠性,但是CPU占用率同样也很高,而磁盘的利用率比较低。
RAID 5:是一种存储性能、数据安全和存储成本兼顾的存储解决方案。
【答案解析】