SQL資料庫最佳化:切割、資料庫連接池--【考試系統】,sql資料庫連接
上篇講到了考試過程中,開發人員需要關注cpu和記憶體。sql日誌也不容忽視,sql日誌中顯示了資料庫作業系統的報錯日誌,給排錯提供了很大的便利。
考試的資料庫中寫入了一些監聽死結和當前最耗資源語句的SQL語句。可以及時的監控死結和瞭解當前考試進行到哪一步,是抽題,還是答題,還是交卷。
其中,聽到了兩個詞:切割、資料庫連接池。
後來查了一下,發現這兩種方法都可以從不同的程度上對資料庫的效能進行最佳化。
一、切割
橫向切割:
就是把行分類,常用的兩種是按照時間、索引劃分。時間劃分:比如5年的曆史資料,根據二八定律,1年的資料可能就足夠滿足大部分的業務需求,所以單獨的把1年的資料拿出。這樣查詢起來效率會更高。索引劃分:比如部門編號,各個車間只儲存自己車間的零件資訊,把各個車間的資訊分成單獨的表更加方便查詢。
縱向切割:
就是所謂的列切割。大資料的時候,列的個數直接影響到存取效果。
執行個體分割:
就是把共同的業務部分抽象,分別儲存在不同的資料庫中。例如賬戶資料庫(儲存使用者資訊)、日誌資料庫(儲存監測資料)……
執行個體實體儲存體分割:
大資料的時候,放到不同的伺服器上統計資訊,可以通過分散式運算,大大提高運算速度。
二、資料庫連接池
顧名思義,就是盛放資料庫連接的池子,擁有分配、管理、釋放資料庫連接的能力。
具體就是初始化的時候,建立一定量的資料庫連接放到串連池中,使用者訪問資料庫的時候,無需建立新的串連,直接從串連池中拿就可以了,用完了再放回去。就像公用汽車似的,下車了,別人還可以接著來。30個座位,肯定能保證2個人在用,汽車司機和售票員,這個是最小串連數;來50個人,車只能放下30個,30就是最大串連數。剩下的幾個人就只能排隊等下一班車了。
好處:
資料庫連接是一種關鍵的昂貴的有效資源,資料庫連接池增加了系統的伸縮性和健壯性。很少改動,就可以實現高輸送量和低延遲和高效能。釋放時間>最大空閑時間,容易造成資料庫連接遺漏,串連池的接力賽很好的避免了這一問題。
三、總結
學習就是把理論應用於實踐,希望以後做系統能把自己學到的理論知識很好的應用到實踐當中,加油!
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。