合理使用Blob Clob

2021-09-21 22:08:23 字數 1046 閱讀 3990

用了十多年的資料庫,工作需要也經常要幫忙資料庫效能調優。這裡簡單列一些我平時工作時用資料庫的體會和心得:

介紹:

雖然資料庫原生支援blob(二進位製大物件)和clob(字串大物件),但是從效能的考慮,我們把這些內容放在資料庫裡面不合適的。比如說我有1個100多m的(blob),或者說我有一大段文字(clob),這種東西是千萬杜絕放在資料庫中的。原因有3點。(1)加大了資料庫維護和備份的成本。因為這些大資料的存在,使得我們要很多額外空間來進行資料庫備份。(2)是因為資料庫是一種讀快寫慢的系統,這就意味著如果我們要變更這些內容,會非常的不方便。比如我們要在大段文字中加或者改寫內容,我們必須把這段clob刪除後再重新新增。非常費時間。(3)在現在的新系統架構中我們一般都用了分層的思想,比如說,資料庫層,應用層,檔案儲存層,瀏覽器等。而在考慮到系統整體的效能的時候,往往跨越層級的訪問是最大因素。而我們如果吧這些,大段文字都放在資料庫的話,那麼最簡單的訪問都必須要橫跨多層。

解決方法:

一般我們為了處理這種blob,clob的資料,我們常用的解決方法是,我們可以建立乙個檔案伺服器,然後把相應的,或者文字(放在某檔案中),然後把這些和文字放在檔案伺服器上,而在資料庫中儲存的是這些資源或者文字資源的路徑。這樣的好處有3點。(1)讀寫速度提公升。因為 檔案伺服器上的內容是扁平內容,而資料庫系統中的內容是結構化的資料,所以從讀寫效率上來說,對於檔案伺服器內容的讀寫速度要遠遠高於對於資料庫系統的讀寫速度.(2)可維護性提公升。如果我們把這些,文字放在檔案伺服器上,那麼我們非常容易維護。因為我們如果要替換,或者替換文字,我們只要把新的檔案取代原來位置的和文字就可以了,而資料庫中因為儲存的是引用的或者文字的位置,所以我們根本不需要去改那個路徑。這也是一種弱耦合關係。而前面也說了,如果這些內容以lob的形式放在資料庫中的話,就算要做非常微量的改動,也必須刪除原來物件然後建立新物件,這個是非常浪費時間的。(3)無需海量的備份開銷。因為資料庫備份很麻煩,不僅僅要備份內容,還要備份索引等。而檔案系統的備份則無疑是最簡單的硬碟內容的複製,所以開銷很小。

proxool 獲取BLOB CLOB欄位

如果是c3p0的話,可以這樣 method m clob clob null m clob.class.getmethod createtemporary new class object args new object clob clob c3p0proxyconnection conn rawc...

合理使用索引

索引是資料庫中重要的資料結構,它的根本目的就是為了提高查詢效率。現在大多數的資料庫產品都採用ibm最先提出的isam索引結構。索引的使用要恰到好處,其使用原則如下 在經常進行連線,但是沒有指定為外來鍵的列上建立索引,而不經常連線的字段則由優化器自動生成索引。在頻繁進行排序或分組 即進行group b...

合理使用快取

乙個優秀的專案,其中必然使用到了快取機制 乙個 遇到效能瓶頸是,第乙個解決方案一般是使用快取,快取的應用面特別廣,無論是客戶端,還是應用伺服器,或是儲存伺服器。快取一般存放讀寫比價頻繁,變化較少的資料,應用程式讀取資料時先從快取中讀取資料,獲取不到再訪問資料庫,再放到快取中,以便於下次快速獲取。快取...