2014年4月,我入職了新公司。在我入職以前,公司沒有DBA,總監給我一個任務,優化一個業務系統。sql
因而給我說了一下當前的情況:數據庫
一、系統數據庫常常宕機。windows
二、用戶常常投訴說程序不響應。服務器
我當時就兩眼一抹黑,這能說明什麼問題了,數據庫有很大的問題,這是個人第一反應。數據庫設計
可是,工做必須進行下去,在沒有資料,不懂業務的狀況下,性能
第一步,我開始了長達一個月的監控:優化
一、使用windows性能監視器定義了數據收集器。設計
二、使用sqlprofiler抓取全部的sql語句。日誌
第二步,分析日誌:索引
一、根據數據收集器收集來的數據,分析服務器硬件瓶頸。
二、把sqlprofiler收集到的sql語句導入本地數據庫,利用全文索引對tsql和存儲過程進行統計分析。
第三步:
一、提交硬件升級方案。
二、從新配置數據庫。
三、提交優化方案。
一我的又花費了2個月的時間,對系統進行優化,最後系統性能獲得很大提高。
但我以爲系統的性能還有很大的提高空間,但我遇到一個問題,因爲對系統業務邏輯不瞭解,
沒法從根本上提高數據庫性能,而修改數據庫結構對系統影響更大,公司沒法承受,因此,
一切止步於此。
以後又對公司的其餘系統進行優化,這些優化讓我對數據庫設計有了很深的體會:
一、數據庫設計有問題,不管怎麼提高硬件性能,怎麼優化,都無濟於事。
二、優化最容易體現成果的是索引優化。
三、優化是全方位的,不單單須要知道tsql語句優化,索引優化等等,對系統業務邏輯的優化一樣重要。
四、優化先從大的方面開始,而後再切入細節。
另外我得感謝樺仔,在我收集數據的過程當中,正是看了他寫的關於全文索引的博客,在統計tsql語句信息時,
我使用了全文索引,這對我在分析tsql語句時給予了很大的幫助。