數(shù)據(jù)庫面試題_第1頁
數(shù)據(jù)庫面試題_第2頁
數(shù)據(jù)庫面試題_第3頁
數(shù)據(jù)庫面試題_第4頁
數(shù)據(jù)庫面試題_第5頁
已閱讀5頁,還剩258頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、數(shù)據(jù)庫筆試題(含參考答案)現(xiàn)在有個表:A(id ,name,regdate)B(id,groupid) C(id,name2)寫出下面的SQL語句1.統(tǒng)計A表中每個月注冊用戶數(shù)2.統(tǒng)計A表中有姓名相同的用戶數(shù)3.如果表A中有姓名相同的用戶,把相同的查出,寫入表C中4.A中ID有多個相同的數(shù)據(jù),A中姓名相同的ID只保留注冊時間最大的數(shù)據(jù)大家?guī)蛶兔?寫一下吧1select count(*),to_char(regdate,yyyymm) from A group by to_char(regdate,yyyymm);2select count(*) from (select name from A

2、 group by name having count(*) 1);3 insert into C(name2) select name from A group by name having count(*) 1;4delete from A E where e.regdate select to_date(2007/02/12,yyyy/mm/dd) from dual;TO_DATE(2007/02/12,YYYY/MM/-2007-2-12十個經(jīng)典的數(shù)據(jù)庫面試問題1.磁盤柜上有14塊73G的磁盤, 數(shù)據(jù)庫為200G 大小包括日志文件,如何設置磁盤(要說明這14磁盤是怎么用的)?2.有兩

3、服務器群集,分別為node1和node2 現(xiàn)在要打win200系統(tǒng)補丁,打完后,要重新啟動,如何打補丁,不能影響用戶使用(要用群集的術語詳細說明)。3.有一個A 數(shù)據(jù)庫,分別復制到B和C B 要求 每次數(shù)據(jù)更新 也同時更新,C 每天更新一次就行,如何制定復制策略!4.有一個order 表,有90個字段,20個索引,15個復合索引,其中有3個索引字段超過10個,如何進行優(yōu)化5.有一個數(shù)據(jù)庫200G大小,每天增加50M 允許用戶隨時訪問,制定備份策略(詳細說明)。6.管理50臺數(shù)據(jù)庫,日常工作是檢查數(shù)據(jù)庫作業(yè)是否完成,你該如何完成這項檢查工作?7.自定義函數(shù)和存儲過程的區(qū)別是什么,什么情況下只能用

4、自定義函數(shù),什么情況下只能用存儲過程8.SQL 2005 的新特性是什么 ? 與oracle 有什么區(qū)別?9.DBA 的品質(zhì)應該有哪些,你有哪些, 有什么欠缺的?10。如果想配置SQL Mail 應該在服務器安裝哪些軟件!數(shù)據(jù)庫面試問題答案1.磁盤柜上有14塊73G的磁盤, 數(shù)據(jù)庫為200G 大小包括日志文件,如何設置磁盤(要說明這14磁盤是怎么用的)?這個問題應該是考察硬件知識和數(shù)據(jù)庫物理部署。首先需要知道這些磁盤是否要用于存放數(shù)據(jù)庫備份文件和數(shù)據(jù)庫性能(讀/寫)要求。來決定raid的級別。1)、如果偏重于性能考慮,而且不用存放數(shù)據(jù)庫備份文件的話,考慮使用raid0+1,這樣可使用的磁盤容量

5、為:14*73*50%=511G。2)、如果讀/寫性能要求不高,而且還比較摳門的話,可以考慮raid5,這樣可使用的磁盤容量為:13*73=949G。至于如何使用應該是說數(shù)據(jù)庫物理文件的部署。注意說出將tempdb,data file,log file分開存放以減少I/O競爭即可。其實現(xiàn)在的條帶化磁盤一般都會自動將文件分存,人為的分布已經(jīng)越來越不重要了。2.有兩服務器群集,分別為node1和node2 現(xiàn)在要打win200系統(tǒng)補丁,打完后,要重新啟動,如何打補丁,不能影響用戶使用(要用群集的術語詳細說明)。這個具體操作有點忘了。大致是:首先看哪個節(jié)點正在使用,通過節(jié)點IP(私有)訪問另一個空閑

6、節(jié)點,為其打上補丁,然后在群集管理器中停止該節(jié)點(也可以用命令行方式),重新啟動。等到啟動完畢,將切換使用節(jié)點,為另一個節(jié)點打補丁。然后重新啟動。3.有一個A 數(shù)據(jù)庫,分別復制到B和C B 要求 每次數(shù)據(jù)更新 也同時更新,C 每天更新一次就行,如何制定復制策略!這個應該考察的是復制知識。a-b1)、如果使用SQL Server復制功能,那么讓a-b使用事務性復制方式(同步復制)。2)、如果表不多,也可以自己寫觸發(fā)器,利用linkserver+distribute transaction。a-c1)、如果使用SQL Server復制功能,那么讓a-b使用快照復制方式,在某一時間點進行一次性復制。

7、2)、也可以自己寫bat,將a備份后,通過ftp傳輸備份介質(zhì),恢復c。(比較麻煩,不推薦)4.有一個order 表,有90個字段,20個索引,15個復合索引,其中有3個索引字段超過10個,如何進行優(yōu)化這個問題問的比較沒水平。你不詳細說明這個表的使用方式(讀寫類的,還是幾乎是靜態(tài)表),就問人家怎么優(yōu)化?!還不如問問索引的分布訪問原理更好??吹贸鏊拖胱屇阏f:那三個索引超過10個,B樹遍例效率很低,適當減少字段數(shù)目。如果是SQL2005,可以將選擇性不好的字段放在“索引附加字段”中,以保證索引覆蓋。而且SQL Server由于有鎖升級的毛病,可以考慮拆開表。5.有一個數(shù)據(jù)庫200G大小,每天增加5

8、0M 允許用戶隨時訪問,制定備份策略(詳細說明)。這種情況可以采用增量備份方式。每周日做一次全備份,周一到周六作增量備份(由于數(shù)據(jù)量較少,可以考慮每30分鐘增量備份一次)。這樣可以盡量減少性能消耗,而且如果transaction log丟失的情況下,可以保證最多丟失30分鐘數(shù)據(jù)。6.管理50臺數(shù)據(jù)庫,日常工作是檢查數(shù)據(jù)庫作業(yè)是否完成,你該如何完成這項檢查工作?這個比較簡單。在每臺機器上建立linkserver,然后在DBA管理服務器上做個分布式視圖,每次查詢該視圖,各個機器上的作業(yè)情況一目了然。分布式視圖寫法:create view vw_jobasselect 機器一 as MName,*

9、from linkserver1.sysjobactivityunion allselect 機器二 as MName,* from linkserver2.sysjobactivityunion allselect 機器三 as MName,* from linkserver3.sysjobactivity。7.自定義函數(shù)和存儲過程的區(qū)別是什么,什么情況下只能用自定義函數(shù),什么情況下只能用存儲過程這個應該是考察存儲過程編寫經(jīng)驗。一般自定義函數(shù)主要用于其他sql中的調(diào)用,如:select yourfunc(.) from table這種情況下,一般只能通過函數(shù)實現(xiàn)。存儲過程的功能要遠遠強于函數(shù)

10、,例如動態(tài)執(zhí)行sql(sp_executesql)的使用和一些特殊的功能,自定義函數(shù)中是不支持的,只能用存儲過程實現(xiàn)。8.SQL 2005 的新特性是什么 ? 與oracle 有什么區(qū)別?SQL 2005 的新特性一般都是和Oracle學的。下面是當時被leimin逼著寫的,你可以做個參考:一、數(shù)據(jù)庫設計方面1、字段類型。varchar(max)nvarchar(max)類型的引入大大的提高了編程的效率,可以使用字符串函數(shù)對CLOB類型進行操作,這是一個亮點。但是這就引發(fā)了對varchar和char效率討論的老問題。到底如何分配varchar的數(shù)據(jù),是否會出現(xiàn)大規(guī)模的碎片?是否碎片會引發(fā)效率問

11、題?這都是需要進一步探討的東西。varbinary(max)代替image也讓SQL Server的字段類型更加簡潔統(tǒng)一。XML字段類型更好的解決了XML數(shù)據(jù)的操作。XQuery確實不錯,但是個人對其沒好感。(CSDN的開發(fā)者應該是相當?shù)氖炝耍。?、外鍵的級聯(lián)更能擴展可能大部分的同行在設計OLTP系統(tǒng)的時候都不愿意建立外鍵,都是通過程序來控制父子數(shù)據(jù)的完整性。但是再開發(fā)調(diào)試階段和OLAP環(huán)境中,外鍵是可以建立的。新版本中加入了SET NULL 和 SET DEFAULT 屬性,能夠提供能好的級聯(lián)設置。3、索引附加字段這是一個不錯的新特性。雖然索引的附加字段沒有索引鍵值效率高,但是相對映射到數(shù)據(jù)

12、表中效率還是提高了很多。我做過試驗,在我的實驗環(huán)境中會比映射到表中提高30%左右的效率。4、計算字段的持久化原來的計算字段其實和虛擬字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了計算字段的持久化,這就提高了查詢的性能,但是會加重insert和update的負擔。OLTP慎用。OLAP可以大規(guī)模使用。5、分區(qū)表分區(qū)表是個亮點!從分區(qū)表也能看出微軟要做大作強SQL Server的信心。資料很多,這里不詳細說。但是重點了解的是:現(xiàn)在的SQL Server2005的表,都是默認為分區(qū)表的。因為它要支持滑動窗口的這個特性。這種特性對歷史數(shù)據(jù)和實時數(shù)據(jù)的處理是很有幫助的。但是需

13、要注意的一點,也是我使用過程中發(fā)現(xiàn)的一個問題。在建立function-schema-table后,如果在現(xiàn)有的分區(qū)表上建立沒有顯式聲明的聚集索引時,分區(qū)表會自動變?yōu)榉欠謪^(qū)表。這一點很讓我納悶。如果你覺得我的非分區(qū)索引無法對起子分區(qū),你可以提醒我一下呀!沒有任何的提醒,直接就變成了非分區(qū)表。不知道這算不算一個bug。大家也可以試試。分區(qū)表效率問題肯定是大家關心的問題。在我的試驗中,如果按照分區(qū)字段進行的查詢(過濾)效率會高于未分區(qū)表的相同語句。但是如果按照非分區(qū)字段進行查詢,效率會低于未分區(qū)表的相同語句。但是隨著數(shù)據(jù)量的增大,這種成本差距會逐漸減小,趨于相等。(500萬數(shù)量級只相差10%左右)6

14、、CLR類型微軟對CLR作了大篇幅的宣傳,這是因為數(shù)據(jù)庫產(chǎn)品終于融入.net體系中。最開始我們也是狂喜,感覺對象數(shù)據(jù)庫的一些概念可以實現(xiàn)了。但是作了些試驗,發(fā)現(xiàn)使用CLR的存儲過程或函數(shù)在達到一定的閥值的時候,系統(tǒng)性能會呈指數(shù)級下滑!這是非常危險的!只使用幾個可能沒有問題,當一旦大規(guī)模使用會造成嚴重的系統(tǒng)性能問題!其實可以做一下類比,Oracle等數(shù)據(jù)庫產(chǎn)品老早就支持了java編程,而且提供了java池參數(shù)作為用戶配置接口。但是現(xiàn)在有哪些系統(tǒng)大批使用了java存儲過程?!連Oracle自己的應用都不用為什么?!還不是性能有問題!否則面向?qū)ο蟮臄?shù)據(jù)庫早就實現(xiàn)了!建議使用CLR的地方一般是和應用的

15、復雜程度或操作系統(tǒng)環(huán)境有很高的耦合度的場景。如你想構建復雜的算法,并且用到了大量的指針和高級數(shù)據(jù)模型?;蛘呤且筒僮飨到y(tǒng)進行Socket通訊的場景。否則建議慎重!7、索引視圖索引視圖2k就有。但是2005對其效率作了一些改進但是schema.viewname的作用域真是太限制了它的應用面。還有一大堆的環(huán)境參數(shù)和種種限制都讓人對它有點卻步。8、語句和事務快照語句級快照和事務級快照終于為SQL Server的并發(fā)性能帶來了突破。個人感覺語句級快照大家應該應用。事務級快照,如果是高并發(fā)系統(tǒng)還要慎用。如果一個用戶總是被提示修改不成功要求重試時,會殺人的!9、數(shù)據(jù)庫快照原理很簡單,對要求長時間計算某一時

16、間點的報表生成和防用戶操作錯誤很有幫助。但是比起Oracle10g的閃回技術還是細粒度不夠??上?!10、MirrorMirror可以算是SQL Server的Data guard了。但是能不能被大伙用起來就不知道了。二、開發(fā)方面1、Ranking函數(shù)集其中最有名的應該是row_number了。這個終于解決了用臨時表生成序列號的歷史,而且SQL Server2005的row_number比Oracle的更先進。因為它把Order by集成到了一起,不用像Oracle那樣還要用子查詢進行封裝。但是大家注意一點。如下面的例子:select ROW_NUMBER() OVER (order by aa

17、)from tblorder by bb會先執(zhí)行aa的排序,然后再進行bb的排序。可能有的朋友會抱怨集成的order by,其實如果使用ranking函數(shù),Order by是少不了的。如果擔心Order by會影響效率,可以為order by的字段建立聚集索引,查詢計劃會忽略order by 操作(因為本來就是排序的嘛)。2、top可以動態(tài)傳入?yún)?shù),省卻了動態(tài)SQL的拼寫。3、Apply對遞歸類的樹遍歷很有幫助。4、CTE個人感覺這個真是太棒了!閱讀清晰,非常有時代感。5、try/catch代替了原來VB式的錯誤判斷。比Oracle高級不少。6、pivot/unpivot個人感覺沒有case直

18、觀。而且默認的第三字段(還可能更多)作為group by字段很容易造成新手的錯誤。三、DBA管理方面1、數(shù)據(jù)庫級觸發(fā)器記得在最開始使用2k的時候就要用到這個功能,可惜2k沒有,現(xiàn)在有了作解決方案的朋友會很高興吧。2、多加的系統(tǒng)視圖和實時系統(tǒng)信息這些東西對DBA挑優(yōu)非常有幫助,但是感覺粒度還是不太細。3、優(yōu)化器的改進一直以來個人感覺SQL Server的優(yōu)化器要比Oracle的聰明。SQL2005的更是比2k聰明了不少。(有次作試驗發(fā)現(xiàn)有的語句在200萬級時還比50萬級的相同語句要快show_text的一些提示沒有找到解釋。一直在奇怪。)論壇例子:4、profiler的新事件觀察這一點很好的加強

19、了profiler的功能。但是提到profiler提醒大家注意一點。windows2003要安裝sp1補丁才能啟動profiler。否則點擊沒有反應。5、sqlcmd習慣敲命令行的朋友可能會爽一些。但是功能有限。適合機器跑不動SQL Server Management Studio的朋友使用。四、遺憾1、登陸的控制始終遺憾SQL Server的登陸無法分配CPU/內(nèi)存占用等指標數(shù)。如果你的SQL Server給別人分配了一個只可以讀幾個表的權限,而這個家伙瘋狂的死循環(huán)進行連接查詢,會給你的系統(tǒng)帶來很大的負擔。而SQL Server如果能像Oracle一樣可以為登陸分配如:5%的cpu,10%的

20、內(nèi)存。就可以解決這個漏洞。2、數(shù)據(jù)庫物理框架沒有變動undo和redo都放在數(shù)據(jù)庫得transaction中,個人感覺是個敗筆。如果說我們在設計數(shù)據(jù)庫的時候考慮分多個數(shù)據(jù)庫,可能能在一定程度上避免I/O效率問題。但是同樣會為索引視圖等應用帶來麻煩??纯葱屑壓褪聞占壍目煺諗?shù)據(jù)放在tempdb中,就能感覺到目前架構的尷尬。3、還是沒有邏輯備份備份方面可能還是一個老大難的問題。不能單獨備份幾個表總是感覺不爽。靈活備份的問題不知道什么時候才能解決。4、SSIS(DTS)太復雜了SQL Server的異構移植功能個人感覺最好了。(如果對比過SQL Server的鏈接服務器和Oracle的透明網(wǎng)關的朋友會

21、發(fā)現(xiàn)SQL Server的sp_addlinkedserver(openquery)異構數(shù)據(jù)庫系列比Oracle真是強太多了。)以前的DTS輕盈簡單。但是現(xiàn)在的SSIS雖然功能強大了很多,但是總是讓人感覺太麻煩??纯凑搲性儐朣SIS的貼子就知道。做的功能太強大了,往往會有很多用戶不會用了。與oracle 有什么區(qū)別?這個問題相當變態(tài)!不同點我能給他講一天!首先名字就不一樣嘛! :)9.DBA 的品質(zhì)應該有哪些,你有哪些, 有什么欠缺的?略10。如果想配置SQL Mail 應該在服務器安裝哪些軟件!需要哪些軟件?安個outlook express就可以了。sql server提供接口存儲過程,

22、非常簡單。1. 磁盤柜上有14塊73G的磁盤, 數(shù)據(jù)庫為200G 大小包括日志文件,如何設置磁盤(要說明這14磁盤是怎么用的)?2.有兩服務器群集,分別為node1和node2 現(xiàn)在要打win200系統(tǒng)補丁,打完后,要重新啟動,如何打補丁,不能影響用戶使用(要用群集的術語詳細說明)。3.有一個A 數(shù)據(jù)庫,分別復制到B和C B 要求 每次數(shù)據(jù)更新 也同時更新,C 每天更新一次就行,如何制定復制策略!4.有一個order 表,有90個字段,20個索引,15個復合索引,其中有3個索引字段超過10個,如何進行優(yōu)化5.有一個數(shù)據(jù)庫200G大小,每天增加50M 允許用戶隨時訪問,制定備份策略(詳細說明)。

23、6.管理50臺數(shù)據(jù)庫,日常工作是檢查數(shù)據(jù)庫作業(yè)是否完成,你該如何完成這項檢查工作?7.自定義函數(shù)和存儲過程的區(qū)別是什么,什么情況下只能用自定義函數(shù),什么情況下只能用存儲過程8.SQL 2005 的新特性是什么 ? 與oracle 有什么區(qū)別?9.DBA 的品質(zhì)應該有哪些,你有哪些, 有什么欠缺的?10。如果想配置SQL Mail 應該在服務器安裝哪些軟件!ashzs(可以包含中文字符) 解答如下:1.磁盤柜上有14塊73G的磁盤, 數(shù)據(jù)庫為200G 大小包括日志文件,如何設置磁盤(要說明這14磁盤是怎么用的)?這個問題應該是考察硬件知識和數(shù)據(jù)庫物理部署。首先需要知道這些磁盤是否要用于存放數(shù)據(jù)庫

24、備份文件和數(shù)據(jù)庫性能(讀/寫)要求。來決定raid的級別。1)、如果偏重于性能考慮,而且不用存放數(shù)據(jù)庫備份文件的話,考慮使用raid0+1,這樣可使用的磁盤容量為:14*73*50%=511G。2)、如果讀/寫性能要求不高,而且還比較摳門的話,可以考慮raid5,這樣可使用的磁盤容量為:13*73=949G。至于如何使用應該是說數(shù)據(jù)庫物理文件的部署。注意說出將tempdb,data file,log file分開存放以減少I/O競爭即可。其實現(xiàn)在的條帶化磁盤一般都會自動將文件分存,人為的分布已經(jīng)越來越不重要了。2.有兩服務器群集,分別為node1和node2 現(xiàn)在要打win200系統(tǒng)補丁,打完

25、后,要重新啟動,如何打補丁,不能影響用戶使用(要用群集的術語詳細說明)。這個具體操作有點忘了。大致是:首先看哪個節(jié)點正在使用,通過節(jié)點IP(私有)訪問另一個空閑節(jié)點,為其打上補丁,然后在群集管理器中停止該節(jié)點(也可以用命令行方式),重新啟動。等到啟動完畢,將切換使用節(jié)點,為另一個節(jié)點打補丁。然后重新啟動。3.有一個A 數(shù)據(jù)庫,分別復制到B和C B 要求 每次數(shù)據(jù)更新 也同時更新,C 每天更新一次就行,如何制定復制策略!這個應該考察的是復制知識。a-b1)、如果使用SQL Server復制功能,那么讓a-b使用事務性復制方式(同步復制)。2)、如果表不多,也可以自己寫觸發(fā)器,利用linkserv

26、er+distribute transaction。a-c1)、如果使用SQL Server復制功能,那么讓a-b使用快照復制方式,在某一時間點進行一次性復制。2)、也可以自己寫bat,將a備份后,通過ftp傳輸備份介質(zhì),恢復c。(比較麻煩,不推薦)4.有一個order 表,有90個字段,20個索引,15個復合索引,其中有3個索引字段超過10個,如何進行優(yōu)化這個問題問的比較沒水平。你不詳細說明這個表的使用方式(讀寫類的,還是幾乎是靜態(tài)表),就問人家怎么優(yōu)化?!還不如問問索引的分布訪問原理更好。看得出他就想讓你說:那三個索引超過10個,B樹遍例效率很低,適當減少字段數(shù)目。如果是SQL2005,可

27、以將選擇性不好的字段放在“索引附加字段”中,以保證索引覆蓋。而且SQL Server由于有鎖升級的毛病,可以考慮拆開表。5.有一個數(shù)據(jù)庫200G大小,每天增加50M 允許用戶隨時訪問,制定備份策略(詳細說明)。這種情況可以采用增量備份方式。每周日做一次全備份,周一到周六作增量備份(由于數(shù)據(jù)量較少,可以考慮每30分鐘增量備份一次)。這樣可以盡量減少性能消耗,而且如果transaction log丟失的情況下,可以保證最多丟失30分鐘數(shù)據(jù)。6.管理50臺數(shù)據(jù)庫,日常工作是檢查數(shù)據(jù)庫作業(yè)是否完成,你該如何完成這項檢查工作?這個比較簡單。在每臺機器上建立linkserver,然后在DBA管理服務器上做

28、個分布式視圖,每次查詢該視圖,各個機器上的作業(yè)情況一目了然。分布式視圖寫法:create view vw_jobasselect 機器一 as MName,* from linkserver1.sysjobactivityunion allselect 機器二 as MName,* from linkserver2.sysjobactivityunion allselect 機器三 as MName,* from linkserver3.sysjobactivity。7.自定義函數(shù)和存儲過程的區(qū)別是什么,什么情況下只能用自定義函數(shù),什么情況下只能用存儲過程這個應該是考察存儲過程編寫經(jīng)驗。一般自

29、定義函數(shù)主要用于其他sql中的調(diào)用,如:select yourfunc(.) from table這種情況下,一般只能通過函數(shù)實現(xiàn)。存儲過程的功能要遠遠強于函數(shù),例如動態(tài)執(zhí)行sql(sp_executesql)的使用和一些特殊的功能,自定義函數(shù)中是不支持的,只能用存儲過程實現(xiàn)。8.SQL 2005 的新特性是什么 ? 與oracle 有什么區(qū)別?SQL 2005 的新特性一般都是和Oracle學的。下面是當時被leimin逼著寫的,你可以做個參考:一、數(shù)據(jù)庫設計方面1、字段類型。varchar(max)nvarchar(max)類型的引入大大的提高了編程的效率,可以使用字符串函數(shù)對CLOB類型

30、進行操作,這是一個亮點。但是這就引發(fā)了對varchar和char效率討論的老問題。到底如何分配varchar的數(shù)據(jù),是否會出現(xiàn)大規(guī)模的碎片?是否碎片會引發(fā)效率問題?這都是需要進一步探討的東西。varbinary(max)代替image也讓SQL Server的字段類型更加簡潔統(tǒng)一。XML字段類型更好的解決了XML數(shù)據(jù)的操作。XQuery確實不錯,但是個人對其沒好感。(CSDN的開發(fā)者應該是相當?shù)氖炝耍。?、外鍵的級聯(lián)更能擴展可能大部分的同行在設計OLTP系統(tǒng)的時候都不愿意建立外鍵,都是通過程序來控制父子數(shù)據(jù)的完整性。但是再開發(fā)調(diào)試階段和OLAP環(huán)境中,外鍵是可以建立的。新版本中加入了SET N

31、ULL 和 SET DEFAULT 屬性,能夠提供能好的級聯(lián)設置。3、索引附加字段這是一個不錯的新特性。雖然索引的附加字段沒有索引鍵值效率高,但是相對映射到數(shù)據(jù)表中效率還是提高了很多。我做過試驗,在我的實驗環(huán)境中會比映射到表中提高30%左右的效率。4、計算字段的持久化原來的計算字段其實和虛擬字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了計算字段的持久化,這就提高了查詢的性能,但是會加重insert和update的負擔。OLTP慎用。OLAP可以大規(guī)模使用。5、分區(qū)表分區(qū)表是個亮點!從分區(qū)表也能看出微軟要做大作強SQL Server的信心。資料很多,這里不詳細說。但是

32、重點了解的是:現(xiàn)在的SQL Server2005的表,都是默認為分區(qū)表的。因為它要支持滑動窗口的這個特性。這種特性對歷史數(shù)據(jù)和實時數(shù)據(jù)的處理是很有幫助的。但是需要注意的一點,也是我使用過程中發(fā)現(xiàn)的一個問題。在建立function-schema-table后,如果在現(xiàn)有的分區(qū)表上建立沒有顯式聲明的聚集索引時,分區(qū)表會自動變?yōu)榉欠謪^(qū)表。這一點很讓我納悶。如果你覺得我的非分區(qū)索引無法對起子分區(qū),你可以提醒我一下呀!沒有任何的提醒,直接就變成了非分區(qū)表。不知道這算不算一個bug。大家也可以試試。分區(qū)表效率問題肯定是大家關心的問題。在我的試驗中,如果按照分區(qū)字段進行的查詢(過濾)效率會高于未分區(qū)表的相同

33、語句。但是如果按照非分區(qū)字段進行查詢,效率會低于未分區(qū)表的相同語句。但是隨著數(shù)據(jù)量的增大,這種成本差距會逐漸減小,趨于相等。(500萬數(shù)量級只相差10%左右)6、CLR類型微軟對CLR作了大篇幅的宣傳,這是因為數(shù)據(jù)庫產(chǎn)品終于融入.net體系中。最開始我們也是狂喜,感覺對象數(shù)據(jù)庫的一些概念可以實現(xiàn)了。但是作了些試驗,發(fā)現(xiàn)使用CLR的存儲過程或函數(shù)在達到一定的閥值的時候,系統(tǒng)性能會呈指數(shù)級下滑!這是非常危險的!只使用幾個可能沒有問題,當一旦大規(guī)模使用會造成嚴重的系統(tǒng)性能問題!其實可以做一下類比,Oracle等數(shù)據(jù)庫產(chǎn)品老早就支持了java編程,而且提供了java池參數(shù)作為用戶配置接口。但是現(xiàn)在有哪

34、些系統(tǒng)大批使用了java存儲過程?!連Oracle自己的應用都不用為什么?!還不是性能有問題!否則面向?qū)ο蟮臄?shù)據(jù)庫早就實現(xiàn)了!建議使用CLR的地方一般是和應用的復雜程度或操作系統(tǒng)環(huán)境有很高的耦合度的場景。如你想構建復雜的算法,并且用到了大量的指針和高級數(shù)據(jù)模型?;蛘呤且筒僮飨到y(tǒng)進行Socket通訊的場景。否則建議慎重!7、索引視圖索引視圖2k就有。但是2005對其效率作了一些改進但是schema.viewname的作用域真是太限制了它的應用面。還有一大堆的環(huán)境參數(shù)和種種限制都讓人對它有點卻步。8、語句和事務快照語句級快照和事務級快照終于為SQL Server的并發(fā)性能帶來了突破。個人感覺語句

35、級快照大家應該應用。事務級快照,如果是高并發(fā)系統(tǒng)還要慎用。如果一個用戶總是被提示修改不成功要求重試時,會殺人的!9、數(shù)據(jù)庫快照原理很簡單,對要求長時間計算某一時間點的報表生成和防用戶操作錯誤很有幫助。但是比起Oracle10g的閃回技術還是細粒度不夠??上?!10、MirrorMirror可以算是SQL Server的Data guard了。但是能不能被大伙用起來就不知道了。二、開發(fā)方面1、Ranking函數(shù)集其中最有名的應該是row_number了。這個終于解決了用臨時表生成序列號的歷史,而且SQL Server2005的row_number比Oracle的更先進。因為它把Order by集成

36、到了一起,不用像Oracle那樣還要用子查詢進行封裝。但是大家注意一點。如下面的例子:select ROW_NUMBER() OVER (order by aa)from tblorder by bb會先執(zhí)行aa的排序,然后再進行bb的排序??赡苡械呐笥褧г辜傻膐rder by,其實如果使用ranking函數(shù),Order by是少不了的。如果擔心Order by會影響效率,可以為order by的字段建立聚集索引,查詢計劃會忽略order by 操作(因為本來就是排序的嘛)。2、top可以動態(tài)傳入?yún)?shù),省卻了動態(tài)SQL的拼寫。3、Apply對遞歸類的樹遍歷很有幫助。4、CTE個人感覺這個真

37、是太棒了!閱讀清晰,非常有時代感。5、try/catch代替了原來VB式的錯誤判斷。比Oracle高級不少。6、pivot/unpivot個人感覺沒有case直觀。而且默認的第三字段(還可能更多)作為group by字段很容易造成新手的錯誤。轉(zhuǎn)貼請注明 : 三、DBA管理方面1、數(shù)據(jù)庫級觸發(fā)器記得在最開始使用2k的時候就要用到這個功能,可惜2k沒有,現(xiàn)在有了作解決方案的朋友會很高興吧。2、多加的系統(tǒng)視圖和實時系統(tǒng)信息這些東西對DBA挑優(yōu)非常有幫助,但是感覺粒度還是不太細。3、優(yōu)化器的改進一直以來個人感覺SQL Server的優(yōu)化器要比Oracle的聰明。SQL2005的更是比2k聰明了不少。(

38、有次作試驗發(fā)現(xiàn)有的語句在200萬級時還比50萬級的相同語句要快show_text的一些提示沒有找到解釋。一直在奇怪。)論壇例子:4、profiler的新事件觀察這一點很好的加強了profiler的功能。但是提到profiler提醒大家注意一點。windows2003要安裝sp1補丁才能啟動profiler。否則點擊沒有反應。5、sqlcmd習慣敲命令行的朋友可能會爽一些。但是功能有限。適合機器跑不動SQL Server Management Studio的朋友使用。四、遺憾1、登陸的控制始終遺憾SQL Server的登陸無法分配CPU/內(nèi)存占用等指標數(shù)。如果你的SQL Server給別人分配了

39、一個只可以讀幾個表的權限,而這個家伙瘋狂的死循環(huán)進行連接查詢,會給你的系統(tǒng)帶來很大的負擔。而SQL Server如果能像Oracle一樣可以為登陸分配如:5%的cpu,10%的內(nèi)存。就可以解決這個漏洞。2、數(shù)據(jù)庫物理框架沒有變動undo和redo都放在數(shù)據(jù)庫得transaction中,個人感覺是個敗筆。如果說我們在設計數(shù)據(jù)庫的時候考慮分多個數(shù)據(jù)庫,可能能在一定程度上避免I/O效率問題。但是同樣會為索引視圖等應用帶來麻煩??纯葱屑壓褪聞占壍目煺諗?shù)據(jù)放在tempdb中,就能感覺到目前架構的尷尬。3、還是沒有邏輯備份備份方面可能還是一個老大難的問題。不能單獨備份幾個表總是感覺不爽。靈活備份的問題不知

40、道什么時候才能解決。4、SSIS(DTS)太復雜了SQL Server的異構移植功能個人感覺最好了。(如果對比過SQL Server的鏈接服務器和Oracle的透明網(wǎng)關的朋友會發(fā)現(xiàn)SQL Server的sp_addlinkedserver(openquery)異構數(shù)據(jù)庫系列比Oracle真是強太多了。)以前的DTS輕盈簡單。但是現(xiàn)在的SSIS雖然功能強大了很多,但是總是讓人感覺太麻煩??纯凑搲性儐朣SIS的貼子就知道。做的功能太強大了,往往會有很多用戶不會用了。與oracle 有什么區(qū)別?這個問題相當變態(tài)!不同點我能給他講一天!首先名字就不一樣嘛! :)9.DBA 的品質(zhì)應該有哪些,你有哪些

41、, 有什么欠缺的?略10。如果想配置SQL Mail 應該在服務器安裝哪些軟件!需要哪些軟件?安個outlook express就可以了。sql server提供接口存儲過程,非常簡單。首先從數(shù)據(jù)庫設計人員角度來看:1、SQL Server2005之前是不支持分區(qū)表的,所以要在設計系統(tǒng)時考慮今后數(shù)據(jù)量大以后的數(shù)據(jù)轉(zhuǎn)移問題。2、對于樹表設計來說,SQL Server由于沒有start with . connect by這樣的查詢方式,最好在設計表時除了ID、ParentID外,再加入TreePath字段,以避免遞歸循環(huán)。3、由于SQL Server有鎖升級的毛病,頻繁DML的表最好減少字段數(shù)量,

42、以減少鎖升級帶來的阻塞!4、在設計數(shù)據(jù)庫物理分布的時侯,由于SQL Server每個數(shù)據(jù)庫都有自己的Transaction Log(其中包含Undo和Redo信息),為了減輕Transaction Log的I/O爭用,可以考慮多數(shù)據(jù)庫(使用聚集索引視圖Clustered View的除外)。而Oracle是數(shù)據(jù)庫和實例一一對應的(RAC除外),多個表空間使用公用Undo segement和redo file。5、SQL Server的索引只有cluster index和nocluster index,而Oracle有Btree indexbitmap indexfunction index等。6

43、、SQL Server的最基本存儲結構是頁(8K),而Oracle最基本的是block可以根據(jù)OLTP和DSS的應用不同(后者可以選擇大一點,利于查找效率),選擇2K-32K不同block大小。7、SQL Server的結構是實例-多個數(shù)據(jù)庫-表、存儲過程.。Oracle的是數(shù)據(jù)庫=實例(RAC是多個實例對應一個數(shù)據(jù)庫存儲)-schema(用戶)表空間 -表、存儲過程.。1.磁盤柜上有14塊73G的磁盤, 數(shù)據(jù)庫為200G 大小包括日志文件,如何設置磁盤(要說明這14磁盤是怎么用的)?答:可以做成a. 磁盤比較充裕,做RAID10 ,就是14塊硬盤分一半,2個7塊做Raid0,容量:7*73G

44、=511G,然后把它們組成Raid1,最后容量(14/2)*73G=511G. RAID10 優(yōu)點,數(shù)據(jù)一次需要寫入兩個區(qū)塊,讀的時候可以從任意一個比較快的地方讀取,效率很高,缺點成本較高。b.Raid5, 13塊硬盤做Raid5,1塊做熱冗余; 容量: (14-2)*73G=876G, Raid5優(yōu)點,穩(wěn)定系數(shù)高,性價比高。c.Raid51,7塊硬盤做Raid5,另7塊也做Raid5,再把這2個Raid5做成Raid1,容量: (14/2-1)*73G=438G,優(yōu)點:比RAID10更穩(wěn)定,效率和RAID10相當.2.有兩服務器群集,分別為node1和node2 現(xiàn)在要打win200系統(tǒng)補丁

45、,打完后,要重新啟動,如何打補丁,不能影響用戶使用(要用群集的術語詳細說明)。答:a.假設node1聯(lián)機并控制資源,那么先給node2 先打補丁,重起node2,這時聯(lián)機并控制資源情況不會改變,不影響客戶服務.b.等node2 重起補丁完畢,手工把node1的服務和資源切換到node2,使node2處于聯(lián)機狀態(tài),然后給node1打補丁,重起補丁完畢,再把node2的服務和資源切換后node1正常運作.第二套題 一、 選擇題1. 以下數(shù)據(jù)結構中不屬于線性數(shù)據(jù)結構的是_。A、隊列 B、線性表 C、二叉樹 D、棧2. 在結構化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是_。A、可行性分

46、析 B、需求分析 C、詳細設計 D、程序編碼3. 結構化程序設計主要強調(diào)的是_。A、程序的規(guī)模 B、程序的易讀性 C、程序的執(zhí)行效率 D、程序的可移植性4. 在軟件生命周期中,能準確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是_。A、概要設計 B、詳細設計 C、可行性分析 D、需求分析5. 下列關于棧的敘述中正確的是_。A、在棧中只能插入數(shù)據(jù) B、在棧中只能刪除數(shù)據(jù)C、棧是先進先出的線性表 D、棧是先進后出的線性表6. 下面不屬于軟件設計原則的是_。A、抽象 B、模塊化 C、自底向上 D、信息隱蔽7. 對長度為N的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為_。A、N+1 B、N

47、C、(N+1)/2 D、N/28. 視圖設計一般有3種設計次序,下列不屬于視圖設計的是_。A、自頂向下 B、由外向內(nèi) C、由內(nèi)向外 D、自底向上9. 下列有關數(shù)據(jù)庫的描述,正確的是_。A、數(shù)據(jù)庫是一個DBF文件 B、數(shù)據(jù)庫是一個關系C、數(shù)據(jù)庫是一個結構化的數(shù)據(jù)集合 D、數(shù)據(jù)庫是一組文件10. 下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是_。A、數(shù)據(jù)結構 B、數(shù)據(jù)操作 C、數(shù)據(jù)查詢 D、數(shù)據(jù)約束11. 在下面的Visual FoxPro表達式中,運算結果是邏輯真的是_。A、EMPTY(.NULL.) B、LIKE(acd,ac?) C、AT(a,123abc) D、EMPTY(SPACE(2)12

48、. 表達式VAL(SUBS(奔騰586,5,1)*Len(visual foxpro)的結果是_。A、13.00 B、14.00 C、45.00 D、65.0013. 以下關于自由表的敘述,正確的是_。A、全部是用以前版本的FOXPRO(FOXBASE)建立的表B、可以用Visual FoxPro建立,但是不能把它添加到數(shù)據(jù)庫中C、自由表可以添加到數(shù)據(jù)庫中,數(shù)據(jù)庫表也可以從數(shù)據(jù)庫中移出成為自由表D、自由表可以添加到數(shù)據(jù)庫中,但數(shù)據(jù)庫表不可從數(shù)據(jù)庫中移出成為自由表14. 下面關于數(shù)據(jù)環(huán)境和數(shù)據(jù)環(huán)境中兩個表之間的關系的陳述中,_是正確的。A、數(shù)據(jù)環(huán)境是對象,關系不是對象 B、數(shù)據(jù)環(huán)境不是對象,關系

49、是對象C、數(shù)據(jù)環(huán)境是對象,關系是數(shù)據(jù)環(huán)境中的對象 D、數(shù)據(jù)環(huán)境和關系均不是對象15. 在報表設計器中,可以使用的控件是_。A、標簽、域控件和線條 B、標簽、域控件和列表框C、標簽、文本框和列表框 D、布局和數(shù)據(jù)源16.用二維表數(shù)據(jù)來表示實體及實體之間聯(lián)系的數(shù)據(jù)模型稱為_。A、實體-聯(lián)系模型 B、層次模型 C、網(wǎng)狀模型 D、關系模型17. 用來指明復選框的當前選中狀態(tài)的屬性是_。A、Selected B、Caption C、Value D、ControlSource18. 使用菜單操作方法打開一個在當前目錄下已經(jīng)存在的查詢文件zgjk.qpr后,在命令窗口生成的命令是_。A、OPEN QUERY

50、 zgjk.qpr B、MODIFY QUERY zgjk.qprC、DO QUERY zgjk.qpr D、CREATE QUERY zgjk.qpr19. 可以伴隨著表的打開而自動打開的索引是_。A、單一索引文件(IDX) B、復合索引文件(CDX)C、結構化復合索引文件 D、非結構化復合索引文件20. 在數(shù)據(jù)庫設計器中,建立兩個表之間的一對多聯(lián)系是通過以下索引實現(xiàn)的_。A、一方表的主索引或候選索引,多方表的普通索引B、一方表的主索引,多方表的普通索引或候選索引C、一方表的普通索引,多方表的主索引或候選索引D、一方表的普通索引,多方表的候選索引或普通索引21. 下列函數(shù)中函數(shù)值為字符型的是

51、_。 A、DATE() B、TIME() C、YEAR() D、DATETIME()22. 下面對控件的描述正確的是_。A、用戶可以在組合框中進行多重選擇 B、用戶可以在列表框中進行多重選擇C、用戶可以在一個選項組中選中多個選項按鈕 D、用戶對一個表單內(nèi)的一組復選框只能選中其中一個23. 確定列表框內(nèi)的某個條目是否被選定應使用的屬性是_。A、Value B、ColumnCount C、ListCount D、Selected24. 設有關系R1和R2,經(jīng)過關系運算得到結果S,則S是_。A、一個關系 B、一個表單 C、一個數(shù)據(jù)庫 D、一個數(shù)組25. DBAS指的是_。A、數(shù)據(jù)庫管理系統(tǒng)B、數(shù)據(jù)庫

52、系統(tǒng)C、數(shù)據(jù)庫應用系統(tǒng) D、數(shù)據(jù)庫服務系統(tǒng)26. 設X=ABC,Y=ABCD,則下列表達式中值為.T.的是_。A、X=Y B、X=Y C、X$Y D、AT(X,Y)=027. 在表結構中,邏輯型、日期型、備注型字段的寬度分別固定為_。A、3,8,10 B、1,6,4 C、1,8,任意 D、1,8,428. 在標準SQL中,建立視圖的命令是_。A、CREATE SCHEMA命令 B、CREATE TABLE命令 C、CREATE VIEW命令 D、CREATE INDEX命令29. 有關SCAN循環(huán)結構,敘述正確的是_。A、SCAN循環(huán)結構中的LOOP語句,可將程序流程直接指向循環(huán)開始語句SCA

53、N,首先判斷EOF()函數(shù)的真假B、在使用SCAN循環(huán)結構時,必須打開某一個數(shù)據(jù)庫C、SCAN循環(huán)結構的循環(huán)體中必須寫有SKIP語句D、SCAN循環(huán)結構,如果省略了子句FOR和WHILE條件子句,則直接退出循環(huán)30. 設有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2)讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20)借閱(借書證號C(4),總編號C(6),借書日期D(8)對于圖書管理數(shù)據(jù)庫,要查詢所藏圖書中,各個出版社的圖書最高單價、平均單價和冊數(shù),下面SQL語句正確的是_。SELECT 出版單位,_,_,_;FROM 圖書管理!圖書 _ 出版單位A、MIN(單價) AVGAGE(單價) COUNT(*) G

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論