Phần này cung cấp tổng quan vềkèo bóng đá cúp c2(Kỹ thuật lưu trữ thuộc tính quá khổ).
PostgreSQLSử dụng kích thước trang cố định (thông thường là 8 kb) và không cho phép các bộ dữ kèo bóng đá cúp c2 kéo dài nhiều trang. Do đó, không thể lưu trữ trực tiếp các giá trị trường rất lớn.kèo bóng đá cúp c2(hoặcHồiĐiều tốt nhất kể từ bánh mì cắt látHồi). Thekèo bóng đá cúp c2Cơ sở hạ tầng cũng được sử dụng để cải thiện việc xử lý các giá trị dữ kèo bóng đá cúp c2 lớn trong bộ nhớ.
Chỉ các loại dữ kèo bóng đá cúp c2 nhất định hỗ trợkèo bóng đá cúp c2- Không cần phải áp đặt chi phí cho các loại dữ kèo bóng đá cúp c2 không thể tạo ra các giá trị trường lớn. Để hỗ trợkèo bóng đá cúp c2, một kiểu dữ kèo bóng đá cúp c2 phải có độ dài biến (Varlena) Đại diện, trong đó, thông thường, từ bốn byte đầu tiên của bất kỳ giá trị được lưu trữ nào chứa tổng chiều dài của giá trị trong byte (bao gồm cả chính nó).kèo bóng đá cúp c2Không hạn chế phần còn lại của biểu diễn kiểu dữ kèo bóng đá cúp c2. Các đại diện đặc biệt được gọi chung làkèo bóng đá cúp c2ED giá trịLàm việc bằng cách sửa đổi hoặc giải thích lại từ dài ban đầu này. Do đó, kèo bóng đá cúp c2 chức năng cấp C hỗ trợkèo bóng đá cúp c2-Able Kiểu dữ kèo bóng đá cúp c2 phải cẩn thận về cách chúng xử lý có khả năngkèo bóng đá cúp c2ED Giá trị đầu vào: Một đầu vào có thể không thực sự bao gồm một từ dài bốn byte và nội dung cho đến khi nó đượcDetoasted. (Điều này thường được thực hiện bằng cách gọipg_detoast_datum
Trước khi làm bất cứ điều gì có giá trị đầu vào, nhưng trong một số trường hợp, cách tiếp cận hiệu quả hơn là có thể. Nhìn thấyPhần 37.11.1Để biết thêm chi tiết.)
kèo bóng đá cúp c212413_12603kèo bóng đá cúp c2-Able Kiểu dữ kèo bóng đá cúp c2 thành 1 GB (230- 1 byte). Khi cả hai bit bằng không, giá trị là một un- bình thườngkèo bóng đá cúp c2ED giá trị của kiểu dữ kèo bóng đá cúp c2 và các bit còn lại của từ độ dài cho tổng kích thước mốc (bao gồm từ độ dài) trong byte. Khi bit bậc cao hoặc thứ tự thấp nhất được đặt, giá trị chỉ có tiêu đề một byte đơn thay vì tiêu đề bốn byte thông thường và các bit còn lại của byte đó cho tổng kích thước dữ kèo bóng đá cúp c2 (bao gồm cả byte chiều dài) trong byte.Tranh báo bánh mìđược xác định bởi một mã được lưu trữ trong byte thứ hai của mốc. Cuối cùng, khi bit bậc cao hoặc thứ tự thấp nhất rõ ràng nhưng bit liền kề được đặt, nội dung của mốc đã được nén và phải được giải nén trước khi sử dụng.kèo bóng đá cúp c2Con trỏ nói rằng, thay vào đó.
Như đã đề cập, có nhiều loạikèo bóng đá cúp c2Dữ kèo bóng đá cúp c2 con trỏ. Loại lâu đời nhất và phổ biến nhất là một con trỏ đến dữ kèo bóng đá cúp c2 ngoại tuyến được lưu trữ trong mộtkèo bóng đá cúp c2BảngĐó là tách biệt, nhưng được liên kết với bảng chứakèo bóng đá cúp c2Bản thân dữ kèo bóng đá cúp c2 con trỏ. Những cái nàytrên đĩaDữ kèo bóng đá cúp c2 con trỏ được tạo bởikèo bóng đá cúp c2Mã quản lý (trongTruy cập/Heap/Tuptoaster.C
) Khi một tuple được lưu trữ trên đĩa quá lớn để được lưu trữ. Thông tin chi tiết khác xuất hiện trongPhần 67.2.1. Ngoài ra, Akèo bóng đá cúp c2Datum con trỏ có thể chứa một con trỏ đến dữ kèo bóng đá cúp c2 ngoại tuyến xuất hiện ở nơi khác trong bộ nhớ. Các dữ kèo bóng đá cúp c2 như vậy nhất thiết phải tồn tại trong thời gian ngắn và sẽ không bao giờ xuất hiện trên đĩa, nhưng chúng rất hữu ích để tránh sao chép và xử lý dự phòng các giá trị dữ kèo bóng đá cúp c2 lớn.Phần 67.2.2.
Kỹ thuật nén được sử dụng cho dữ kèo bóng đá cúp c2 nén nội tuyến hoặc ngoại tuyến là một thành viên khá đơn giản và rất nhanh của họ Kỹ thuật nén LZ. Nhìn thấysrc/common/pg_lzcompress.c
Đối với kèo bóng đá cúp c2 chi tiết.
Nếu bất kỳ cột nào của bảng làkèo bóng đá cúp c2-able, bảng sẽ có liên quankèo bóng đá cúp c2Bảng, có OID được lưu trữ trong bảngpg_ class
.reltoastrelid
mục nhập. Trên đĩakèo bóng đá cúp c2ED giá trị được giữ trongkèo bóng đá cúp c2Bảng, như được mô tả chi tiết hơn bên dưới.
kèo bóng đá cúp c2 giá trị ngoại tuyến được chia (sau khi nén nếu được sử dụng) thành kèo bóng đá cúp c2 khối của nhiều nhấttoast_max_chunk_size
Byte (theo mặc định, giá trị này được chọn sao cho bốn hàng chunk sẽ phù hợp trên một trang, làm cho nó khoảng 2000 byte). Mỗi khối được lưu trữ dưới dạng một hàng riêng biệt trongkèo bóng đá cúp c2Bảng thuộc về bảng sở hữu. Mọikèo bóng đá cúp c2Bảng có kèo bóng đá cúp c2 cộtChunk_id
(một oid xác định cụ thểkèo bóng đá cúp c2ED giá trị),Chunk_seq
(số thứ tự cho phần trong giá trị của nó) vàChunk_data
(dữ kèo bóng đá cúp c2 thực tế của khối). Một chỉ mục duy nhất trênChunk_id
vàChunk_seq
Cung cấp nhanh kèo bóng đá cúp c2 giá trị. Datum con trỏ đại diện cho một bộ phận ngoài đườngkèo bóng đá cúp c2ED do đó giá trị cần lưu trữ oid củakèo bóng đá cúp c2Bảng trong đó để xem và oid của giá trị cụ thể (nóChunk_id
). Để thuận tiện, các dữ kèo bóng đá cúp c2 con trỏ cũng lưu trữ kích thước dữ kèo bóng đá cúp c2 logic (độ dài dữ kèo bóng đá cúp c2 không nén ban đầu) và kích thước lưu trữ vật lý (khác nhau nếu nén được áp dụng).kèo bóng đá cúp c2Datum con trỏ do đó là 18 byte bất kể kích thước thực tế của giá trị được biểu thị.
Thekèo bóng đá cúp c2Mã quản lý chỉ được kích hoạt khi giá trị hàng được lưu trữ trong bảng rộng hơntoast_tuple_threshold
byte (thường là 2 kb). Thekèo bóng đá cúp c2Mã sẽ nén và/hoặc di chuyển kèo bóng đá cúp c2 giá trị trường ngoài dòng cho đến khi giá trị hàng ngắn hơntoast_tuple_target
Byte (cũng thường là 2 kb) hoặc không có thêm lợi nhuận nào. Trong một hoạt động cập nhật, kèo bóng đá cúp c2 giá trị của kèo bóng đá cúp c2 trường không thay đổi thường được bảo tồn AS-IS;kèo bóng đá cúp c2Chi phí nếu không có giá trị nào thay đổi.
Thekèo bóng đá cúp c2Mã quản lý nhận ra bốn chiến lược khác nhau để lưu trữkèo bóng đá cúp c2-Able Cột trên đĩa:
trơn
Ngăn chặn lưu trữ nén hoặc ngoài dòng; Hơn nữa, nó vô hiệu hóa việc sử dụng kèo bóng đá cúp c2 tiêu đề đơn cho kèo bóng đá cúp c2 loại varlena.kèo bóng đá cúp c2-Able Kiểu dữ kèo bóng đá cúp c2.
mở rộng
Cho phép cả lưu trữ nén và ngoài dòng. Đây là mặc định cho hầu hếtkèo bóng đá cúp c2-Các loại dữ kèo bóng đá cúp c2 có thể. Nén sẽ được thử trước, sau đó lưu trữ ngoài đường nếu hàng vẫn còn quá lớn.
bên ngoài
Cho phép lưu trữ ngoài hàng nhưng không nén. Sử dụngbên ngoài
Sẽ thực hiện kèo bóng đá cúp c2 hoạt động của Subring trên WideText
vàbytea
19994_20179
chính
Cho phép nén nhưng không lưu trữ ngoài đường. .
mỗikèo bóng đá cúp c2-Able Kiểu dữ kèo bóng đá cúp c2 chỉ định chiến lược mặc định cho các cột thuộc loại dữ kèo bóng đá cúp c2 đó, nhưng chiến lược cho một cột bảng đã cho có thể được thay đổi vớiBảng thay đổi ... Đặt lưu trữ
.
Sơ đồ này có một số lợi thế so với cách tiếp cận đơn giản hơn như cho phép kèo bóng đá cúp c2 giá trị hàng theo kèo bóng đá cúp c2 trang. Giả sử rằng kèo bóng đá cúp c2 truy vấn thường có đủ điều kiện bằng cách so sánh với kèo bóng đá cúp c2 giá trị chính tương đối nhỏ, hầu hết công việc của người thực thi sẽ được thực hiện bằng cách sử dụng mục nhập hàng chính.Postgresql: Tàkèo bóng đá cúp c2 thuộc tính ED sẽ chỉ được rút ra (nếu được chọn ở tất cả) tại thời điểm bộ kết quả được gửi đến máy khách. Do đó, bảng chính nhỏ hơn nhiều và nhiều hàng của nó phù hợp với bộ đệm bộ đệm được chia sẻ hơn là trường hợp mà không có bất kỳ lưu trữ ngoại tuyến nào.kèo bóng đá cúp c2Bảng và bảng chính chỉ chứa khoảng 10% toàn bộ dữ kèo bóng đá cúp c2 (URL và một số trang HTML nhỏ). Không có sự khác biệt về thời gian chạy so với un-kèo bóng đá cúp c2Bảng so sánh ED, trong đó tất cả kèo bóng đá cúp c2 trang HTML được cắt xuống 7 kb để phù hợp.
kèo bóng đá cúp c2Con trỏ có thể trỏ đến dữ kèo bóng đá cúp c2 không có trên đĩa, nhưng ở nơi khác trong bộ nhớ của quy trình máy chủ hiện tại. Những gợi ý như vậy rõ ràng không thể tồn tại lâu, nhưng dù sao chúng cũng hữu ích.gián tiếpDữ kèo bóng đá cúp c2 và con trỏ đếnMở rộngDữ kèo bóng đá cúp c2.
gián tiếpkèo bóng đá cúp c2Con trỏ chỉ đơn giản là chỉ vào một giá trị varlena không xuống cấp được lưu trữ ở đâu đó trong bộ nhớ. Trường hợp này ban đầu được tạo ra chỉ là một bằng chứng về khái niệm, nhưng hiện tại nó được sử dụng trong quá trình giải mã logic để tránh có thể phải tạo các bộ dữ kèo bóng đá cúp c2 vật lý vượt quá 1 GB (khi kéo tất cả các giá trị trường ngoại tuyến vào tuple có thể làm).
Mở rộngkèo bóng đá cúp c2Con trỏ rất hữu ích cho các loại dữ kèo bóng đá cúp c2 phức tạp mà biểu diễn trên đĩa không đặc biệt phù hợp cho các mục đích tính toán. Ví dụ, biểu diễn varlena tiêu chuẩn của APOSTGRESQLMảng bao gồm thông tin về chiều, bitmap nulls Nếu có bất kỳ phần tử null nào, sau đó kèo bóng đá cúp c2 giá trị của tất cả kèo bóng đá cúp c2 phần tử theo thứ tự. Khi chính loại phần tử có độ dài thay đổi, cách duy nhất để tìmn
'phần tử là quét qua tất cả kèo bóng đá cúp c2 phần tử trước. Biểu diễn này phù hợp với lưu trữ trên đĩa vì độ nhỏ gọn của nó, nhưng đối với kèo bóng đá cúp c2 tính toán với mảng, việc có một đẹp hơn nhiềuVangMở rộnghoặcgiải cấu trúcĐại diện trong đó tất cả kèo bóng đá cúp c2 vị trí bắt đầu phần tử đã được xác định. Thekèo bóng đá cúp c2Cơ chế con trỏ hỗ trợ nhu cầu này bằng cách cho phép một dữ kèo bóng đá cúp c2 chuyển qua từng tham chiếu để trỏ đến giá trị varlena tiêu chuẩn (biểu diễn trên đĩa) hoặckèo bóng đá cúp c2Con trỏ trỏ đến một đại diện mở rộng ở đâu đó trong bộ nhớ. Các chi tiết của biểu diễn được mở rộng này tùy thuộc vào kiểu dữ kèo bóng đá cúp c2, mặc dù nó phải có tiêu đề tiêu chuẩn và đáp ứng các yêu cầu API khác được đưa ra trongsrc/bao gồm/elils/expandeddatum.h
. Các chức năng cấp C làm việc với kiểu dữ kèo bóng đá cúp c2 có thể chọn xử lý một trong hai biểu diễn.pg_detoast_datum
Theo đầu vào của họ, sẽ tự động nhận đại diện varlena truyền thống; Vì vậy, hỗ trợ cho một biểu diễn mở rộng có thể được giới thiệu tăng dần, một hàm tại một thời điểm.
kèo bóng đá cúp c2Con trỏ để kèo bóng đá cúp c2 giá trị mở rộng được chia nhỏ thànhRead-Writevàchỉ đọcCon trỏ. Biểu diễn chỉ ra là giống nhau, nhưng một hàm nhận con trỏ đọc-viết được phép sửa đổi giá trị được tham chiếu tại chỗ, trong khi một hàm nhận được một con trỏ chỉ đọc không được;
Đối với tất cả kèo bóng đá cúp c2 loại trong bộ nhớkèo bóng đá cúp c2Con trỏ,kèo bóng đá cúp c2Mã quản lý đảm bảo rằng không có dữ kèo bóng đá cúp c2 con trỏ nào như vậy có thể vô tình được lưu trữ trên đĩa. Trong bộ nhớkèo bóng đá cúp c225898_26026kèo bóng đá cúp c2Con trỏ, nếu phần chứa chứa sẽ quá lớn.