資料庫優化是乙個很廣的範圍,涉及到的東西比較多,並且每個特定的資料庫,其具體的優化過程也是不一樣的。
一般情況下,資料庫的優化指的就是查詢效能的優化(雖然嚴格上來說不應該是這樣的),讓資料庫對查詢的響應盡可能的快。僅對資料庫系統本身而言,影響到查詢 效能的因素從理論上來講,包括資料庫引數設定(其實就是通過引數控制資料庫系統的記憶體,i/o,快取,備份等一些管理性的東西),索引,分割槽,sql語 句.資料庫引數設定本身是乙個很複雜的東西,分割槽則主要是針對大資料量的情況下,它分散了資料檔案的分布,減少磁碟競爭,使效率得到提公升。
資料庫優化:
1、 查詢出的資料量過大(可以採用多次查詢,其他的方法降低資料量),盡量採取分頁查詢資料
2、鎖或者死鎖(這也是查詢慢常見的問題,是程式設計的缺陷)
3、返回了不必要的行和列
用or的字句可以分解成多個查詢,並且通過union鏈結多個查詢。它們的速度只與是否使用索引有關,如果查詢需要用到聯合索引,用union all執行的效率更高。
4、如果是使用like進行查詢的話,簡單的使用index是不行的,但是全文索引,耗空間。 like 'a%' 使用索引 like '%a' 不使用索引用 like '%a%' 查詢時,查詢耗時和字段值總長度成正比,所以不能用char型別,而是varchar。對於欄位的值很長的建全文索引。
5、 盡量將資料的處理工作放在伺服器上,減少網路的開銷,如使用儲存過程。儲存過程是編譯、優化過,並且被組織到乙個執行規劃裡,且儲存在資料庫中的sql語句(儲存過程是資料庫伺服器端的一段程式),是控制流語言的集合,速度當然快。
6、將需要查詢的結果預先計算好放在表中,查詢的時候再select。這在sql7.0以前是最重要的手段。例如計算商品購買小計計算。
7、沒有必要時不要用distinct和order by,這些動作可以改在客戶端執行。它們增加了額外的開銷。這同union和union all一樣的道理。
8、一次更新多條記錄比分多次更新每次一條快,就是說批處理好
9、用臨時表,盡量用結果集和table類性的變數來代替它,table 型別的變數比臨時表好
10、資料庫設計:資料庫內所有表結構均新增索引
調整原因:
近日資料庫壓力很大,經查有些大資料量表的查詢速度很慢,導致資料庫伺服器cpu一直持續90%-100%,將這些表新增索引後,cpu很快變正常。
根據查詢條件,建立索引,優化索引、優化訪問方式,限制結果集的資料量。注意填充因子要適當(最好是使用預設值0)。索引應該盡量小,使用位元組數小的列建索引好(參照索引的建立),不要對有限的幾個值的字段建單一索引如性別字段
11、 將大資料表做分庫、分割槽處理:
具體操作如下:
1)、將大資料表與主資料庫分離,單獨新建乙個資料庫,然後將這些表做分割槽;
2)、將資料插入到訊息佇列內,後台利用windows計畫任務執行(5分鐘執行一次)c#控制台程式將訊息佇列內的資料批量(訊息佇列內有50000條記錄,一次性插入到資料表內)插入到相應的資料表內;
調整原因:
例如:使用者訪問日誌,每次使用者訪問乙個頁面的時候我們之前的操作是直接將資料插入資料庫,這樣做對資料庫的訪問及操作太大,嚴重影響其他資料插入、查詢的效率,利用分庫、分割槽、訊息佇列完成此操作的好處是使用者訪問頁面的時候不直接對資料庫操作,而是在訊息佇列內積累一定數量的資料後批量插入資料庫,只執行一次資料庫操作,而且因為資料庫分離的原因,對其他的查詢及插入不會有影響。
剖析資料庫效能調優技術之索引調優
剖析資料庫效能調優技術之索引調優 2008 1 28 9 37 00 by iulu 一 概述 隨著資料庫在各個領域的使用不斷增長,越來越多的應用提出了高效能的要求。資料庫效能調優是知識密集型的學科,需要綜合考慮各種複雜的因素 資料庫緩衝區的大小 索引的建立 語句改寫等等。總之,資料庫效能調優的目的...
資料庫筆記(資料庫操作)
1.windows系統下 資料庫啟動 net start mysql2.連線與斷開伺服器 mysql h 位址 p 埠 u 使用者名稱 p 密碼3.檢視當前資料庫 select database 4.顯示當前時間,使用者名稱,資料庫版本 select now user version 5.建立庫 1...
學習筆記 資料庫
目前internet 上流行的 構架方式是lamp linux apache mysql php 即使用 linux 作為作業系統,apache 作為web 伺服器,mysql 作為資料庫,php作為伺服器端指令碼直譯器 由於這四個軟體都是免費或開放原始碼軟體 floss 因此使用這種方式不用花一分...