最近要寫一些關於企業級應用的優化內容的東西,就先從資料庫優化入手吧,在這裡先記錄一下。
作為一名有資料庫教育背景的工作人員,我著重從db的角度介紹一下,我認為的db優化方式。
首先,撇開經濟商業用處不談,db效能優化的原則主要是,通過盡可能少的磁碟訪問獲得所需的資料。一般而言,資料的是優化可以從三方面分別進行優化,分別是資料庫設計的優化,索引設計的優化,以及查詢語句的優化。 而優化的主要目的,則是增加吞吐量並減少程式響應時間。
其次,應用程式中db的執行是按照以下的層次進行的:
1. 應用以sql語句(包含plsql)的形式對資料庫發出請求,db對其作出相應,並返回對應的返回碼或結果集;
2. db 在處理請求過程中,要對sql語句進行解析,在執行語句之前,還要完成對其的 安全、排程、事務管理方面的操作,而這些操作就需要cpu和記憶體的支援,也就是發生於os的互動,當然這些請求會受到併發執行的db會話之間爭用的限制;
3.這些請求會完成對db 中部分資料的 建立、查詢或更新操作,而所涉及的資料量 會因db中索引設計的不同而有差異;
4. 而這些被請求處理的語句,如果在記憶體中,則會在記憶體中完成對應的請求操作,再在合適的時間由db程序寫入資料檔案,如果不在記憶體中,則要由程序從資料檔案中讀取到記憶體,再完成上述的操作。然而讀資料塊的過程,就是針對磁碟的io操作
應用程式執行的過程,每上乙個層次都會對下乙個層次有影響,例如,提交的sql語句沒有用到合適的index,就會需要在記憶體中讀取大量的相關資料塊,而大量資料塊的讀取必然會帶來大量的磁碟io,而大量的讀寫程序,就容易會帶來io爭用,就會導致大量的db的等待時間。
所以,我對優化的建議是,透過現象看本質,db某個特定層級上發生的效能問題,可能是由上乙個層級的配置引發的,所以,按照上述的db發生層次進行根本性的調優是我認為可行的方法。因此,我建議的優化步驟如下:
1.對應用中的sql語句進行優化;
2.對db設計進行優化,對資料庫的鎖,快取,記憶體進行合理的設計;
3.對db中的表進行合理的分割槽,索引設計;
4.最後是對磁碟io的優化,例如提供足夠的io頻寬以及使用負載均衡等技術來實現對io的優化
以上是我對企業級應用的一些大致的優化建議。
至於針對本公司具體的做法,就要具體問題具體分析了。
待續....
資料庫效能優化
資料庫設計 實現sql server資料庫的優化,首先要有乙個好的資料庫設計方案。在實際工作中,許多sql server方案往往是由於資料庫設計得不好導致效能很差。實現良好的資料庫設計必須考慮這些問題 1.邏輯資料庫規範化問題 一般來說,邏輯資料庫設計會滿足規範化的前3級標準 第1規範 沒有重複的組...
資料庫效能優化
1 系統設計 1 縱向 橫向分割表,減少表的尺寸 縱向 欄位多。按業務主題分割。根據頁大小。橫向 資料多。按條件分割表。eg 按年儲存表,歷史資料表和當期資料更新表。2 將資料處理交給db,編寫儲存過程 1 減少網路的開銷 2 儲存過程是編譯 優化過,速度快。3 唯讀查詢操作優化方法 1 資料量小的...
資料庫效能優化
1.在join表的時候使用相當型別的例,並將其索引 2.千萬不要 order by rand 3.使用 enum 而不是 varchar 4.永遠為每張表設定乙個id 5.從 procedure analyse 取得建議 6.盡可能的使用 not null 7.固定長度的表會更快 myisam 適合...