關於資料庫優化(開篇)

2021-08-21 07:33:51 字數 1076 閱讀 1285

接觸sql蠻久了,自覺對裡面的優化是最感興趣的,接觸的專案都比較大,很多表都是幾千萬數量級的,同時又要求系統對這些錶能進行高效的讀寫,身邊的同事都比較怕這塊,一有鎖表或者其他優化上的問題大都束手無策,很多時候我只能自己動手解決問題了,也積累一些經驗。這裡寫的很多都是自己的觀點,甚至是猜測和實踐得出的結論,供看官們參考。第一篇是基礎,優化大師們可以跳過啦。

sql 優化的目的其實就是對實現某次查詢或修改的時間更短,這個短說實話是沒有極限的,當某些語句執行的比較頻繁時,1秒的時間都要想辦法去優化,當然筆者的建議一般情況是不要對5秒以下的語句做優化。回到上圖,影響sql語句效率的地方主要有三個。

一、查詢優化器,就是sql自動的去選擇最高效找出結果的方法的工具,這裡就有個誤區,很多人以為這個需要時間麼?其實是要的,sql儘管智慧型,還是需要乙個理解語句,和完成查詢/修改的時間。我的建議是語句寫的通俗易懂,一次查詢關聯的表小於6個,因為查詢優化器可能會產生非常多的預估計畫,n個表關聯,最少需要分析n!次,最多可能達到(2n-2)!/(n-1)!次,從中尋找出最好的那個是非常費時的。還有一點需要說明的是,查詢優化器的結果是找出資源使用最少的,而不是最快的。

二、執行計畫,生成乙個執行計畫是需要耗費時間的,如果裡面的語句能被重用將降低這個時間,這個時候相同的語句中的大小寫保持一致都能提公升效能。否則sql會生成兩個執行計畫。

上圖是執行計畫中,其中紅字部分是預估的查詢行數,如果和最終的結果有很大的出入,說明這裡需要在語句上做優化。

三、i\o,檢視讀寫可以知道我們的語句是否有自身的問題語句前後加入下面這個命令,可以知道到語句對資料庫的讀寫情況

降低讀寫很多時候要和執行計畫做配合,增加好的索引也會降低讀寫,提示速度。

第一篇就先寫這麼多吧,後面會用具體案例展開說明優化的步驟,其實有些方法非常簡單哦。

效能優化(開篇)

效能一直是軟體行業中乙個含糊的名詞,因為很難用特定的標準來衡量。今天我們就來聊聊軟體的效能優化,在某些方面我會提出我目前的解決方案,大家有興趣可以深入研究一下。軟體的效能指標 軟體的效能指標一般包含兩個方面 吞吐量和併發數。1.吞吐量指的是單位時間內傳輸的資料量,吞吐量反應系統的處理能力 2.併發數...

iOS效能優化 開篇

五 為什麼要進行優化摘要 效能優化,簡而言之,就是在不影響系統執行正確性的前提下,使之執行地更快,完成特定功能所需的時間更短。我理解,對於核心業務持續優化,非核心業務遇到瓶頸再進行優化。業務優化 記憶體優化 卡頓優化 布局優化 電量優化 安裝包 啟動優化 網路優化等。1 xcode analyze ...

sql server資料庫優化教程系列 開篇

終於決定自己動手寫乙個了,以前一直是在看別人的文章,也是因為自己的文筆不好,另外也是怕自己被人噴,但是還是鼓足勇氣自己寫上乙個優化系列吧,算是對我這些日子對sql server資料庫優化工作的乙個總結。大體的乙個結構如下 資料庫結構基礎 索引基礎 事務基礎 如何寫好乙個儲存過程 資料庫設計基礎 基於...