Oracle
我的 blob 儲存在哪裡?
使用甲骨文 11,
儘管已經寫了很多關於 blob 的文章,但有些東西對我來說還不是很清楚。
- 有人告訴我,如果 < 3900,預設情況下 blob 儲存在行中。這是否意味著對於單個表,一些 blob 將儲存在行中,而另一些則不會?
- 有沒有辦法檢查它們是否儲存在行中?
- 如果我設置
ENABLE STORAGE IN ROW
,這是否意味著無論 blob 的大小如何,它將與其他數據保存在同一段中?甲骨文文件說:
“當儲存在給定行中的 LOB 的大小很小,大約 4000 字節或更少,並且您在創建表時顯式指定 ENABLE STORAGE IN ROW 或 LOB 儲存子句時,或者當您未指定此參數時 (這是預設值)。”
終於有東西了
在進一步閱讀文件並進行一些測試後:
- 是的,預設情況下,根據行的大小,一些 blob 將儲存在行中,而另一些則儲存在行外。
- 是的,在此之後,您應該能夠確定它:
當以下任何一種情況適用時,LOB 值將被離線儲存:
* 如果在創建表時為 LOB 儲存子句顯式指定 DISABLE STORAGE IN ROW。 * 如果 LOB 的大小大於大約 4000 字節(4000 減去系統控制資訊),則不管列的 LOB 儲存屬性如何。 * 如果您更新一個離線儲存的 LOB 並且生成的 LOB 小於大約 4000 字節,那麼它仍然是離線儲存的。 當以下任何條件適用時,LOB 值將內聯儲存:
* 當儲存在給定行中的 LOB 的大小很小(大約 4000 字節或更少)並且您在創建表時顯式指定 ENABLE STORAGE IN ROW 或 LOB 儲存子句時,或者當您未指定此參數時(是
預設值)。 * 當 LOB 值為 NULL 時(與列的 LOB 儲存屬性無關)。
- 不,這只是預設選項,當 blob 太大(arpox 3800)時,它將被儲存在行外