亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

計(jì)算機(jī)三級(jí)數(shù)據(jù)庫分析真題

時(shí)間:2023-01-21 20:11:27 計(jì)算機(jī)等級(jí) 我要投稿
  • 相關(guān)推薦

2016計(jì)算機(jī)三級(jí)數(shù)據(jù)庫分析真題

  2016年上半年計(jì)算機(jī)考試已經(jīng)過去了,yjbys小編第一時(shí)間為大家分享的是本次計(jì)算機(jī)三級(jí)數(shù)據(jù)庫的考試真題,希望對(duì)大家有所幫助!

  Q1:

  設(shè)某全國性的運(yùn)輸企業(yè)建立了大型OLTP系統(tǒng),并在該系統(tǒng)之上建立了數(shù)據(jù)倉庫。OLTP系統(tǒng)和數(shù)據(jù)倉庫中有如下數(shù)據(jù)表:

  運(yùn)輸明細(xì)表(運(yùn)輸單ID,發(fā)送站ID,終到站ID,貨物ID,貨物重量,運(yùn)輸價(jià)格,發(fā)貨日期)

  匯總表1(發(fā)送站ID,終到站ID,貨物ID,發(fā)貨日期,總重,總運(yùn)價(jià))

  匯總表2(發(fā)送站ID,終到地區(qū)ID,貨物ID,發(fā)貨日期,總重,總運(yùn)價(jià))

  匯總表3(發(fā)送站ID,終到站ID,貨物ID,發(fā)貨月份,總重,總運(yùn)價(jià))

  匯總表4(發(fā)送地區(qū)ID,終到地區(qū)ID,貨物類別ID,發(fā)貨日期,總重,總運(yùn)價(jià))

  該企業(yè)管理的貨運(yùn)站約有100個(gè),貨物約有500種共10類,各匯總表都建有主碼,且各表有合理的維護(hù)策略,在每次維護(hù)后數(shù)據(jù)能保持一致。設(shè)有視圖V,該視圖的訪問頻率很高,其查詢結(jié)果模式為(發(fā)送地區(qū)ID,終到站ID,發(fā)貨月份,總重,總運(yùn)價(jià)),該視圖現(xiàn)以匯總表1為計(jì)算數(shù)據(jù)源。經(jīng)監(jiān)控發(fā)現(xiàn),匯總表1的被訪問頻率過高,導(dǎo)致系統(tǒng)整體性能下降,而其它匯總表被訪問頻率較低。在不增加匯總表和索引的情況下,請(qǐng)給出一個(gè)改善系統(tǒng)服務(wù)性能的優(yōu)化方案,并簡要說明理由。

  A1:

  由于匯總表1和視圖的模式訪問頻率都很高,而且視圖的數(shù)據(jù)源來自匯總表1,又因?yàn)槠渌麉R總表的訪問率較低,所以只需要將視圖的數(shù)據(jù)源綁定為匯總表3,因?yàn)閰R總表3也可以滿足視圖的輸出模式。這樣不僅提升了匯總表3的數(shù)據(jù)訪問率,而且降低了匯總表1的數(shù)據(jù)訪問率,系統(tǒng)性能和服務(wù)性能得到了很大的優(yōu)化。又因?yàn)樨浳锛s有500種,共10類,可以再建立一個(gè)視圖綁定數(shù)據(jù)源為匯總表4,這樣就可以充分利用匯總表4的數(shù)據(jù)信息,從而可以進(jìn)一步完善系統(tǒng)性能的優(yōu)化。

  Q2:

  在進(jìn)行某學(xué)校教務(wù)管理系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)時(shí),數(shù)據(jù)庫設(shè)計(jì)人員設(shè)計(jì)了如下幾個(gè)關(guān)系模式:

  系(系號(hào),系名),系號(hào)為主碼

  學(xué)生(學(xué)號(hào),姓名,所在系號(hào)),學(xué)號(hào)為主碼

  課程(課程號(hào),課程名,開課系號(hào)),課程號(hào)為主碼

  選課(學(xué)號(hào),課程號(hào),選課時(shí)間),學(xué)號(hào)和課程號(hào)為主碼(8分)

  開發(fā)人員在將關(guān)系模式實(shí)施到SQL Server 2008的"教務(wù)"數(shù)據(jù)庫時(shí),使用了如下表結(jié)構(gòu)定義語句:

  CREATE TABLE 系 (

  系號(hào) varchar(10) NOT NULL ,

  系名 varchar(100))

  CREATE TABLE 學(xué)生 (

  學(xué)號(hào) varchar(50) NOT NULL ,

  姓名 varchar(50),

  所在系號(hào) varchar(10))

  CREATE TABLE課程 (

  課程號(hào) varchar(50) NOT NULL ,

  課程名 varchar(100),

  開課系號(hào) varchar(10))

  CREATE TABLE 選課 (

  學(xué)號(hào) varchar(50) NOT NULL ,

  課程號(hào) varchar(50) NOT NULL ,

  選課時(shí)間 datetime )

  在執(zhí)行如下查詢語句時(shí)發(fā)現(xiàn)執(zhí)行效率很低:

  SELECT * FROM 選課 JOIN 學(xué)生 ON 學(xué)生.學(xué)號(hào)= 選課.學(xué)號(hào)

  JOIN 系 ON 系.系號(hào) = 學(xué)生.所在系號(hào)

  JOIN 課程 ON 課程.課程號(hào) = 選課.課程號(hào)

  WHERE 系.系號(hào)=′012′

  AND convert(varchar(10),選課時(shí)間,120)>= ′2010-01-01′

  (1)在查找原因時(shí)發(fā)現(xiàn)建表語句有問題。請(qǐng)指出問題并說明該問題是否會(huì)影響此查詢語句的執(zhí)行效率。(4分)

  (2)設(shè)已在"選課"表的"選課時(shí)間"列及"學(xué)生"表的"所在系號(hào)"列上建立了索引。請(qǐng)問這兩個(gè)索引是否能夠提高該查詢語句的執(zhí)行效率?如果不能,請(qǐng)說明原因。(4分)

  A2:

  (1) 【解題思路】

  本題中查詢語句的功能是得到12系全體學(xué)生在2010年1月1日后的選課情況的匯總表。在每個(gè)數(shù)據(jù)表的定義時(shí)都必須嚴(yán)格定義表中的完整性約束條件,包括主鍵的設(shè)置,否則之后會(huì)出現(xiàn)主鍵有相同值的情況,破壞了數(shù)據(jù)的完整性。

  【參考答案】

  建表時(shí)沒有設(shè)置主鍵,也沒有說明外鍵。但不會(huì)影響此查詢語句的執(zhí)行效率

  (2)【解題思路】

  建立索引是加快查詢速度的有效手段,用戶可以根據(jù)應(yīng)用環(huán)境的需要建立一個(gè)或多個(gè)索引,以提供多種存取路徑,加快查找速度。索引就像書的目錄一樣為我們將記錄按規(guī)定的列進(jìn)行了排序,這樣當(dāng)我們要訪問滿足這些列的某些條件的記錄時(shí),索引會(huì)為我們減少查詢數(shù)據(jù)庫中的地址范圍,大大節(jié)省了時(shí)間。所以根據(jù)WHERE條件后的字段對(duì)表建立索引對(duì)于提高查詢效率是有幫助的。

  【參考答案】

  "選課"表的"選課時(shí)間"列上建立了索引,從而能夠提高執(zhí)行效率。經(jīng)常出現(xiàn)在Where子句中的字段,特別是大表的字段,應(yīng)該建立索引。索引的作用就類似于書的目錄,即會(huì)按照章節(jié)的順序排列。因此如果在一本數(shù)百頁的書里面查找某個(gè)章節(jié)位置的時(shí)候,就可以只掃描書的目錄。掃描的范圍縮了n倍,查詢的效率自然就會(huì)提高。另外,在SQLServer內(nèi)存夠用的情況下,索引會(huì)被放到內(nèi)存中,在內(nèi)存中查找自然又會(huì)提高效率,所以必須合理利用索引。

  Q3:

  某商場(chǎng)商品經(jīng)營管理系統(tǒng)使用SQL Server 2008數(shù)據(jù)庫管理系統(tǒng),此系統(tǒng)上線運(yùn)行1年后,業(yè)務(wù)人員使用某統(tǒng)計(jì)功能(此功能每月使用一次)時(shí)發(fā)現(xiàn)速度很慢。該統(tǒng)計(jì)功能主要執(zhí)行的SQL語句如下:

  SELECT 商品號(hào),SUM(銷售數(shù)量*銷售價(jià)格) 銷售額

  FROM 銷售明細(xì)

  GROUP BY 商品號(hào);

  該銷售明細(xì)表的建表語句如下:

  CREATE TABLE 銷售明細(xì)(

  序列號(hào) intIDENTITY(1,1) NOT NULL,

  商品號(hào) intNOT NULL,

  銷售日期 datetime NULL,

  銷售數(shù)量 intNOT NULL,

  銷售價(jià)格 intNOT NULL

  );

  并在銷售明細(xì)表上建有如下索引:

  CREATE index ix_銷售明細(xì)_商品號(hào) on 銷售明細(xì)(商品號(hào));

  某技術(shù)人員提出通過執(zhí)行下述語句以提高此查詢的運(yùn)行效率:

  CREATE VIEW 商品銷售額視圖

  WITH SCHEMABINDING

  AS

  SELECT 商品號(hào),SUM(銷售數(shù)量*銷售價(jià)格) 銷售額,

  COUNT_BIG(*) cnt

  FROM dbo.銷售明細(xì)

  GROUP BY 商品號(hào);

  CREATE UNIQUE CLUSTERED INDEXix_商品銷售額

  ON 商品銷售額視圖(商品號(hào));(10分)

  (1)請(qǐng)分析該技術(shù)人員給出的語句功能以及對(duì)原有查詢語句的性能影響,并給出原因。

  (2)此商場(chǎng)的銷售量很大,每天有大量數(shù)據(jù)插入到銷售明細(xì)表中。請(qǐng)從數(shù)據(jù)庫整體性能角度分析,此技術(shù)人員提出的優(yōu)化方法是否合適,并給出原因。

  A3:

  (1)【解題思路】

  該技術(shù)人員使用了帶有索引的視圖,將所關(guān)心的數(shù)據(jù)(商品號(hào),銷售額,該商品號(hào)在表中出現(xiàn)的次數(shù))從銷售明細(xì)表中提取出來建立視圖,并對(duì)該視圖建立按商品號(hào)排序的聚簇索引,這樣大大減少了在搜索不同商品的銷售額時(shí)調(diào)用的數(shù)據(jù)表的規(guī)模,從而提高了查詢效率。由于表的數(shù)據(jù)規(guī)模很大,建立該視圖后,同一種商品不會(huì)多次出現(xiàn)在表中,而是通過一個(gè)計(jì)數(shù)變量cnt表示,這樣在檢索時(shí)大大減少了檢索規(guī)模。創(chuàng)建索引時(shí),UNIQUE關(guān)鍵字表明此索引的每一個(gè)索引值只對(duì)應(yīng)唯一的數(shù)據(jù)記錄。CLUSTER表示要建立的索引是聚簇索引,所謂聚簇索引是指索引項(xiàng)的順序與表中記錄的物理順序一致的索引組織。

  【參考答案】

  語句功能:建立包含(商品號(hào),銷售額,該商品表中出現(xiàn)次數(shù))的帶索引的視圖,并建立按商品對(duì)應(yīng)銷售額UNIQUE聚簇排序的索引,大大縮小了查詢語句的查詢范圍,提高了查詢效率。原因:視圖中將間接相關(guān)的屬性列(序列號(hào),銷售日期,商品號(hào),銷售數(shù)量,銷售價(jià)格)轉(zhuǎn)換成了目標(biāo)屬性列,減少了搜索空間;同時(shí)建立UNIQUE CLUSTERED索引,使查詢商品號(hào)的數(shù)據(jù)記錄唯一,降低了搜索范圍,提高了搜索效率。

  (2)【解題思路】

  由于視圖是不實(shí)際存儲(chǔ)數(shù)據(jù)的虛表,因此對(duì)視圖的更新最終要轉(zhuǎn)換為對(duì)基本表的更新。而用戶通過視圖對(duì)數(shù)據(jù)進(jìn)行增加、刪除、修改時(shí),有意或無意地對(duì)不屬于視圖范圍內(nèi)的基本表數(shù)據(jù)進(jìn)行操作,會(huì)破壞數(shù)據(jù)的一致性。而且視圖中的數(shù)據(jù)本身就是冗余的,每次對(duì)表進(jìn)行修改時(shí),同時(shí)也要對(duì)相應(yīng)的視圖進(jìn)行修改,這大大增加了系統(tǒng)的負(fù)擔(dān)。

  【參考答案】

  不合適,每天大量的插入操作在修改表的同時(shí)也要對(duì)視圖進(jìn)行修改,增加了系統(tǒng)的負(fù)擔(dān),然而該統(tǒng)計(jì)功能一個(gè)月才用一次,這樣導(dǎo)致系統(tǒng)的利用率也較為低下。

  Q4:

  某教務(wù)管理系統(tǒng)使用SQL Server 2008數(shù)據(jù)庫管理系統(tǒng),數(shù)據(jù)庫軟硬件配置信息如下:

  Ⅰ.數(shù)據(jù)庫運(yùn)行在兩路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補(bǔ)丁;

 、.數(shù)據(jù)庫為SQL Server 2008 Enterprise(32 位),數(shù)據(jù)庫中總數(shù)據(jù)量近130GB。

  近一個(gè)學(xué)期以來,用戶反映系統(tǒng)運(yùn)行緩慢,經(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è)計(jì)、應(yīng)用程序編碼、硬件優(yōu)化、數(shù)據(jù)庫索引、SQL語句、事務(wù)處理幾個(gè)方面入手考慮問題。

  (1) 分析階段:在系統(tǒng)分析階段往往有太多需要關(guān)注的地方,系統(tǒng)各種功能性、可用性、可靠性、安全性需求吸引了我們大部分的注意力,但必須注意的是,性能往往是很重要的非功能性需求,必須根據(jù)系統(tǒng)的特點(diǎn)確定其實(shí)時(shí)性需求、響應(yīng)時(shí)間的需求、硬件的配置等。最好能有各種需求量化的指標(biāo)。

  (2) 設(shè)計(jì)階段:例如數(shù)據(jù)庫邏輯設(shè)計(jì)規(guī)范化;合理的冗余;主鍵的設(shè)計(jì);外鍵的設(shè)計(jì) ;字段的設(shè)計(jì) ;數(shù)據(jù)庫物理存儲(chǔ)和環(huán)境的設(shè)計(jì);數(shù)據(jù)庫的物理存儲(chǔ)、操作系統(tǒng)環(huán)境及網(wǎng)絡(luò)環(huán)境的設(shè)計(jì),皆使得我們的系統(tǒng)在將來能適應(yīng)較多用戶的并發(fā)操作和較大的數(shù)據(jù)處理量。 這里需要注意文件組的作用,適用文件組可以有效的把I/O操作分散到不同的物理硬盤,提高并發(fā)能力。

  (3) 系統(tǒng)設(shè)計(jì):整個(gè)系統(tǒng)的設(shè)計(jì),特別是系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)對(duì)性能具有很大的影響。對(duì)于一般的OLTP系統(tǒng),可以選擇C/S結(jié)構(gòu)、三層的C/S結(jié)構(gòu)等,不同的系統(tǒng)結(jié)構(gòu)其性能的關(guān)鍵也有所不同。系統(tǒng)設(shè)計(jì)階段應(yīng)歸納些業(yè)務(wù)邏輯在數(shù)據(jù)庫編程階段實(shí)現(xiàn),數(shù)據(jù)庫編程包括數(shù)據(jù)庫存儲(chǔ)過程、觸發(fā)器和函數(shù)。用數(shù)據(jù)庫編程實(shí)現(xiàn)業(yè)務(wù)邏輯的好處是減少網(wǎng)絡(luò)流量并能更充分利用數(shù)據(jù)庫的預(yù)編譯和緩存功能;索引設(shè)計(jì)階段可以根據(jù)功能和性能的需求進(jìn)行初步的索引設(shè)計(jì),這里需要根據(jù)預(yù)計(jì)的數(shù)據(jù)量和查詢來設(shè)計(jì)索引,可能與將來實(shí)際使用時(shí)有所區(qū)別。

  (4) 編碼階段:編碼階段首先需要所有程序員具備優(yōu)化意識(shí),也就是在實(shí)現(xiàn)功能的同時(shí)具備考慮優(yōu)化性能的思想。數(shù)據(jù)庫是能進(jìn)行集合運(yùn)算的工具,所謂集合運(yùn)算實(shí)際是批量運(yùn)算,即是盡量減少在客戶端進(jìn)行大數(shù)據(jù)量的循環(huán)操作,而用SQL語句或者存儲(chǔ)過程代替。這個(gè)階段主要是注意在SQL語句等方面的優(yōu)化,如:盡量少做重復(fù)的工作,用SELECT后跟需要的字段代替SELECT*語句,注意事務(wù)和鎖 ,注意臨時(shí)表和表變量的用法,慎用游標(biāo)和觸發(fā)器,盡量使用索引等。

  (5) 硬件優(yōu)化:RAID (獨(dú)立磁盤冗余陣列)是由多個(gè)磁盤驅(qū)動(dòng)器(一個(gè)陣列)組成的磁盤系統(tǒng)。通過將磁盤陣列當(dāng)作一個(gè)磁盤來對(duì)待,基于硬件的RAID允許用戶管理多個(gè)磁盤。使用基于硬件的RAID與基于操作系統(tǒng)的RAID相比較可知,基于硬件的RAID能夠提供更佳的性能,如果使用基于操作系統(tǒng)的RAID,那么它將占據(jù)其他系統(tǒng)需求的CPU周期,通過使用基于硬件的RAID,用戶在不關(guān)閉系統(tǒng)的情況下能夠替換發(fā)生故障的驅(qū)動(dòng)器。利用數(shù)據(jù)庫分區(qū)技術(shù),可均勻地把數(shù)據(jù)分布在系統(tǒng)的磁盤中,平衡I/O 訪問,避免I/O 瓶頸等。

  (6) 事務(wù)處理調(diào)優(yōu):數(shù)據(jù)庫的日常運(yùn)行過程中,可能面臨多個(gè)用戶同時(shí)對(duì)數(shù)據(jù)庫的并發(fā)操作而帶來的數(shù)據(jù)不一 致的問題,如:丟失更新、臟讀和不可重復(fù)讀等。并發(fā)控制的主要方法是封鎖,鎖的含義即是在一段時(shí)間內(nèi)禁止用戶做某些操作以避免產(chǎn)生數(shù)據(jù)不一致。對(duì)于事務(wù)性能的調(diào)優(yōu),要考慮到事務(wù)使用的鎖的個(gè)數(shù)(在所有其他條件相同的情況下,使用的鎖個(gè)數(shù)越少,性能越好)、鎖的類型 (讀鎖對(duì)性能更有利)以及事務(wù)持有鎖的時(shí)間長短(持有時(shí)間越短,性能越好)等情形。

  【參考答案】

  (1)表結(jié)構(gòu)優(yōu)化:重新優(yōu)化數(shù)據(jù)庫設(shè)計(jì)結(jié)構(gòu),數(shù)據(jù)庫邏輯設(shè)計(jì)的規(guī)范化;設(shè)計(jì)主鍵和外鍵;設(shè)計(jì)合適大小的字段。

  (2)硬件優(yōu)化:購買一塊同樣大小的硬盤,將硬盤做成RAID5,用以提高數(shù)據(jù)庫相應(yīng)速度;增加服務(wù)器CPU個(gè)數(shù);擴(kuò)大服務(wù)器的內(nèi)存。

  (3)索引優(yōu)化:采用對(duì)經(jīng)常作為條件查詢的列設(shè)計(jì)索引,查詢經(jīng)常用到的列上建立非聚簇索引,在頻繁進(jìn)行范圍查詢、排序、分組的列上建立聚簇索引,對(duì)于有頻繁進(jìn)行刪除、插入操作的表不要建立過多的索引。

  (4)采用視圖:合理使用視圖和分區(qū)視圖,在需要更新和刪除操作不多、查詢操作頻繁的表上建立索引視圖。

  (5)SQL語句優(yōu)化:擇運(yùn)算應(yīng)盡可能先做,并在對(duì)同一個(gè)表進(jìn)行多個(gè)選擇運(yùn)算時(shí),選擇影響較大的語 句放在前面;較弱的選擇條件寫在后面,這樣就可以先根據(jù)較嚴(yán)格的條件得出數(shù)據(jù)較小的信息,再在這些信息中根據(jù)后面較弱的條件得到滿足條件的信息;應(yīng)避免使用相關(guān)子查詢。把子查詢轉(zhuǎn)換成聯(lián)結(jié)來實(shí)現(xiàn);字段提取按照"需多少,提多少"的原則,避免"SELECT*"。"SELECT *"需 要數(shù)據(jù)庫返回相應(yīng)表的所有列信息,這對(duì)于一個(gè)列較多的表無疑是一項(xiàng)費(fèi)時(shí)的操作,采用存儲(chǔ)過程,使用存儲(chǔ)過程提高數(shù)據(jù)處理速度。

  Q5:

  某采購中心采購了一套商品批發(fā)查詢管理系統(tǒng),此系統(tǒng)采用SQLServer 2008數(shù)據(jù)庫管理系統(tǒng),該系統(tǒng)需要經(jīng)常處理百萬級(jí)以上的數(shù)據(jù)查詢。同時(shí)該系統(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)過工程師檢查測(cè)試后,數(shù)據(jù)庫系統(tǒng)本身及網(wǎng)絡(luò)傳輸過程中存在著一些問題,請(qǐng)給出針對(duì)數(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)化的問題,請(qǐng)從第三方開發(fā)人員角度給出一些優(yōu)化方案。

  A5:

  【解題思路】

  從數(shù)據(jù)庫本身和網(wǎng)絡(luò)傳輸?shù)慕嵌瘸霭l(fā),數(shù)據(jù)庫性能低下的因素一般有:I/O吞吐量小,形成了瓶頸效應(yīng);沒有創(chuàng)建計(jì)算列導(dǎo)致查詢不優(yōu)化;SQLServer數(shù)據(jù)庫內(nèi)存不足;網(wǎng)絡(luò)速度慢;查詢出的數(shù)據(jù)量過大(可以采用多次查詢或其他的方法降低數(shù)據(jù)量)以及鎖或者死鎖(這也是查詢慢最常見的問題,是程序設(shè)計(jì)的缺陷)。

  從SQL查詢語句角度來考慮優(yōu)化響應(yīng)時(shí)間,應(yīng)該從查詢條件、臨時(shí)表、游標(biāo)、返回?cái)?shù)據(jù)量、大事務(wù)操作等方面進(jìn)行調(diào)優(yōu)。

  【參考答案】

  (1)

 、侔褦(shù)據(jù)、日志、索引放到不同的I/O設(shè)備上,增加讀取速度,數(shù)據(jù)量(尺寸)越大,提高I/O越重要。

 、诳v向、橫向分割表,減少表的尺寸。

 、凵(jí)硬件,擴(kuò)大服務(wù)器的內(nèi)存,Windows 2000和SQL server 2000能支持4-8G的內(nèi)存。配置虛擬內(nèi)存,虛擬內(nèi)存大小應(yīng)基于計(jì)算機(jī)上并發(fā)運(yùn)行的服務(wù)進(jìn)行配置。增加服務(wù)器 CPU個(gè)數(shù)。

 、芊植际椒謪^(qū)視圖可用于實(shí)現(xiàn)數(shù)據(jù)庫服務(wù)器聯(lián)合體。聯(lián)合體是一組分開管理的服務(wù)器,但它們相互協(xié)作分擔(dān)系統(tǒng)的處理負(fù)荷。這種通過分區(qū)數(shù)據(jù)形成數(shù)據(jù)庫服務(wù)器聯(lián)合體的機(jī)制能夠擴(kuò)大一組服務(wù)器,以支持大型的多層 Web 站點(diǎn)的處理需要。

  ⑤重建索引 DBCC REINDEX ,DBCCINDEXDEFRAG,收縮數(shù)據(jù)和日志 DBCC SHRINKDB,DBCCSHRINKFILE. 設(shè)置自動(dòng)收縮日志.對(duì)于大的數(shù)據(jù)庫不要設(shè)置數(shù)據(jù)庫自動(dòng)增長,它會(huì)降低服務(wù)器的性能。

 、迌(yōu)化鎖結(jié)構(gòu)。

  (2)

  ①對(duì)查詢進(jìn)行優(yōu)化,應(yīng)盡量避免全表掃描,首先應(yīng)考慮在where 及 order by 涉及的列上建立索引。

 、趹(yīng)盡量避免在 where 子句中使用!=或<>操作符,否則將引擎放棄使用索引而進(jìn)行全表掃描。

 、廴魏蔚胤蕉疾灰褂 select * from 進(jìn)行全表掃描,用具體的字段列表代替"*",不要返回冗余字段

 、鼙苊忸l繁創(chuàng)建和刪除臨時(shí)表,以減少系統(tǒng)表資源的消耗。

  ⑤盡量避免使用游標(biāo),因?yàn)橛螛?biāo)的效率較差,如果游標(biāo)操作的數(shù)據(jù)超過1萬行,那么就應(yīng)該考慮改寫。

  ⑥盡量避免大事務(wù)操作,提高系統(tǒng)并發(fā)能力。

  Q6:

  某網(wǎng)上商城因?yàn)闃I(yè)務(wù)發(fā)展,原有的系統(tǒng)不能很好的滿足需要,因此采用了一套新的經(jīng)營管理系統(tǒng),此系統(tǒng)使用SQLServer 2008數(shù)據(jù)庫管理系統(tǒng)。此系統(tǒng)上線運(yùn)行前,需將商場(chǎ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小時(shí)內(nèi)完成。

  (1)在原有數(shù)據(jù)導(dǎo)入新系統(tǒng)的過程中,實(shí)施人員發(fā)現(xiàn)原有數(shù)據(jù)量很大,導(dǎo)入數(shù)據(jù)需要四小時(shí),業(yè)務(wù)無法接受。經(jīng)分析某工程師認(rèn)為,數(shù)據(jù)導(dǎo)入過程中的數(shù)據(jù)庫I/O很高,但導(dǎo)入數(shù)據(jù)的程序本身對(duì)系統(tǒng)資源占用率很低。該工程師建議將數(shù)據(jù)導(dǎo)入過程中的數(shù)據(jù)恢復(fù)模式從"完整"模式改為"簡單"模式以提高數(shù)據(jù)導(dǎo)入速度;而另一位工程師則認(rèn)為此方法未必能提高數(shù)據(jù)導(dǎo)入速度,而且還可能導(dǎo)致數(shù)據(jù)丟失,不建議使用此方法。

  請(qǐng)分析此方法是否能夠提高數(shù)據(jù)導(dǎo)入速度并給出理由,同時(shí)分析此操作的數(shù)據(jù)丟失風(fēng)險(xiǎn)。(5分)

  (2)在成功導(dǎo)入歷史數(shù)據(jù)后,此系統(tǒng)順利上線運(yùn)行。在上線運(yùn)行的第一周,發(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ùn)行速度。在不修改應(yīng)用程序的前提下,兩位工程師提出了不同的解決辦法:

 、.為服務(wù)器增加2顆CPU,緩解CPU使用率很高的問題;

 、.為服務(wù)器增加一倍內(nèi)存,緩解內(nèi)存使用率很高的問題。

  考慮成本,現(xiàn)階段只能按照一種方案實(shí)施。請(qǐng)指出在現(xiàn)有情況下,哪種方案更合理并給出理由。(5分)

  A6:

  【解題思路】

  (1)SQL Server 2008的數(shù)據(jù)恢復(fù)模式有三種:

 、俸唵位謴(fù)模式,此方法可以最大幅度減少事務(wù)日志的管理開銷,因?yàn)榛謴?fù)模式不備份事務(wù)日志。但是如果數(shù)據(jù)庫損壞,則簡單恢復(fù)模式將面臨極大的數(shù)據(jù)丟失風(fēng)險(xiǎn)。在這種恢復(fù)模式下,數(shù)據(jù)只能恢復(fù)到最新備份狀態(tài)。因此對(duì)于用戶數(shù)據(jù)庫,簡單恢復(fù)模式只適用于測(cè)試和開發(fā)數(shù)據(jù)庫,或用于主要包含只讀數(shù)據(jù)的數(shù)據(jù)庫。

  ②完整恢復(fù)模式,此方法可以完整的記錄所有事務(wù),并將事務(wù)日志記錄保留到對(duì)其備份完畢為止。此方法相對(duì)簡單恢復(fù)模式來說,更占用時(shí)間。

  ③大容量日志恢復(fù)模式,此方法只對(duì)大容量操作進(jìn)行最小記錄,使事務(wù)日志不會(huì)被大容量加載操作所填充。

  在數(shù)據(jù)導(dǎo)入過程中,所有的業(yè)務(wù)都是暫停的,因此可以采用簡單恢復(fù)模式提高數(shù)據(jù)導(dǎo)入速度。且只在數(shù)據(jù)導(dǎo)入的過程中暫時(shí)的修改恢復(fù)模式,因此數(shù)據(jù)并不會(huì)丟失。

  (2)提高數(shù)據(jù)庫性能的方法一般是從外部環(huán)境、調(diào)整內(nèi)存分配、調(diào)整磁盤I/O、調(diào)整競(jìng)爭資源等幾方面著手來改變數(shù)據(jù)庫的參數(shù)。SQLServer 2008采用將數(shù)據(jù)緩沖在內(nèi)存的方式,因此在數(shù)據(jù)庫系統(tǒng)運(yùn)行的過程中會(huì)占用一定的內(nèi)存,又因?yàn)镮/O并不存在問題,說明內(nèi)存尚滿足需求。CPU使用率很高,表明CPU的計(jì)算能力不足,應(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)險(xiǎn)。

  (2)第一種方案比較合理。

  原因:由于SQL Server 2008采用將數(shù)據(jù)緩沖在內(nèi)存的方式,因此內(nèi)存的使用率比較高是正常情況,且現(xiàn)階段I/O并不存在問題,說明內(nèi)存滿足需求。此階段CPU使用率很高,說明CPU計(jì)算資源不足,因此增加CPU數(shù)量對(duì)解決問題有效。

  Q7:

  3.設(shè)某超市經(jīng)營管理系統(tǒng)(C/S結(jié)構(gòu))使用SQL Server 2008數(shù)據(jù)庫管理系統(tǒng)。系統(tǒng)上線運(yùn)行1年后,用戶反映系統(tǒng)運(yùn)行速度不穩(wěn)定,不定期會(huì)出現(xiàn)速度變慢的問題。

  數(shù)據(jù)庫管理員在數(shù)據(jù)庫服務(wù)器上采集了一段時(shí)間系統(tǒng)運(yùn)行狀態(tài)數(shù)據(jù),情況如下:

  CPU最高使用率:30%

  內(nèi)存最高使用率:80%

  磁盤IO很低

  同時(shí),數(shù)據(jù)庫管理員在客戶端使用ping命令對(duì)數(shù)據(jù)庫服務(wù)器進(jìn)行測(cè)試,結(jié)果如下

  (5分)請(qǐng)根據(jù)以上數(shù)據(jù),判斷最有可能的問題,并給出判斷的理由。

  在以上問題解決后,用戶反映每日的定時(shí)統(tǒng)計(jì)匯總SQL語句仍然速度比較慢。數(shù)據(jù)庫管理員在系統(tǒng)無任何人員使用時(shí)運(yùn)行該語句,同時(shí)在數(shù)據(jù)庫服務(wù)器上采集系統(tǒng)運(yùn)行狀態(tài)數(shù)據(jù),情況如下:

  CPU最高使用率:12.5%(CPU配置:2路4核,共8核,關(guān)閉超線程)

  內(nèi)存最高使用率:80%(內(nèi)存配置:128GB)

  磁盤IO很低(磁盤配置:5塊300GB磁盤,RAID5)

  (5分)請(qǐng)分析在進(jìn)行統(tǒng)計(jì)匯總時(shí),數(shù)據(jù)庫服務(wù)器最有可能的瓶頸是CPU、內(nèi)存還是磁盤,并給出判斷的理由。

  A:

  【解題思路】

  數(shù)據(jù)庫系統(tǒng)運(yùn)行需要依賴服務(wù)器、操作系統(tǒng)、存儲(chǔ)、網(wǎng)絡(luò)等多種因素。當(dāng)這些數(shù)據(jù)庫環(huán)境出現(xiàn)瓶頸時(shí)就會(huì)導(dǎo)致數(shù)據(jù)庫運(yùn)行變慢,甚至是無法完成正常業(yè)務(wù)。

  一般情況下,數(shù)據(jù)庫訪問代價(jià)模型由四部分組成:CPU處理數(shù)據(jù)的時(shí)間(即CPU代價(jià)),磁盤讀取的時(shí)間(即I/O代價(jià)),查詢的內(nèi)存開銷(即內(nèi)存代價(jià)),對(duì)于網(wǎng)絡(luò)中的數(shù)據(jù)庫還要加上數(shù)據(jù)在網(wǎng)絡(luò)上傳輸?shù)臅r(shí)間(即通信代價(jià))。因此數(shù)據(jù)庫訪問的代價(jià)模型是:總代價(jià)=CPU代價(jià)+I/O代價(jià)+內(nèi)存代價(jià)+通信的代價(jià)。

  (1)CPU。當(dāng)數(shù)據(jù)庫操作對(duì)CPU性能的要求超過數(shù)據(jù)庫服務(wù)器的CPU性能時(shí),數(shù)據(jù)庫性能就會(huì)受到CPU的限制。對(duì)于一臺(tái)數(shù)據(jù)庫服務(wù)器來說,如果其在業(yè)務(wù)空閑時(shí)使用率超過90%,說明服務(wù)器缺乏CPU資源;如果高峰時(shí)CPU使用率仍然很低,則說明服務(wù)器CPU資源充足。據(jù)此,可以判斷一個(gè)數(shù)據(jù)庫系統(tǒng)CPU的使用情況。解決的方法是為服務(wù)器適當(dāng)增加CPU的數(shù)量或者終止需要許多資源的進(jìn)程。

  (2)數(shù)據(jù)庫性能優(yōu)劣的一個(gè)重要度量是響應(yīng)時(shí)間,而I/O時(shí)間是響應(yīng)時(shí)間的最大組成部分。因此,可以通過令I(lǐng)/O時(shí)間最小化,減少磁盤上的文件競(jìng)爭帶來的瓶頸等方法來改善數(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ò)上傳輸會(huì)導(dǎo)致網(wǎng)速變慢。網(wǎng)卡、交換機(jī)、集線器等網(wǎng)絡(luò)設(shè)備的性能對(duì)網(wǎng)絡(luò)的影響很明顯,所以,通過調(diào)整網(wǎng)絡(luò)設(shè)備,也可以在一定程度上提高數(shù)據(jù)庫系統(tǒng)的性能。

  【參考答案】

  (1)產(chǎn)生掉線的最有可能的原因是網(wǎng)絡(luò)產(chǎn)生問題。因?yàn)橥ㄟ^ping命令測(cè)試,發(fā)現(xiàn)丟包率達(dá)到10%。而CPU,內(nèi)存、磁盤I/O使用率沒有達(dá)到100%,說明還是有一定的富余,引起網(wǎng)絡(luò)掉線的可能性較小。

  (2)數(shù)據(jù)庫服務(wù)器最有可能的瓶頸是內(nèi)存。因?yàn)閮?nèi)存的使用率在無任何操作的情況下達(dá)到80%,使用率較高。說明內(nèi)存容量不足以完全支持服務(wù)器活動(dòng)。

  對(duì)于一臺(tái)數(shù)據(jù)庫服務(wù)器來說,如果其在業(yè)務(wù)空閑時(shí)使用率超過90%,說明服務(wù)器缺乏CPU資源;如果高峰時(shí)CPU使用率仍然很低,則說明服務(wù)器CPU資源充足。據(jù)此,可以判斷一個(gè)數(shù)據(jù)庫系統(tǒng)CPU的使用情況。本題中CPU的最高使用率只有12.5%,說明CPU不可能是數(shù)據(jù)庫服務(wù)器的瓶頸。磁盤I/O很低,說明也不可能是服務(wù)器的瓶頸。

【計(jì)算機(jī)三級(jí)數(shù)據(jù)庫分析真題】相關(guān)文章:

小升初英語真題分析08-10

全國計(jì)算機(jī)三級(jí)PC技術(shù)筆試真題09-04

公共英語三級(jí)真題06-19

2016注冊(cè)測(cè)繪師《案例分析》真題分析05-26

三級(jí)營銷師考試真題及答案08-12

關(guān)于考研英語真題分析及復(fù)習(xí)的攻略08-10

企業(yè)培訓(xùn)師一二三級(jí)真題選擇題及其答案08-12

三級(jí)營銷師考試真題及答案201608-24

三級(jí)營銷師考試真題(技能操作)08-13