- 相關(guān)推薦
2016計算機三級數(shù)據(jù)庫分析真題
2016年上半年計算機考試已經(jīng)過去了,yjbys小編第一時間為大家分享的是本次計算機三級數(shù)據(jù)庫的考試真題,希望對大家有所幫助!
Q1:
設(shè)某全國性的運輸企業(yè)建立了大型OLTP系統(tǒng),并在該系統(tǒng)之上建立了數(shù)據(jù)倉庫。OLTP系統(tǒng)和數(shù)據(jù)倉庫中有如下數(shù)據(jù)表:
運輸明細(xì)表(運輸單ID,發(fā)送站ID,終到站ID,貨物ID,貨物重量,運輸價格,發(fā)貨日期)
匯總表1(發(fā)送站ID,終到站ID,貨物ID,發(fā)貨日期,總重,總運價)
匯總表2(發(fā)送站ID,終到地區(qū)ID,貨物ID,發(fā)貨日期,總重,總運價)
匯總表3(發(fā)送站ID,終到站ID,貨物ID,發(fā)貨月份,總重,總運價)
匯總表4(發(fā)送地區(qū)ID,終到地區(qū)ID,貨物類別ID,發(fā)貨日期,總重,總運價)
該企業(yè)管理的貨運站約有100個,貨物約有500種共10類,各匯總表都建有主碼,且各表有合理的維護策略,在每次維護后數(shù)據(jù)能保持一致。設(shè)有視圖V,該視圖的訪問頻率很高,其查詢結(jié)果模式為(發(fā)送地區(qū)ID,終到站ID,發(fā)貨月份,總重,總運價),該視圖現(xiàn)以匯總表1為計算數(shù)據(jù)源。經(jīng)監(jiān)控發(fā)現(xiàn),匯總表1的被訪問頻率過高,導(dǎo)致系統(tǒng)整體性能下降,而其它匯總表被訪問頻率較低。在不增加匯總表和索引的情況下,請給出一個改善系統(tǒng)服務(wù)性能的優(yōu)化方案,并簡要說明理由。
A1:
由于匯總表1和視圖的模式訪問頻率都很高,而且視圖的數(shù)據(jù)源來自匯總表1,又因為其他匯總表的訪問率較低,所以只需要將視圖的數(shù)據(jù)源綁定為匯總表3,因為匯總表3也可以滿足視圖的輸出模式。這樣不僅提升了匯總表3的數(shù)據(jù)訪問率,而且降低了匯總表1的數(shù)據(jù)訪問率,系統(tǒng)性能和服務(wù)性能得到了很大的優(yōu)化。又因為貨物約有500種,共10類,可以再建立一個視圖綁定數(shù)據(jù)源為匯總表4,這樣就可以充分利用匯總表4的數(shù)據(jù)信息,從而可以進(jìn)一步完善系統(tǒng)性能的優(yōu)化。
Q2:
在進(jìn)行某學(xué)校教務(wù)管理系統(tǒng)的數(shù)據(jù)庫設(shè)計時,數(shù)據(jù)庫設(shè)計人員設(shè)計了如下幾個關(guān)系模式:
系(系號,系名),系號為主碼
學(xué)生(學(xué)號,姓名,所在系號),學(xué)號為主碼
課程(課程號,課程名,開課系號),課程號為主碼
選課(學(xué)號,課程號,選課時間),學(xué)號和課程號為主碼(8分)
開發(fā)人員在將關(guān)系模式實施到SQL Server 2008的"教務(wù)"數(shù)據(jù)庫時,使用了如下表結(jié)構(gòu)定義語句:
CREATE TABLE 系 (
系號 varchar(10) NOT NULL ,
系名 varchar(100))
CREATE TABLE 學(xué)生 (
學(xué)號 varchar(50) NOT NULL ,
姓名 varchar(50),
所在系號 varchar(10))
CREATE TABLE課程 (
課程號 varchar(50) NOT NULL ,
課程名 varchar(100),
開課系號 varchar(10))
CREATE TABLE 選課 (
學(xué)號 varchar(50) NOT NULL ,
課程號 varchar(50) NOT NULL ,
選課時間 datetime )
在執(zhí)行如下查詢語句時發(fā)現(xiàn)執(zhí)行效率很低:
SELECT * FROM 選課 JOIN 學(xué)生 ON 學(xué)生.學(xué)號= 選課.學(xué)號
JOIN 系 ON 系.系號 = 學(xué)生.所在系號
JOIN 課程 ON 課程.課程號 = 選課.課程號
WHERE 系.系號=′012′
AND convert(varchar(10),選課時間,120)>= ′2010-01-01′
(1)在查找原因時發(fā)現(xiàn)建表語句有問題。請指出問題并說明該問題是否會影響此查詢語句的執(zhí)行效率。(4分)
(2)設(shè)已在"選課"表的"選課時間"列及"學(xué)生"表的"所在系號"列上建立了索引。請問這兩個索引是否能夠提高該查詢語句的執(zhí)行效率?如果不能,請說明原因。(4分)
A2:
(1) 【解題思路】
本題中查詢語句的功能是得到12系全體學(xué)生在2010年1月1日后的選課情況的匯總表。在每個數(shù)據(jù)表的定義時都必須嚴(yán)格定義表中的完整性約束條件,包括主鍵的設(shè)置,否則之后會出現(xiàn)主鍵有相同值的情況,破壞了數(shù)據(jù)的完整性。
【參考答案】
建表時沒有設(shè)置主鍵,也沒有說明外鍵。但不會影響此查詢語句的執(zhí)行效率
(2)【解題思路】
建立索引是加快查詢速度的有效手段,用戶可以根據(jù)應(yīng)用環(huán)境的需要建立一個或多個索引,以提供多種存取路徑,加快查找速度。索引就像書的目錄一樣為我們將記錄按規(guī)定的列進(jìn)行了排序,這樣當(dāng)我們要訪問滿足這些列的某些條件的記錄時,索引會為我們減少查詢數(shù)據(jù)庫中的地址范圍,大大節(jié)省了時間。所以根據(jù)WHERE條件后的字段對表建立索引對于提高查詢效率是有幫助的。
【參考答案】
"選課"表的"選課時間"列上建立了索引,從而能夠提高執(zhí)行效率。經(jīng)常出現(xiàn)在Where子句中的字段,特別是大表的字段,應(yīng)該建立索引。索引的作用就類似于書的目錄,即會按照章節(jié)的順序排列。因此如果在一本數(shù)百頁的書里面查找某個章節(jié)位置的時候,就可以只掃描書的目錄。掃描的范圍縮了n倍,查詢的效率自然就會提高。另外,在SQLServer內(nèi)存夠用的情況下,索引會被放到內(nèi)存中,在內(nèi)存中查找自然又會提高效率,所以必須合理利用索引。
Q3:
某商場商品經(jīng)營管理系統(tǒng)使用SQL Server 2008數(shù)據(jù)庫管理系統(tǒng),此系統(tǒng)上線運行1年后,業(yè)務(wù)人員使用某統(tǒng)計功能(此功能每月使用一次)時發(fā)現(xiàn)速度很慢。該統(tǒng)計功能主要執(zhí)行的SQL語句如下:
SELECT 商品號,SUM(銷售數(shù)量*銷售價格) 銷售額
FROM 銷售明細(xì)
GROUP BY 商品號;
該銷售明細(xì)表的建表語句如下:
CREATE TABLE 銷售明細(xì)(
序列號 intIDENTITY(1,1) NOT NULL,
商品號 intNOT NULL,
銷售日期 datetime NULL,
銷售數(shù)量 intNOT NULL,
銷售價格 intNOT NULL
);
并在銷售明細(xì)表上建有如下索引:
CREATE index ix_銷售明細(xì)_商品號 on 銷售明細(xì)(商品號);
某技術(shù)人員提出通過執(zhí)行下述語句以提高此查詢的運行效率:
CREATE VIEW 商品銷售額視圖
WITH SCHEMABINDING
AS
SELECT 商品號,SUM(銷售數(shù)量*銷售價格) 銷售額,
COUNT_BIG(*) cnt
FROM dbo.銷售明細(xì)
GROUP BY 商品號;
CREATE UNIQUE CLUSTERED INDEXix_商品銷售額
ON 商品銷售額視圖(商品號);(10分)
(1)請分析該技術(shù)人員給出的語句功能以及對原有查詢語句的性能影響,并給出原因。
(2)此商場的銷售量很大,每天有大量數(shù)據(jù)插入到銷售明細(xì)表中。請從數(shù)據(jù)庫整體性能角度分析,此技術(shù)人員提出的優(yōu)化方法是否合適,并給出原因。
A3:
(1)【解題思路】
該技術(shù)人員使用了帶有索引的視圖,將所關(guān)心的數(shù)據(jù)(商品號,銷售額,該商品號在表中出現(xiàn)的次數(shù))從銷售明細(xì)表中提取出來建立視圖,并對該視圖建立按商品號排序的聚簇索引,這樣大大減少了在搜索不同商品的銷售額時調(diào)用的數(shù)據(jù)表的規(guī)模,從而提高了查詢效率。由于表的數(shù)據(jù)規(guī)模很大,建立該視圖后,同一種商品不會多次出現(xiàn)在表中,而是通過一個計數(shù)變量cnt表示,這樣在檢索時大大減少了檢索規(guī)模。創(chuàng)建索引時,UNIQUE關(guān)鍵字表明此索引的每一個索引值只對應(yīng)唯一的數(shù)據(jù)記錄。CLUSTER表示要建立的索引是聚簇索引,所謂聚簇索引是指索引項的順序與表中記錄的物理順序一致的索引組織。
【參考答案】
語句功能:建立包含(商品號,銷售額,該商品表中出現(xiàn)次數(shù))的帶索引的視圖,并建立按商品對應(yīng)銷售額UNIQUE聚簇排序的索引,大大縮小了查詢語句的查詢范圍,提高了查詢效率。原因:視圖中將間接相關(guān)的屬性列(序列號,銷售日期,商品號,銷售數(shù)量,銷售價格)轉(zhuǎn)換成了目標(biāo)屬性列,減少了搜索空間;同時建立UNIQUE CLUSTERED索引,使查詢商品號的數(shù)據(jù)記錄唯一,降低了搜索范圍,提高了搜索效率。
(2)【解題思路】
由于視圖是不實際存儲數(shù)據(jù)的虛表,因此對視圖的更新最終要轉(zhuǎn)換為對基本表的更新。而用戶通過視圖對數(shù)據(jù)進(jìn)行增加、刪除、修改時,有意或無意地對不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進(jìn)行操作,會破壞數(shù)據(jù)的一致性。而且視圖中的數(shù)據(jù)本身就是冗余的,每次對表進(jìn)行修改時,同時也要對相應(yīng)的視圖進(jìn)行修改,這大大增加了系統(tǒng)的負(fù)擔(dān)。
【參考答案】
不合適,每天大量的插入操作在修改表的同時也要對視圖進(jìn)行修改,增加了系統(tǒng)的負(fù)擔(dān),然而該統(tǒng)計功能一個月才用一次,這樣導(dǎo)致系統(tǒng)的利用率也較為低下。
Q4:
某教務(wù)管理系統(tǒng)使用SQL Server 2008數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫軟硬件配置信息如下:
Ⅰ.數(shù)據(jù)庫運行在兩路Intel Xeon E5-2609 2.4GHz CPU(每路CPU4核心),128GB內(nèi)存、2塊300GB15000轉(zhuǎn)SAS硬盤(RAID 1)的服務(wù)器上;
、.服務(wù)器操作系統(tǒng)為Windows 2003 32位企業(yè)版,安裝SP2補丁;
、.數(shù)據(jù)庫為SQL Server 2008 Enterprise(32 位),數(shù)據(jù)庫中總數(shù)據(jù)量近130GB。
近一個學(xué)期以來,用戶反映系統(tǒng)運行緩慢,經(jīng)程序員定位,確定為數(shù)據(jù)庫服務(wù)器響應(yīng)緩慢,需要進(jìn)行調(diào)優(yōu)。
A4:
【解題思路】
數(shù)據(jù)庫性能優(yōu)化的基本原則就是通過盡可能少的磁盤訪問獲得所需要的數(shù)據(jù)。SQL SERVER性能優(yōu)化一般從數(shù)據(jù)庫設(shè)計、應(yīng)用程序編碼、硬件優(yōu)化、數(shù)據(jù)庫索引、SQL語句、事務(wù)處理幾個方面入手考慮問題。
(1) 分析階段:在系統(tǒng)分析階段往往有太多需要關(guān)注的地方,系統(tǒng)各種功能性、可用性、可靠性、安全性需求吸引了我們大部分的注意力,但必須注意的是,性能往往是很重要的非功能性需求,必須根據(jù)系統(tǒng)的特點確定其實時性需求、響應(yīng)時間的需求、硬件的配置等。最好能有各種需求量化的指標(biāo)。
(2) 設(shè)計階段:例如數(shù)據(jù)庫邏輯設(shè)計規(guī)范化;合理的冗余;主鍵的設(shè)計;外鍵的設(shè)計 ;字段的設(shè)計 ;數(shù)據(jù)庫物理存儲和環(huán)境的設(shè)計;數(shù)據(jù)庫的物理存儲、操作系統(tǒng)環(huán)境及網(wǎng)絡(luò)環(huán)境的設(shè)計,皆使得我們的系統(tǒng)在將來能適應(yīng)較多用戶的并發(fā)操作和較大的數(shù)據(jù)處理量。 這里需要注意文件組的作用,適用文件組可以有效的把I/O操作分散到不同的物理硬盤,提高并發(fā)能力。
(3) 系統(tǒng)設(shè)計:整個系統(tǒng)的設(shè)計,特別是系統(tǒng)結(jié)構(gòu)的設(shè)計對性能具有很大的影響。對于一般的OLTP系統(tǒng),可以選擇C/S結(jié)構(gòu)、三層的C/S結(jié)構(gòu)等,不同的系統(tǒng)結(jié)構(gòu)其性能的關(guān)鍵也有所不同。系統(tǒng)設(shè)計階段應(yīng)歸納些業(yè)務(wù)邏輯在數(shù)據(jù)庫編程階段實現(xiàn),數(shù)據(jù)庫編程包括數(shù)據(jù)庫存儲過程、觸發(fā)器和函數(shù)。用數(shù)據(jù)庫編程實現(xiàn)業(yè)務(wù)邏輯的好處是減少網(wǎng)絡(luò)流量并能更充分利用數(shù)據(jù)庫的預(yù)編譯和緩存功能;索引設(shè)計階段可以根據(jù)功能和性能的需求進(jìn)行初步的索引設(shè)計,這里需要根據(jù)預(yù)計的數(shù)據(jù)量和查詢來設(shè)計索引,可能與將來實際使用時有所區(qū)別。
(4) 編碼階段:編碼階段首先需要所有程序員具備優(yōu)化意識,也就是在實現(xiàn)功能的同時具備考慮優(yōu)化性能的思想。數(shù)據(jù)庫是能進(jìn)行集合運算的工具,所謂集合運算實際是批量運算,即是盡量減少在客戶端進(jìn)行大數(shù)據(jù)量的循環(huán)操作,而用SQL語句或者存儲過程代替。這個階段主要是注意在SQL語句等方面的優(yōu)化,如:盡量少做重復(fù)的工作,用SELECT后跟需要的字段代替SELECT*語句,注意事務(wù)和鎖 ,注意臨時表和表變量的用法,慎用游標(biāo)和觸發(fā)器,盡量使用索引等。
(5) 硬件優(yōu)化:RAID (獨立磁盤冗余陣列)是由多個磁盤驅(qū)動器(一個陣列)組成的磁盤系統(tǒng)。通過將磁盤陣列當(dāng)作一個磁盤來對待,基于硬件的RAID允許用戶管理多個磁盤。使用基于硬件的RAID與基于操作系統(tǒng)的RAID相比較可知,基于硬件的RAID能夠提供更佳的性能,如果使用基于操作系統(tǒng)的RAID,那么它將占據(jù)其他系統(tǒng)需求的CPU周期,通過使用基于硬件的RAID,用戶在不關(guān)閉系統(tǒng)的情況下能夠替換發(fā)生故障的驅(qū)動器。利用數(shù)據(jù)庫分區(qū)技術(shù),可均勻地把數(shù)據(jù)分布在系統(tǒng)的磁盤中,平衡I/O 訪問,避免I/O 瓶頸等。
(6) 事務(wù)處理調(diào)優(yōu):數(shù)據(jù)庫的日常運行過程中,可能面臨多個用戶同時對數(shù)據(jù)庫的并發(fā)操作而帶來的數(shù)據(jù)不一 致的問題,如:丟失更新、臟讀和不可重復(fù)讀等。并發(fā)控制的主要方法是封鎖,鎖的含義即是在一段時間內(nèi)禁止用戶做某些操作以避免產(chǎn)生數(shù)據(jù)不一致。對于事務(wù)性能的調(diào)優(yōu),要考慮到事務(wù)使用的鎖的個數(shù)(在所有其他條件相同的情況下,使用的鎖個數(shù)越少,性能越好)、鎖的類型 (讀鎖對性能更有利)以及事務(wù)持有鎖的時間長短(持有時間越短,性能越好)等情形。
【參考答案】
(1)表結(jié)構(gòu)優(yōu)化:重新優(yōu)化數(shù)據(jù)庫設(shè)計結(jié)構(gòu),數(shù)據(jù)庫邏輯設(shè)計的規(guī)范化;設(shè)計主鍵和外鍵;設(shè)計合適大小的字段。
(2)硬件優(yōu)化:購買一塊同樣大小的硬盤,將硬盤做成RAID5,用以提高數(shù)據(jù)庫相應(yīng)速度;增加服務(wù)器CPU個數(shù);擴大服務(wù)器的內(nèi)存。
(3)索引優(yōu)化:采用對經(jīng)常作為條件查詢的列設(shè)計索引,查詢經(jīng)常用到的列上建立非聚簇索引,在頻繁進(jìn)行范圍查詢、排序、分組的列上建立聚簇索引,對于有頻繁進(jìn)行刪除、插入操作的表不要建立過多的索引。
(4)采用視圖:合理使用視圖和分區(qū)視圖,在需要更新和刪除操作不多、查詢操作頻繁的表上建立索引視圖。
(5)SQL語句優(yōu)化:擇運算應(yīng)盡可能先做,并在對同一個表進(jìn)行多個選擇運算時,選擇影響較大的語 句放在前面;較弱的選擇條件寫在后面,這樣就可以先根據(jù)較嚴(yán)格的條件得出數(shù)據(jù)較小的信息,再在這些信息中根據(jù)后面較弱的條件得到滿足條件的信息;應(yīng)避免使用相關(guān)子查詢。把子查詢轉(zhuǎn)換成聯(lián)結(jié)來實現(xiàn);字段提取按照"需多少,提多少"的原則,避免"SELECT*"。"SELECT *"需 要數(shù)據(jù)庫返回相應(yīng)表的所有列信息,這對于一個列較多的表無疑是一項費時的操作,采用存儲過程,使用存儲過程提高數(shù)據(jù)處理速度。
Q5:
某采購中心采購了一套商品批發(fā)查詢管理系統(tǒng),此系統(tǒng)采用SQLServer 2008數(shù)據(jù)庫管理系統(tǒng),該系統(tǒng)需要經(jīng)常處理百萬級以上的數(shù)據(jù)查詢。同時該系統(tǒng)提供了第三方人員開發(fā)的SQL接口,第三方人員可以根據(jù)自己的需要開發(fā)自己的應(yīng)用程序來訪問數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)。
(1)系統(tǒng)在使用的過程中,業(yè)務(wù)人員反應(yīng)系統(tǒng)操作速度很慢。經(jīng)過工程師檢查測試后,數(shù)據(jù)庫系統(tǒng)本身及網(wǎng)絡(luò)傳輸過程中存在著一些問題,請給出針對數(shù)據(jù)庫系統(tǒng)本身及網(wǎng)絡(luò)傳輸過程中可能的一些調(diào)優(yōu)方案。
(2)工程師在完成數(shù)據(jù)庫系統(tǒng)本身和網(wǎng)絡(luò)問題的優(yōu)化后,發(fā)現(xiàn)第三方開發(fā)人員的SQL查詢語句存在很多沒有優(yōu)化的問題,請從第三方開發(fā)人員角度給出一些優(yōu)化方案。
A5:
【解題思路】
從數(shù)據(jù)庫本身和網(wǎng)絡(luò)傳輸?shù)慕嵌瘸霭l(fā),數(shù)據(jù)庫性能低下的因素一般有:I/O吞吐量小,形成了瓶頸效應(yīng);沒有創(chuàng)建計算列導(dǎo)致查詢不優(yōu)化;SQLServer數(shù)據(jù)庫內(nèi)存不足;網(wǎng)絡(luò)速度慢;查詢出的數(shù)據(jù)量過大(可以采用多次查詢或其他的方法降低數(shù)據(jù)量)以及鎖或者死鎖(這也是查詢慢最常見的問題,是程序設(shè)計的缺陷)。
從SQL查詢語句角度來考慮優(yōu)化響應(yīng)時間,應(yīng)該從查詢條件、臨時表、游標(biāo)、返回數(shù)據(jù)量、大事務(wù)操作等方面進(jìn)行調(diào)優(yōu)。
【參考答案】
(1)
、侔褦(shù)據(jù)、日志、索引放到不同的I/O設(shè)備上,增加讀取速度,數(shù)據(jù)量(尺寸)越大,提高I/O越重要。
、诳v向、橫向分割表,減少表的尺寸。
、凵売布瑪U大服務(wù)器的內(nèi)存,Windows 2000和SQL server 2000能支持4-8G的內(nèi)存。配置虛擬內(nèi)存,虛擬內(nèi)存大小應(yīng)基于計算機上并發(fā)運行的服務(wù)進(jìn)行配置。增加服務(wù)器 CPU個數(shù)。
、芊植际椒謪^(qū)視圖可用于實現(xiàn)數(shù)據(jù)庫服務(wù)器聯(lián)合體。聯(lián)合體是一組分開管理的服務(wù)器,但它們相互協(xié)作分擔(dān)系統(tǒng)的處理負(fù)荷。這種通過分區(qū)數(shù)據(jù)形成數(shù)據(jù)庫服務(wù)器聯(lián)合體的機制能夠擴大一組服務(wù)器,以支持大型的多層 Web 站點的處理需要。
⑤重建索引 DBCC REINDEX ,DBCCINDEXDEFRAG,收縮數(shù)據(jù)和日志 DBCC SHRINKDB,DBCCSHRINKFILE. 設(shè)置自動收縮日志.對于大的數(shù)據(jù)庫不要設(shè)置數(shù)據(jù)庫自動增長,它會降低服務(wù)器的性能。
、迌(yōu)化鎖結(jié)構(gòu)。
(2)
①對查詢進(jìn)行優(yōu)化,應(yīng)盡量避免全表掃描,首先應(yīng)考慮在where 及 order by 涉及的列上建立索引。
、趹(yīng)盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描。
③任何地方都不要使用 select * from 進(jìn)行全表掃描,用具體的字段列表代替"*",不要返回冗余字段
、鼙苊忸l繁創(chuàng)建和刪除臨時表,以減少系統(tǒng)表資源的消耗。
⑤盡量避免使用游標(biāo),因為游標(biāo)的效率較差,如果游標(biāo)操作的數(shù)據(jù)超過1萬行,那么就應(yīng)該考慮改寫。
、薇M量避免大事務(wù)操作,提高系統(tǒng)并發(fā)能力。
Q6:
某網(wǎng)上商城因為業(yè)務(wù)發(fā)展,原有的系統(tǒng)不能很好的滿足需要,因此采用了一套新的經(jīng)營管理系統(tǒng),此系統(tǒng)使用SQLServer 2008數(shù)據(jù)庫管理系統(tǒng)。此系統(tǒng)上線運行前,需將商場原有的數(shù)據(jù)導(dǎo)入到新系統(tǒng)中。原有系統(tǒng)使用SQL Server 2000,數(shù)據(jù)結(jié)構(gòu)與新系統(tǒng)不完全一致。因此需要把數(shù)據(jù)從SQLServer 2000導(dǎo)入到SQL Server 2008中,為了保證數(shù)據(jù)一致性,數(shù)據(jù)導(dǎo)入過程中要求暫停業(yè)務(wù)且必須在3小時內(nèi)完成。
(1)在原有數(shù)據(jù)導(dǎo)入新系統(tǒng)的過程中,實施人員發(fā)現(xiàn)原有數(shù)據(jù)量很大,導(dǎo)入數(shù)據(jù)需要四小時,業(yè)務(wù)無法接受。經(jīng)分析某工程師認(rèn)為,數(shù)據(jù)導(dǎo)入過程中的數(shù)據(jù)庫I/O很高,但導(dǎo)入數(shù)據(jù)的程序本身對系統(tǒng)資源占用率很低。該工程師建議將數(shù)據(jù)導(dǎo)入過程中的數(shù)據(jù)恢復(fù)模式從"完整"模式改為"簡單"模式以提高數(shù)據(jù)導(dǎo)入速度;而另一位工程師則認(rèn)為此方法未必能提高數(shù)據(jù)導(dǎo)入速度,而且還可能導(dǎo)致數(shù)據(jù)丟失,不建議使用此方法。
請分析此方法是否能夠提高數(shù)據(jù)導(dǎo)入速度并給出理由,同時分析此操作的數(shù)據(jù)丟失風(fēng)險。(5分)
(2)在成功導(dǎo)入歷史數(shù)據(jù)后,此系統(tǒng)順利上線運行。在上線運行的第一周,發(fā)現(xiàn)數(shù)據(jù)庫服務(wù)器的CPU使用率很高,達(dá)到近90%,高峰期間達(dá)到100%,且系統(tǒng)內(nèi)存占用率達(dá)到90%,但系統(tǒng)I/O很輕。業(yè)務(wù)人員反應(yīng)系統(tǒng)操作速度很慢。為了提高系統(tǒng)運行速度。在不修改應(yīng)用程序的前提下,兩位工程師提出了不同的解決辦法:
Ⅰ.為服務(wù)器增加2顆CPU,緩解CPU使用率很高的問題;
Ⅱ.為服務(wù)器增加一倍內(nèi)存,緩解內(nèi)存使用率很高的問題。
考慮成本,現(xiàn)階段只能按照一種方案實施。請指出在現(xiàn)有情況下,哪種方案更合理并給出理由。(5分)
A6:
【解題思路】
(1)SQL Server 2008的數(shù)據(jù)恢復(fù)模式有三種:
①簡單恢復(fù)模式,此方法可以最大幅度減少事務(wù)日志的管理開銷,因為恢復(fù)模式不備份事務(wù)日志。但是如果數(shù)據(jù)庫損壞,則簡單恢復(fù)模式將面臨極大的數(shù)據(jù)丟失風(fēng)險。在這種恢復(fù)模式下,數(shù)據(jù)只能恢復(fù)到最新備份狀態(tài)。因此對于用戶數(shù)據(jù)庫,簡單恢復(fù)模式只適用于測試和開發(fā)數(shù)據(jù)庫,或用于主要包含只讀數(shù)據(jù)的數(shù)據(jù)庫。
、谕暾謴(fù)模式,此方法可以完整的記錄所有事務(wù),并將事務(wù)日志記錄保留到對其備份完畢為止。此方法相對簡單恢復(fù)模式來說,更占用時間。
、鄞笕萘咳罩净謴(fù)模式,此方法只對大容量操作進(jìn)行最小記錄,使事務(wù)日志不會被大容量加載操作所填充。
在數(shù)據(jù)導(dǎo)入過程中,所有的業(yè)務(wù)都是暫停的,因此可以采用簡單恢復(fù)模式提高數(shù)據(jù)導(dǎo)入速度。且只在數(shù)據(jù)導(dǎo)入的過程中暫時的修改恢復(fù)模式,因此數(shù)據(jù)并不會丟失。
(2)提高數(shù)據(jù)庫性能的方法一般是從外部環(huán)境、調(diào)整內(nèi)存分配、調(diào)整磁盤I/O、調(diào)整競爭資源等幾方面著手來改變數(shù)據(jù)庫的參數(shù)。SQLServer 2008采用將數(shù)據(jù)緩沖在內(nèi)存的方式,因此在數(shù)據(jù)庫系統(tǒng)運行的過程中會占用一定的內(nèi)存,又因為I/O并不存在問題,說明內(nèi)存尚滿足需求。CPU使用率很高,表明CPU的計算能力不足,應(yīng)該增加CPU的數(shù)量。
【參考答案】
(1)此方法能夠提高數(shù)據(jù)導(dǎo)入速度。
原因:此系統(tǒng)I/O很重,修改恢復(fù)模式后,系統(tǒng)最大限度減少日志開銷,可提高導(dǎo)入速度。由于僅在數(shù)據(jù)導(dǎo)入過程中修改恢復(fù)模式,并無數(shù)據(jù)丟失風(fēng)險。
(2)第一種方案比較合理。
原因:由于SQL Server 2008采用將數(shù)據(jù)緩沖在內(nèi)存的方式,因此內(nèi)存的使用率比較高是正常情況,且現(xiàn)階段I/O并不存在問題,說明內(nèi)存滿足需求。此階段CPU使用率很高,說明CPU計算資源不足,因此增加CPU數(shù)量對解決問題有效。
Q7:
3.設(shè)某超市經(jīng)營管理系統(tǒng)(C/S結(jié)構(gòu))使用SQL Server 2008數(shù)據(jù)庫管理系統(tǒng)。系統(tǒng)上線運行1年后,用戶反映系統(tǒng)運行速度不穩(wěn)定,不定期會出現(xiàn)速度變慢的問題。
數(shù)據(jù)庫管理員在數(shù)據(jù)庫服務(wù)器上采集了一段時間系統(tǒng)運行狀態(tài)數(shù)據(jù),情況如下:
CPU最高使用率:30%
內(nèi)存最高使用率:80%
磁盤IO很低
同時,數(shù)據(jù)庫管理員在客戶端使用ping命令對數(shù)據(jù)庫服務(wù)器進(jìn)行測試,結(jié)果如下
(5分)請根據(jù)以上數(shù)據(jù),判斷最有可能的問題,并給出判斷的理由。
在以上問題解決后,用戶反映每日的定時統(tǒng)計匯總SQL語句仍然速度比較慢。數(shù)據(jù)庫管理員在系統(tǒng)無任何人員使用時運行該語句,同時在數(shù)據(jù)庫服務(wù)器上采集系統(tǒng)運行狀態(tài)數(shù)據(jù),情況如下:
CPU最高使用率:12.5%(CPU配置:2路4核,共8核,關(guān)閉超線程)
內(nèi)存最高使用率:80%(內(nèi)存配置:128GB)
磁盤IO很低(磁盤配置:5塊300GB磁盤,RAID5)
(5分)請分析在進(jìn)行統(tǒng)計匯總時,數(shù)據(jù)庫服務(wù)器最有可能的瓶頸是CPU、內(nèi)存還是磁盤,并給出判斷的理由。
A:
【解題思路】
數(shù)據(jù)庫系統(tǒng)運行需要依賴服務(wù)器、操作系統(tǒng)、存儲、網(wǎng)絡(luò)等多種因素。當(dāng)這些數(shù)據(jù)庫環(huán)境出現(xiàn)瓶頸時就會導(dǎo)致數(shù)據(jù)庫運行變慢,甚至是無法完成正常業(yè)務(wù)。
一般情況下,數(shù)據(jù)庫訪問代價模型由四部分組成:CPU處理數(shù)據(jù)的時間(即CPU代價),磁盤讀取的時間(即I/O代價),查詢的內(nèi)存開銷(即內(nèi)存代價),對于網(wǎng)絡(luò)中的數(shù)據(jù)庫還要加上數(shù)據(jù)在網(wǎng)絡(luò)上傳輸?shù)臅r間(即通信代價)。因此數(shù)據(jù)庫訪問的代價模型是:總代價=CPU代價+I/O代價+內(nèi)存代價+通信的代價。
(1)CPU。當(dāng)數(shù)據(jù)庫操作對CPU性能的要求超過數(shù)據(jù)庫服務(wù)器的CPU性能時,數(shù)據(jù)庫性能就會受到CPU的限制。對于一臺數(shù)據(jù)庫服務(wù)器來說,如果其在業(yè)務(wù)空閑時使用率超過90%,說明服務(wù)器缺乏CPU資源;如果高峰時CPU使用率仍然很低,則說明服務(wù)器CPU資源充足。據(jù)此,可以判斷一個數(shù)據(jù)庫系統(tǒng)CPU的使用情況。解決的方法是為服務(wù)器適當(dāng)增加CPU的數(shù)量或者終止需要許多資源的進(jìn)程。
(2)數(shù)據(jù)庫性能優(yōu)劣的一個重要度量是響應(yīng)時間,而I/O時間是響應(yīng)時間的最大組成部分。因此,可以通過令I(lǐng)/O時間最小化,減少磁盤上的文件競爭帶來的瓶頸等方法來改善數(shù)據(jù)庫系統(tǒng)的性能。
(3)通過調(diào)整相關(guān)參數(shù)控制數(shù)據(jù)庫的內(nèi)存分配,也可以在很大程度上改善數(shù)據(jù)庫系統(tǒng)的性能。
(4)大量的SQL數(shù)據(jù)在網(wǎng)絡(luò)上傳輸會導(dǎo)致網(wǎng)速變慢。網(wǎng)卡、交換機、集線器等網(wǎng)絡(luò)設(shè)備的性能對網(wǎng)絡(luò)的影響很明顯,所以,通過調(diào)整網(wǎng)絡(luò)設(shè)備,也可以在一定程度上提高數(shù)據(jù)庫系統(tǒng)的性能。
【參考答案】
(1)產(chǎn)生掉線的最有可能的原因是網(wǎng)絡(luò)產(chǎn)生問題。因為通過ping命令測試,發(fā)現(xiàn)丟包率達(dá)到10%。而CPU,內(nèi)存、磁盤I/O使用率沒有達(dá)到100%,說明還是有一定的富余,引起網(wǎng)絡(luò)掉線的可能性較小。
(2)數(shù)據(jù)庫服務(wù)器最有可能的瓶頸是內(nèi)存。因為內(nèi)存的使用率在無任何操作的情況下達(dá)到80%,使用率較高。說明內(nèi)存容量不足以完全支持服務(wù)器活動。
對于一臺數(shù)據(jù)庫服務(wù)器來說,如果其在業(yè)務(wù)空閑時使用率超過90%,說明服務(wù)器缺乏CPU資源;如果高峰時CPU使用率仍然很低,則說明服務(wù)器CPU資源充足。據(jù)此,可以判斷一個數(shù)據(jù)庫系統(tǒng)CPU的使用情況。本題中CPU的最高使用率只有12.5%,說明CPU不可能是數(shù)據(jù)庫服務(wù)器的瓶頸。磁盤I/O很低,說明也不可能是服務(wù)器的瓶頸。
【計算機三級數(shù)據(jù)庫分析真題】相關(guān)文章:
公共英語三級真題09-11
三級營銷師考試真題及答案08-21
計算機三級數(shù)據(jù)庫技術(shù)考試試題及答案10-08
職稱計算機考試真題及答案09-25
2017年公共英語三級考試真題及答案06-25
造價工程師案例分析考試真題09-11
2016最新計算機等級考試真題及答案06-01
2016年計算機等級考試真題及答案05-20
2016年計算機VF模擬真題及答案08-28
計算機二級C語言真題及答案07-11