问答题 某商品销售管理系统使用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:是一种存储性能、数据安全和存储成本兼顾的存储解决方案。
【答案解析】