Oracle中的LOB欄位解讀

2021-10-10 21:38:16 字數 1174 閱讀 7183

lob欄位是oracle資料庫用於儲存大資料物件的字段型別,包括blob、clob、nlob、bfile;

當lob欄位大小超過4k時,資料庫會單獨為該lob欄位分配額外的blob segments儲存blob物件,儲存在lobsegment中的lob預設不在緩衝區快取,對於lob的讀寫都是物理io,代價非常高,所以對於大於4kb的lob欄位更新效率非常低;

被刪除或更新的blob欄位所占用空間不會自動批量**,當所在表有大量的刪除、更新操作時,blob所在segments會迅速耗盡空間,新的insert需要空間時,會在高水位線上加鎖後,**曾使用但已經過期的blob空間,由於該操作效率很低,此時資料庫就會有大量的『enq:hw – contention』等待,相關sql會由於該等待而序列執行,業務受影響十分嚴重。因此lob欄位不適合在有大批量刪除、更新操作的併發場合使用;

為避免由於lob該特性造成的的風險,對lob欄位的使用應遵循如下要求:

1.儲存在lobsegment中的lob可以在定義的時候指定使用cache(預設是nocache),這對於中等大小的lob(比如幾k~幾十k)很有效果,減少物理io

2. 有大批量刪除、更新操作,而且有併發插入的表中,建議不要使用lob欄位,比如日誌表。可以使用多個varchar(4000)字段進行拼接來代替;

3. 使用lob欄位時,為lob欄位手工單獨指定和表所在表空間不同的表空間;

4. 版本11g使用lob欄位時,建議使用securefile(預設basefile),如果單條記錄顯著大於block size,使用compress選項。

5. 將資料儲存到檔案系統中,資料庫欄位中儲存檔案位址,這種方法好像和bfile差不多;

1. 對於大容量不經常更新的lob除採用上面的解決辦法外,還有什麼好的方法;

2. 對於大容量的超過4000位元組的文字,如果需要經常更新(如:發表文章,帖子後需要修改),採用什麼解決方案比較好;

3. 單個字段大容量資訊儲存大家有些什麼好的方法;

ORACLE中LOB欄位的使用和維護

隨著社會的發展,在現代資訊系統的開發中,需要儲存的已不僅僅是簡單的文字資訊,同時還包括一些和音像資料或者是超長的文字。比如開發一套旅遊資訊系統,每乙個景點都有豐富的 音像資料和大量的文字介紹。這就要求後台資料庫要有儲存這些資料的能力。oracle公司在其oracle8i中通過提供lob欄位實現了該功...

jdbc操縱Oracle資料庫lob欄位

在oracle資料庫中,lob large object,大型物件 型別的字段使用的頻率越來越高了。因為這種型別的字段,容量大 最多能容納4gb的資料 且乙個表中可以有多個這種型別的字段,很靈活,適用於資料量非常大的業務領域 如圖象 檔案等 而long long raw等型別的字段,雖然儲存容量也不...

Oracle 使用外部表匯入含有LOB欄位的資料

假設,你需要將某個路徑下的全部檔案txt檔案匯入資料庫,並保留對應的檔名。外部檔案中lob欄位的位置,應該存放檔名。for n in ls txt do echo n n done test load.txt 兩邊不要留空,否則外部表讀取檔案時會報錯,說找不到該檔案 cat test.txt q10...