【ITOO】--SQL資料庫優化:切割、資料庫連線池

ZeroWM發表於2015-07-05

  上篇講到了考試過程中,開發人員需要關注cpu和記憶體。sql日誌也不容忽視,sql日誌中顯示了資料庫作業系統的報錯日誌,給排錯提供了很大的便利。
  考試的資料庫中寫入了一些監聽死鎖和當前最耗資源語句的SQL語句。可以及時的監控死鎖和了解當前考試進行到哪一步,是抽題,還是答題,還是交卷。
  其中,聽到了兩個詞:切割、資料庫連線池。
  後來查了一下,發現這兩種方法都可以從不同的程度上對資料庫的效能進行優化。

一、切割

   橫向切割:
   就是把行分類,常用的兩種是按照時間、索引劃分。時間劃分:比如5年的歷史資料,根據二八定律,1年的資料可能就足夠滿足大部分的業務需求,所以單獨的把1年的資料拿出。這樣查詢起來效率會更高。索引劃分:比如部門編號,各個車間只儲存自己車間的零件資訊,把各個車間的資訊分成單獨的表更加方便查詢。
  
   縱向切割:
   就是所謂的列切割。大資料的時候,列的個數直接影響到存取效果。

   例項分割:
   就是把共同的業務部分抽象,分別儲存在不同的資料庫中。例如賬戶資料庫(儲存使用者資訊)、日誌資料庫(儲存監測資料)……
  
   例項物理儲存分割:
   大資料的時候,放到不同的伺服器上統計資訊,可以通過分散式計算,大大提高運算速度。

二、資料庫連線池

  顧名思義,就是盛放資料庫連線的池子,擁有分配、管理、釋放資料庫連線的能力。
  這裡寫圖片描述

  具體就是初始化的時候,建立一定量的資料庫連線放到連線池中,使用者訪問資料庫的時候,無需建立新的連線,直接從連線池中拿就可以了,用完了再放回去。就像公共汽車似的,下車了,別人還可以接著來。30個座位,肯定能保證2個人在用,汽車司機和售票員,這個是最小連線數;來50個人,車只能放下30個,30就是最大連線數。剩下的幾個人就只能排隊等下一班車了。
  
  好處:
  資料庫連線是一種關鍵的昂貴的有效的資源,資料庫連線池增加了系統的伸縮性和健壯性。很少改動,就可以實現高吞吐量和低延遲和高效能。釋放時間>最大空閒時間,容易造成資料庫連線遺漏,連線池的接力賽很好的避免了這一問題。

三、總結

  學習就是把理論應用於實踐,希望以後做系統能把自己學到的理論知識很好的應用到實踐當中,加油!

相關文章