2013-04-05 35 views
6

Tôi đang tạo một bảng trong đó tôi đang lưu trữ XML. Để lưu trữ XML tôi đang sử dụng kiểu dữ liệu CLOB. Kích thước tối đa của XML của tôi sẽ là 5kb. Tôi nên xác định kích thước cột CLOB nào khi tạo bảng?Xác định kích thước của CLOB trong Oracle

Trả lời

10

bạn không xác định kích thước chính xác khi đặt dấu mũ (không giống như một varchar). nó chỉ đơn giản là clob.

Kích thước tối đa của thùy là 4Gb.

lưu trữ khôn ngoan nó sẽ sử dụng không gian như sau:

  1. nếu lob được định nghĩa như trong hàng, và lob là ít hơn ~ 4KB, nó sẽ chỉ mất khoảng không gian mà tài liệu Là. (ví dụ: lưu trữ xml 512 byte trong hàng và nó sẽ sử dụng 512 byte.
  2. nếu lob được xác định ngoài hàng (hoặc vượt quá 4kb) thì nó sẽ sử dụng nhiều kích thước "chunk" mà bạn đã xác định khi . tạo bảng

khi tạo một cột lob, bạn có thể chỉ định khoản lưu trữ của mình để kiểm soát và out-of-hàng lựa chọn trong hàng như thế này:

LOB (c) STORE AS lobseg (DISABLE STORAGE IN ROW CHUNK 16384) 

tức đó sẽ xác định rằng lob không bao giờ có thể được lưu trữ nội tuyến với các dữ liệu bảng thông thường, và sẽ phân bổ lưu trữ trong bội số của 16kb mỗi đoạn, vì vậy ngay cả khi tài liệu của bạn là 1kb, nó sẽ mất 16kb sto giận dữ.

nếu tài liệu xml của bạn chỉ 5kb, bạn có thể muốn xem xét lưu trữ trong hàng và đặt một kích thước nhỏ (kích thước tối thiểu là 1 khối, vì vậy nếu bạn có không gian bảng với khoảng cách 4kb, đoạn minumum của bạn kích thước sẽ là 4kb; nếu bạn chỉ định ít hơn, nó sẽ bị bỏ qua). bất lợi của việc cho phép các thùy liên tiếp, là bảng sẽ lớn hơn, do đó, phạm vi quét lớn có thể bị ảnh hưởng một chút (nhưng thu hồi lob nhanh hơn).

Cũng trong 11g, bạn có tùy chọn để nén đoạn đường cong mà bạn có thể muốn xem xét (nếu giấy phép của bạn bao gồm nó). Mặc dù với các tài liệu nhỏ như vậy bạn có thể không được hưởng lợi rất nhiều.

đọc thêm ở đây: http://docs.oracle.com/cd/B28359_01/appdev.111/b28393/adlob_tables.htm

+5

Trong 11g, kích thước tối đa của một LOB là (4 GB - 1) * (DB khối kích thước) mà tác phẩm ra giữa 8 và 128 TB. Không phải là nhiều người cần vượt quá giới hạn 4 GB cũ nhưng bạn có thể. http://docs.oracle.com/cd/B28359_01/server.111/b28320/limits001.htm –

Các vấn đề liên quan