深度优化sql 查询, 提升性能一百倍是什么概念?
正在做一個軟件設計, 希望有個功能, 然而, 對于加上該功能后對系統性能造成的影響很是擔憂. 可以說是, 一方面想要有這個功能, 另一方面又對性能問題是否能夠解決很懷疑, 正處于猶豫不決狀態.?
?
于是決定進行實驗. 首先對表結構和索引進行了優化, 初步結果還不錯, 性能基本進入可接受的范圍. 然而, 這是面向一個百萬千萬用戶的系統, 所以, 剛好處于邊緣狀態是遠不夠的. 于是, 就借助于Sql Server Management Studio 的execution plan 顯示功能, 對查詢進行了優化. 為此, 在表中自動的插入了一百萬條記錄. 在接下來的一兩個小時內, 寫出了同一個sql查詢功能的4個不同的版本, 居然把性能提高了一百多倍. 心里十分高興.
?
請看下圖中的數據, 注意方框內的數據, 可以看到, 同樣的查詢, 優化程度不同, 有 190倍的執行速度差異.
?
?
下圖是數據庫engine的執行計劃圖:?
?
?大家知道, 數據庫在需要承擔大量用戶的網站軟件中, 對于性能而言, 處于關鍵地位. 為了提高數據庫的性能, 人們作出了多方面的努力, 包括scale up, scale out. ?然而 scale up 通常是很廢錢的, 比如, 一臺16個cpu的服務器, 比一個普通的4核心機器要貴出二十倍以上, 而且scale up的上限也很低, 常常不能滿足要求.? 而scale out, 通常, 要從軟件的架構設計到編程做出一整套的安排, 在開發上會增加成本. 如果能夠根據對數據庫engine的內部算法的深入知識, 對sql 查詢做優化, 達到如此的性能提高, 實在是極其高效的.
轉載于:https://www.cnblogs.com/kakrat/archive/2010/12/29/1921125.html
總結
以上是生活随笔為你收集整理的深度优化sql 查询, 提升性能一百倍是什么概念?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【知识分享】异步调用与多线程的区别
- 下一篇: SCM基础之过程描述