SQLServer DBA 三十問
很多開發人員都想成為一名DBA,也有很多人一開始就把自己定位成為一名DBA,DBA究竟需要掌握些什麽知識和技能呢?以下是我
做DBA工作和面試DBA時,整理的一些DBA方面的三十個問題,三十個大問題中還有許多小的問題,涵括了SQLServer DBA比較多的技
術知識點,與大家分享下,希望給有誌做DBA的朋友們一些幫助:
1. char、varchar、nvarchar之間的區別(包括用途和空間占用);xml類型查找某個節點的數據有哪些方法,哪個效率高;使用存儲
過程和使用T-SQL查詢數據有啥不一樣;
2. 系統DB有哪些,都有什麽作用,需不需要做備份,為什麽;損壞了如何做還原(主要是master庫);
3. 有哪些操作會使用到TempDB;如果TempDB異常變大,可能的原因是什麽,該如何處理;
4. Index有哪些類型,它們的區別和實現原理是什麽,索引有啥優點和缺點;如何為SQL語句創建合適的索引,索引創建時有哪些需要
註意的項,如何查看你創建的索引是否被使用;如何維護索引;索引損壞如何檢查,怎麽修復;T-SQL有更好的索引存在,但是運行
時並沒有使用該索引,原因可能是什麽;
5. 視圖上我們能建索引嗎,如果能建的話,會啥好處和壞處;視圖上建索引和表上建索引有啥區別;
6. Job信息我們可以通過哪些表獲取;系統正在運行的語句可以通過哪些視圖獲取;如何獲取某個T-SQL語句的IO、Time等信息;
7. 在線系統,一個表有五千萬記錄,現在要你將其中的兩千萬條記錄導入到另一臺服務器的某個表中,導完後,需要將這兩千萬數據刪
除,你預備如何處理,優缺點是什麽;
8. 數據庫服務器報磁盤空間不足,你將如何應對,要求盡快恢復;
9. 臨時表、表變量、CTE(公用表表達式)有啥區別和聯系,保存位置有啥不一樣,使用時如何決定選哪種;
10. SQLServer有哪些隔離級別,默認級別是哪個;數據庫有哪些主要的鎖類型;行版本控制是如何實現的;
11. 死鎖如何跟蹤;阻塞如何跟蹤和查找;發現有問題的語句後,如何進行處理;用Profile做跟蹤時,一般我們需要跟蹤哪些事件;
12. Windows日誌主要有哪幾種,SQLServer日誌一般保留幾個,什麽情況下會產生新的SQL日誌;數據庫日誌恢復模式有哪幾種,
區別是什麽;數據庫日誌突然變得很大,而且你無法收縮,可能的原因是什麽,怎麽查找原因,分別將如何處理;
13. 分區表和分區視圖是什麽概念,一般是在什麽情況下使用,有啥好處;
14. 如何比較兩個同結構的表數據的差異;如果表損壞了,如何修復;如何在備份文件有問題的情況下盡量還原數據;如何將一個表
的Identity屬性歸零;
15. CheckPoint、LazyWriter和Eager Write的區別和作用;DDL Trigger 和 DML Trigger的區別和作用;
16. Mirroring 和Logshipping 的區別和使用場景;SQLServer的Mirroring與Oracle的哪像技術比較接近,它們的區別是啥;
17. Mirroring的搭建步驟,Mirroring三種模式的區別,Mirroring 中同步和異步的原理和要求,搭建了Mirroring後,需要對數據庫日誌做
什麽處理;
18. Replication配置和使用場景;Replication有哪幾種模式;PUSH和PULL有啥區別;搭建Replication後會產生一個什麽庫;報錯時
用什麽來查看報錯的具體語句,清理掉某個庫的Replication使用什麽語句,查看同步鏈信息主要通過哪些表;
19. Replication發布端的表能truncate嗎,為什麽;Replication Identity列如何處理、缺失字段錯誤如何處理、主鍵沖突錯誤如何處
理、如何跳過指定的錯誤、訂閱端表被刪除了如何處理、大規模改動數據如何處理;某條同步鏈因為其中的某個表一次性改動數據很
大造成同步鏈的嚴重延時,要求盡快恢復同步鏈,如何處理。
20. SSB(Service Broker)使用場景,如何創建,都會創建些什麽對象,有啥優缺點,主要通過什麽方式實現不同服務器之間的消息
傳遞;可以通過哪些方式排錯;
21. 跟蹤數據庫數據的變更有哪些方法,它們(CDC(Change Data Capture)、CT(Change Tracking)、Trigger等)使用上的
優缺點;
22. SQL調優步驟,如何來判斷SQL語句存在問題,怎麽定位問題,如何解決這些問題;Nested Join、Merge Join和Hash Join的區別;
23. 數據庫故障排查步驟,如何處理緊急數據庫問題;
24. 如何考慮和制定數據庫備份計劃;公司要求對一個非常大的數據庫或者表做備份,而且要求數據量盡可能少丟失,你可能會采用什麽
方法;
25. 如果要你做數據庫監控,你會關註那些指標(包括SQLServer和Windows),如何制定性能基線,你使用過哪些監控軟件;
26. 數據庫遷移步驟;重建一套比較大的測試系統(最少10個數據庫實例),如果原來DB數據量都不大,但DB比較多,新搭建的系統數據
都不需要,如何快速實現;
27. 創建Cluster 簡要步驟,最少需要幾個IP,需要安裝些什麽服務,需要哪些固定的磁盤,Raid如何設置,磁盤如何劃分;SQLServer
Cluster與Mysql Cluster 和 Oracle RAC的區別等;
28. 如果遇到一個性能不理想、代碼復雜的存儲過程,很難通過數據庫方面的調優來解決問題,你如何說服開發人員修改它(可能開發人
員並不願意修改);
29. 你有沒有遇到過因為你的誤操作造成系統故障發生的情況,你當時是如何處理的;如果沒有,假定你誤刪了一個重要的表,你該如何
處理;
30. 你準備成為一名什麽樣的DBA,為此你將如何準備(或者你有怎樣的職業規劃,準備怎樣度過你的DBA生涯);如果你進入公司,你
最想獲得的是什麽。
SQLServer DBA 三十問