十個(gè)經(jīng)典的數據庫面試問(wèn)題

時(shí)間:2022-07-13 15:40:21 數據庫操作系統 我要投稿
  • 相關(guān)推薦

十個(gè)經(jīng)典的數據庫面試問(wèn)題

1.磁盤(pán)柜上有14塊73G的磁盤(pán), 數據庫為200G 大小包括日志文件,如何設置磁盤(pán)(要說(shuō)明這14磁盤(pán)是怎么用的)?

十個(gè)經(jīng)典的數據庫面試問(wèn)題

這個(gè)問(wèn)題應該是考察硬件知識和數據庫物理部署。

首先需要知道這些磁盤(pán)是否要用于存放數據庫備份文件和數據庫性能(讀/寫(xiě))要求。來(lái)決定raid的級別。

1)、如果偏重于性能考慮,而且不用存放數據庫備份文件的話(huà),考慮使用raid0+1,這樣可使用的磁盤(pán)容量為:14*73*50%=511G。

2)、如果讀/寫(xiě)性能要求不高,而且還比較摳門(mén)的話(huà),可以考慮raid5,這樣可使用的磁盤(pán)容量為:13*73=949G。

至于如何使用應該是說(shuō)數據庫物理文件的部署。注意說(shuō)出將tempdb,data file,log file分開(kāi)存放以減少I(mǎi)/O競爭即可。其實(shí)現在的條帶化磁盤(pán)一般都會(huì )自動(dòng)將文件分存,人為的分布已經(jīng)越來(lái)越不重要了。

2.有兩服務(wù)器群集,分別為node1和node2 現在要打win200系統補丁,打完后,要重新啟動(dòng),如何打補丁,不能影響用戶(hù)使用(要用群集的術(shù)語(yǔ)詳細說(shuō)明)。

這個(gè)具體操作有點(diǎn)忘了。大致是:首先看哪個(gè)節點(diǎn)正在使用,通過(guò)節點(diǎn)Ip(私有)訪(fǎng)問(wèn)另一個(gè)空閑節點(diǎn),為其打上補丁,然后在群集管理器中停止該節點(diǎn)(也可以用命令行方式),重新啟動(dòng)。等到啟動(dòng)完畢,將切換使用節點(diǎn),為另一個(gè)節點(diǎn)打補丁。然后重新啟動(dòng)。

3.有一個(gè)A 數據庫,分別復制到B和C B 要求 每次數據更新 也同時(shí)更新,C 每天更新一次就行,如何制定復制策略!

這個(gè)應該考察的是復制知識。

a->b

1)、如果使用SQL Server復制功能,那么讓a->b使用事務(wù)性復制方式(同步復制)。

2)、如果表不多,也可以自己寫(xiě)觸發(fā)器,利用linkserver+distribute transaction。

a->c

1)、如果使用SQL Server復制功能,那么讓a->b使用快照復制方式,在某一時(shí)間點(diǎn)進(jìn)行一次性復制。

2)、也可以自己寫(xiě)bat,將a備份后,通過(guò)ftp傳輸備份介質(zhì),恢復c。(比較麻煩,不推薦)

4.有一個(gè)order 表,有90個(gè)字段,20個(gè)索引,15個(gè)復合索引,其中有3個(gè)索引字段超過(guò)10個(gè),如何進(jìn)行優(yōu)化

這個(gè)問(wèn)題問(wèn)的比較沒(méi)水平。你不詳細說(shuō)明這個(gè)表的使用方式(讀寫(xiě)類(lèi)的,還是幾乎是靜態(tài)表),就問(wèn)人家怎么優(yōu)化?!!還不如問(wèn)問(wèn)索引的分布訪(fǎng)問(wèn)原理更好。

看得出他就想讓你說(shuō):那三個(gè)索引超過(guò)10個(gè),B樹(shù)遍例效率很低,適當減少字段數目。如果是SQL2005,可以將選擇性不好的字段放在“索引附加字段”中,以保證索引覆蓋。而且SQL Server由于有鎖升級的毛病,可以考慮拆開(kāi)表。

5.有一個(gè)數據庫200G大小,每天增加50M 允許用戶(hù)隨時(shí)訪(fǎng)問(wèn),制定備份策略(詳細說(shuō)明)。

這種情況可以采用增量備份方式。每周日做一次全備份,周一到周六作增量備份(由于數據量較少,可以考慮每30分鐘增量備份一次)。這樣可以盡量減少性能消耗,而且如果transaction log丟失的情況下,可以保證最多丟失30分鐘數據。

6.管理50臺數據庫,日常工作是檢查數據庫作業(yè)是否完成,你該如何完成這項檢查工作?

這個(gè)比較簡(jiǎn)單。在每臺機器上建立linkserver,然后在DBA管理服務(wù)器上做個(gè)分布式視圖,每次查詢(xún)該視圖,各個(gè)機器上的作業(yè)情況一目了然。分布式視圖寫(xiě)法:

create view vw_job

as

select 機器一\ as MName,* from linkserver1..sysjobactivity

union all

select 機器二\ as MName,* from linkserver2..sysjobactivity

union all

select 機器三\ as MName,* from linkserver3..sysjobactivity

。。。

7.自定義函數和存儲過(guò)程的區別是什么,什么情況下只能用自定義函數,什么情況下只能用存儲過(guò)程

這個(gè)應該是考察存儲過(guò)程編寫(xiě)經(jīng)驗。一般自定義函數主要用于其他sql中的調用,如:

select yourfunc(...) from table

這種情況下,一般只能通過(guò)函數實(shí)現。

存儲過(guò)程的功能要遠遠強于函數,例如動(dòng)態(tài)執行sql(sp_executesql)的使用和一些特殊的功能,自定義函數中是不支持的,只能用存儲過(guò)程實(shí)現。

8.SQL 2005 的新特性是什么 ? 與oracle 有什么區別?

SQL 2005 的新特性一般都是和Oracle學(xué)的。

下面是當時(shí)被leimin逼著(zhù)寫(xiě)的,你可以做個(gè)參考:

一、數據庫設計方面

1、字段類(lèi)型。

varmax)\nvarmax)類(lèi)型的引入大大的提高了編程的效率,可以使用字符串函數對CLOB類(lèi)型進(jìn)行操作,這是一個(gè)亮點(diǎn)。但是這就引發(fā)了對varchar和char效率討論的老問(wèn)題。到底如何分配varchar的數據,是否會(huì )出現大規模的碎片?是否碎片會(huì )引發(fā)效率問(wèn)題?這都是需要進(jìn)一步探討的東西。

varbinary(max)代替image也讓SQL Server的字段類(lèi)型更加簡(jiǎn)潔統一。

XML字段類(lèi)型更好的解決了XML數據的操作。XQuery確實(shí)不錯,但是個(gè)人對其沒(méi)好感。(CSDN的開(kāi)發(fā)者應該是相當的熟了!)

2、外鍵的級聯(lián)更能擴展

可能大部分的同行在設計OLTp系統的時(shí)候都不愿意建立外鍵,都是通過(guò)程序來(lái)控制父子數據的完整性。但是再開(kāi)發(fā)調試階段和OLAp環(huán)境中,外鍵是可以建立的。新版本中加入了SET NULL 和 SET DEFAULT 屬性,能夠提供能好的級聯(lián)設置。

3、索引附加字段

這是一個(gè)不錯的新特性。雖然索引的附加字段沒(méi)有索引鍵值效率高,但是相對映射到數據表中效率還是提高了很多。我做過(guò)試驗,在我的實(shí)驗環(huán)境中會(huì )比映射到表中提高30%左右的效率。

4、計算字段的持久化

原來(lái)的計算字段其實(shí)和虛擬字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了計算字段的持久化,這就提高了查詢(xún)的性能,但是會(huì )加重和update的負擔。OLTp慎用。OLAp可以大規模使用。

5、分區表

分區表是個(gè)亮點(diǎn)!從分區表也能看出微軟要做大作強SQL Server的信心。資料很多,這里不詳細說(shuō)。但是重點(diǎn)了解的是:現在的SQL Server2005的表,都是默認為分區表的。因為它要支持滑動(dòng)窗口的這個(gè)特性。這種特性對歷史數據和實(shí)時(shí)數據的處理是很有幫助的。

但是需要注意的一點(diǎn),也是我使用過(guò)程中發(fā)現的一個(gè)問(wèn)題。在建立function->schema->table后,如果在現有的分區表上建立沒(méi)有顯式聲明的聚集索引時(shí),分區表會(huì )自動(dòng)變?yōu)榉欠謪^表。這一點(diǎn)很讓我納悶。如果你覺(jué)得我的非分區索引無(wú)法對起子分區,

你可以提醒我一下呀!沒(méi)有任何的提醒,直接就變成了非分區表。不知道這算不算一個(gè)bug。大家也可以試試。

分區表效率問(wèn)題肯定是大家關(guān)心的問(wèn)題。在我的試驗中,如果按照分區字段進(jìn)行的查詢(xún)(過(guò)濾)效率會(huì )高于未分區表的相同語(yǔ)句。但是如果按照非分區字段進(jìn)行查詢(xún),效率會(huì )低于未分區表的相同語(yǔ)句。但是隨著(zhù)數據量的增大,這種成本差距會(huì )逐漸減小,趨于相等。(500萬(wàn)數量級只相差10%左右)

6、CLR類(lèi)型

微軟對CLR作了大篇幅的宣傳,這是因為數據庫產(chǎn)品終于融入.net體系中。最開(kāi)始我們也是狂喜,感覺(jué)對象數據庫的一些概念可以實(shí)現了。但是作了些試驗,發(fā)現使用CLR的存儲過(guò)程或函數在達到一定的閥值的時(shí)候,系統性能會(huì )呈指數級下滑!這是非常危險的!只使用幾個(gè)可能沒(méi)有問(wèn)題,當一旦大規模使用會(huì )造成嚴重的系統性能問(wèn)題!

其實(shí)可以做一下類(lèi)比,Oracle等數據庫產(chǎn)品老早就支持了java編程,而且提供了java池參數作為用戶(hù)配置接口。但是現在有哪些系統大批使用了java存儲過(guò)程?!連Oracle自己的應用都不用為什么?!還不是性能有問(wèn)題!否則面向對象的數據庫早就實(shí)現了!

建議使用CLR的地方一般是和應用的復雜程度或操作系統環(huán)境有很高的耦合度的場(chǎng)景。如你想構建復雜的算法,并且用到了大量的指針和高級數據模型;蛘呤且筒僮飨到y進(jìn)行Socket通訊的場(chǎng)景。否則建議慎重!

7、索引視圖

索引視圖2k就有。但是2005對其效率作了一些改進(jìn)但是schema.viewname的作用域真是太限制了它的應用面。還有一大堆的環(huán)境參數和種種限制都讓人對它有點(diǎn)卻步。

8、語(yǔ)句和事務(wù)快照

語(yǔ)句級快照和事務(wù)級快照終于為SQL Server的并發(fā)性能帶來(lái)了突破。個(gè)人感覺(jué)語(yǔ)句級快照大家應該應用。事務(wù)級快照,如果是高并發(fā)系統還要慎用。如果一個(gè)用戶(hù)總是被提示修改不成功要求重試時(shí),會(huì )殺人的!

9、數據庫快照

原理很簡(jiǎn)單,對要求長(cháng)時(shí)間計算某一時(shí)間點(diǎn)的報表生成和防用戶(hù)操作錯誤很有幫助。但是比起Oracle10g的閃回技術(shù)還是細粒度不夠?上!

10、Mirror

Mirror可以算是SQL Server的Data guard了。但是能不能被大伙用起來(lái)就不知道了。

二、開(kāi)發(fā)方面

1、Ranking函數集

其中最有名的應該是row_number了。這個(gè)終于解決了用臨時(shí)表生成序列號的歷史,而且SQL Server2005的row_number比Oracle的更先進(jìn)。因為它把Order by集成到了一起,不用像Oracle那樣還要用子查詢(xún)進(jìn)行封裝。但是大家注意一點(diǎn)。如下面的例子:

select ROW_NUMBER() OVER (order by aa)

from tbl

order by bb

會(huì )先執行aa的排序,然后再進(jìn)行bb的排序。

可能有的朋友會(huì )抱怨集成的order by,其實(shí)如果使用ranking函數,Order by是少不了的。如果擔心Order by會(huì )影響效率,可以為order by的字段建立聚集索引,查詢(xún)計劃會(huì )忽略order by 操作(因為本來(lái)就是排序的嘛)。

2、top

可以動(dòng)態(tài)傳入參數,省卻了動(dòng)態(tài)SQL的拼寫(xiě)。

3、Apply

對遞歸類(lèi)的樹(shù)遍歷很有幫助。

4、CTE

個(gè)人感覺(jué)這個(gè)真是太棒了!閱讀清晰,非常有時(shí)代感。

5、try/catch

代替了原來(lái)VB式的錯誤判斷。比Oracle高級不少。

6、pivot/unpivot

個(gè)人感覺(jué)沒(méi)有case直觀(guān)。而且默認的第三字段(還可能更多)作為group by字段很容易造成新手的錯誤。

三、DBA管理方面

1、數據庫級觸發(fā)器

記得在最開(kāi)始使用2k的時(shí)候就要用到這個(gè)功能,可惜2k沒(méi)有,現在有了作解決方案的朋友會(huì )很高興吧。

2、多加的系統視圖和實(shí)時(shí)系統信息

這些東西對DBA挑優(yōu)非常有幫助,但是感覺(jué)粒度還是不太細。

3、優(yōu)化器的改進(jìn)

一直以來(lái)個(gè)人感覺(jué)SQL Server的優(yōu)化器要比Oracle的聰明。SQL2005的更是比2k聰明了不少

【十個(gè)經(jīng)典的數據庫面試問(wèn)題】相關(guān)文章:

外企面試最?lèi)?ài)提的十個(gè)問(wèn)題07-11

如何巧妙回答英語(yǔ)面試中99%會(huì )被問(wèn)到的十個(gè)問(wèn)題07-11

面試撞墻的十個(gè)細節07-11

面試的衣著(zhù)問(wèn)題07-11

面試的經(jīng)典問(wèn)題與解答07-11

《面試》閱讀問(wèn)題07-11

面試中的問(wèn)題07-11

面試后的問(wèn)題07-11

面試問(wèn)題??07-11

面試準備問(wèn)題07-11

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆