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