簡單的目的:執行更快,響應更快,吞吐量更大
不過目標太泛,不夠具體,所以我們需要根據精細的問題定位去調優。通常是以下幾種:
資料庫調優不僅有sql,部署、配置、架構也很重要
1. 選擇合適dbms
對事務效能和安全要求比較高,選擇商業資料庫如sqlserver,mysql有很多儲存引擎,innodb善於事務處理,myisam反之。nosql中有使用不同場景的資料庫,列式儲存降低系統i/o,可用在分布式檔案系統和olap,但資料頻繁增刪改就不適用了。
2. 優化表設計
表結構盡量遵循第三正規化原則,查詢比較多可以用反正規化,表字段的資料型別選擇
3. 優化邏輯查詢
改變sql語句內容讓執行效率更高效。sql 的查詢重寫包括了子查詢優化、等價謂詞重寫、檢視重寫、條件簡化、連線消除和巢狀連線消除等。
4.優化物理查詢(索引優化)
將邏輯查詢的內容變成可以被執行的物理操作符。核心是建立高效索引。考慮建立索引的各種問題,並且通過計算找到最優訪問路徑,尋找代價最小的執行計畫
5. 使用redis和memcached作為快取
請求外援提公升查詢效率,將常用資料直接放到記憶體中,提公升效率。鍵值儲存資料庫可以把資料存到記憶體中,redis支援持久化且支援的資料結構多,memcached不支援,看實際情況使用
6. 庫級優化
從資料庫維度進行優化策略,例如控制表的數量,採用主從架構優化我們的讀寫策略。對資料庫分庫分表,減少單一資料庫伺服器的訪問壓力,mysql自帶分割槽表功能,垂直切分和水平切分,採用垂直分表的形式,就是將一張資料表分拆成多張表,採用水平拆分的方式,就是將單張資料量大的表按照某個屬性維度分成不同的小表。
選擇好dbms和資料表的設計方式,sql查詢優化,實在不行,找外援
引入一句不錯的話:先選擇好的裝備,再選擇好的作戰路線,必要時請外援
SQL資料庫調優
sql調優的方法 1.1 減少資料的訪問 1 建立並使用正確的索引 2 只通過索引訪問資料 3 優化sql執行計畫 1.2 返回更少的資料 1 資料分頁處理 2 只返回需要的字段 1.3 減少互動的次數 1 batch dml 2 in list 3 設定fetch size 4 使用儲存過程 5 ...
資料庫調優教程 優化sql語句
上一章講了如何設計一張好的表,一張好的表自然需要好的sql語句去操作它。本章就來聊聊如何優化sql語句。1.sql語句優化原則 優化需要優化的query 定位優化物件效能瓶頸 從explain入手 盡可能在索引中完成排序 只取自己需要的column 盡可能避免複雜的join和子查詢 2.優化limi...
資料庫效能調優 三
影響資料庫效能的主要因素 伺服器硬體的因素 伺服器數量 記憶體 cpu 磁碟 cpu 單台雙cpu 磁碟 高轉速 越高越高,1w以上 硬碟的插槽支援雙通道,記憶體型號一樣.網路環境 盡可能組建分布式的平台,使用raid 資料庫設計 資料查詢 伺服器硬體及網路的建議 增加伺服器的數量,組建分布式平台 ...