• 初級DBA需要知道的十件事

    0
    PHP 數據庫 C/C++ Go 9160 次瀏覽

    轉載請在文首保留原文出處:EMC中文支持論壇https://community.emc.com/go/chinese

    介紹

     

          成為一個合格的DBADatabase Administrator,數據庫管理員),光了解SQL語句是不夠的。DBA通常工作在數據庫、服務器、運維人員和開發者的交集上,所以一個合格的DBA需要了解IT的方方面面,從而可以具備對性能、硬件和軟件問題排錯的能力。本文將介紹一個初級的DBA需要知道的十件事,快來看看自己是否已經都具備這些能力啦?

    database.jpg

    更多信息

     

    備份和恢復:

     

          任何一個名副其實的DBA都應該了解如何使用DBMS(數據庫管理系統)的內建工具來備份和恢復數據,比如Oracle Recovery ManagerSQL Server Management Studio。除此之外,了解有哪些第三方的數據庫備份工具也是很有必要的。了解過后你會發現,這些工具各有優勢。事實上,僅僅備份了數據庫文件并不代表這個備份是一個“好”備份。

     

    基本的優化:

     

          當創建索引時,DBA需要知道如何提出優化建議。你需要知道一些基本的索引策略,同時還要知道下面這些問題的答案。比如,何時引入聚集索引(Clustered Index)?何時使用覆蓋索引(Covered Index)?數據庫優化器如何工作?它是否依賴于特殊表的統計數據?如何更新這些數據?使用優化器對重組表和索引意味著什么?它們應該如何被重組,以及是否能自動化這一過程?

     

    協助軟件開發者

     

          軟件開發人員可以搭建也可以摧毀你的數據庫。幫助他們撰寫有效率的查詢代碼是很重要的。你要幫助他們了解,一次發起1個查詢請求比同時發起1000個請求要有效率得多:大數據情況下,1次查詢返回1000行結果比1000次查詢每次返回一條快得多。作為一個DBA,幫助他們理解有些時候在DBMS執行操作要比在代碼中更好。典型的案例就是,通過網絡抓取大量數據再在本地合并,很有可能比直接一個合計函數(Aggregate Function)查詢慢。

     

    存儲系統

     

          大多數數據庫的性能瓶頸在磁盤,了解你的數據庫位置所在以及DBMS是如何訪問物理數據也是非常重要的。如果你的企業有存儲團隊,聯系他們,并且掌握他們是如何監控存儲的一些重要性能指標,如IOPS和響應時間。

     

    了解查詢計劃

     

          一個初級DBA應該知道如何生成和閱讀基本的查詢計劃。并不一定要求你完全理解所有的內容,但幾個關鍵的過程還是要掌握的,比如隨意的全表掃描(Full Table Scan)和嵌套循環(Nested Loops)可能會出現問題。同樣,你需要知道何時優化器會推薦更改,為什么這樣的更改會生效,以及這些操作會對系統造成怎樣的性能妥協。

     

    了解規范化

     

          規范化的數據庫表Normalized Tables是一個優良設計的關系型數據庫的基礎,但有時這也會帶來災難。DBA需要理解并知道如何將數據納入第一、第二和第三范式。為什么規范化很重要以及何時它可能成為一個不利因素?知道主鍵、外鍵和唯一鍵的區別,同時知道如何強制一對一、一對多的關系。

     

    了解SQL語言

     

          DBA還需要掌握SQL DML(數據操作語言)和DDL(數據定義語言)。DML包含的項目包括Select(查詢)、Update(更新)、Insert(插入)和Delete(刪除)。DDL包含Create Table(創建表)和Alter Table(刪除表)。初級DBA應該了解如何創建和修改表以及索引,并且知道刪除記錄、截斷表和丟棄表間的區別。當然,也不能忘了視圖(View)。

     

    操作系統

     

          DBA還需要熟悉操作系統,知道不同操作系統之間的差別,比如安全設置、與活動目錄(AD)、LDAP的集成和命名規范。同時你還需知道數據庫是如何啟動的,需要哪些腳本來啟動、關閉或臨時鎖住用戶的訪問。

     

    腳本

     

          為了讓工作更有效率,腳本是必不可少的。想象一下你有十個或更多的數據庫需要管理,你是否只能逐一登錄并手動啟動/關停它們?快去找本腳本指南來看看如何批量地執行這些操作吧。

     

    存儲過程和觸發器

     

          將存儲過程和觸發器單獨列開一項是因為考慮到這更像是編程而不是“組合”SQL語句。不管怎樣,你需要知道何時使用它們,并讓開發團隊知道不在代碼中完成操作的優點。同樣,許多第三方應用會自帶需要的存儲過程和觸發器。能夠讀懂這些過程并了解它們的邏輯,對將來性能問題的排錯很有幫助。能越快理解這些過程,你就能對自己管理的數據庫更得心應手。

    參考

     

    TechNet: SQL Server: Top 10 Secrets of a SQL Server Expert

    ServerFault: Things every SQL Server DBA should know

    BrentOzar: How to Become a Database Administrator

    應用于

     

    數據庫、備份

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色