Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển:Devel
Phiên bản không được hỗ trợ:12/11/10/9.6/9.5/9.4/9.3/9.2/9.1/9.0/8.4/8.3/8.2/8.1/8.0
Tài tỷ lệ kèo bóng đá này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong tỷ lệ kèo bóng đá phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

tỷ lệ kèo bóng đá65.2. NƯỚNG

Phần này cung cấp một cái nhìn tổng quan vềtỷ lệ kèo bóng đá(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ữ tỷ lệ kèo bóng đá 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.tỷ lệ kèo bóng đá(hoặc"Điều tốt nhất kể từ bánh mì cắt lát"). Thetỷ lệ kèo bóng đáCơ sở hạ tầng cũng được sử dụng để cải thiện việc xử lý các giá trị dữ tỷ lệ kèo bóng đá lớn trong bộ nhớ.

Chỉ các loại dữ tỷ lệ kèo bóng đá nhất định hỗ trợtỷ lệ kèo bóng đá- Không cần phải áp đặt chi phí cho các loại dữ tỷ lệ kèo bóng đá không thể tạo ra các giá trị trường lớn. Để hỗ trợtỷ lệ kèo bóng đá, một kiểu dữ tỷ lệ kèo bóng đá 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ó).tỷ lệ kèo bóng đáKhông ràng buộc phần còn lại của biểu diễn của kiểu dữ tỷ lệ kèo bóng đá. Các đại diện đặc biệt được gọi chung làtỷ lệ kèo bóng đáED 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 đó, tỷ lệ kèo bóng đá chức năng cấp C hỗ trợtỷ lệ kèo bóng đá-Able Kiểu dữ tỷ lệ kèo bóng đá phải cẩn thận về cách chúng xử lý có khả năngtỷ lệ kèo bóng đáED Giá trị đầu vào: Một đầu vào có thể không thực sự bao gồm một từ và nội dung dài bốn byte cho đến khi nó đượcDetoasted. (Điều này thường được thực hiện bằng cách gọipg_detoast_datumTrướ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 36.11.1Để biết thêm chi tiết.)

tỷ lệ kèo bóng đáXử lý hai bit của từ dài varlena (tỷ lệ kèo bóng đá bit bậc cao trên tỷ lệ kèo bóng đá máy lớn, tỷ lệ kèo bóng đá bit bậc thấp trên tỷ lệ kèo bóng đá máy Little-endian), do đó giới hạn kích thước logic của bất kỳ giá trị nào củatỷ lệ kèo bóng đá-Amable Kiểu dữ tỷ lệ kèo bóng đá thành 1 GB (230- 1 byte). Khi cả hai bit bằng không, giá trị là một un- bình thườngtỷ lệ kèo bóng đáED giá trị của kiểu dữ tỷ lệ kèo bóng đá và các bit còn lại của từ dài cho tổng kích thước dữ tỷ lệ kèo bóng đá (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ữ tỷ lệ kèo bóng đá (bao gồm cả byte chiều dài) trong byte.Con trỏ tỷ lệ kèo bóng đáđượ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.tỷ lệ kèo bóng đáCon trỏ nói rằng, thay vào đó.

Như đã đề cập, có nhiều loạitỷ lệ kèo bóng đáDữ tỷ lệ kèo bóng đá con trỏ. Loại lâu đời nhất và phổ biến nhất là một con trỏ đến dữ tỷ lệ kèo bóng đá ngoại tuyến được lưu trữ trong mộttỷ lệ kèo bóng đáBảngĐó là tách biệt, nhưng được liên kết với bảng chứatỷ lệ kèo bóng đáBản thân dữ tỷ lệ kèo bóng đá con trỏ. Những cái nàytrên đĩaDữ tỷ lệ kèo bóng đá con trỏ được tạo bởitỷ lệ kèo bóng đáMã quản lý (trongAccess/Heap/Tuptoaster.C) Khi một tuple được lưu trữ trên đĩa quá lớn để được lưu trữ AS-IS. Thông tin chi tiết khác xuất hiện trongPhần 65.2.1. Ngoài ra, Atỷ lệ kèo bóng đáDatum con trỏ có thể chứa một con trỏ đến dữ tỷ lệ kèo bóng đá ngoại tuyến xuất hiện ở nơi khác trong bộ nhớ. Các dữ tỷ lệ kèo bóng đá 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ữ tỷ lệ kèo bóng đá lớn.Phần 65.2.2.

Kỹ thuật nén được sử dụng cho dữ tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá chi tiết.

65.2.1. Bộ lưu trữ tỷ lệ kèo bóng đá ngoài đường, ngoài đĩa

Nếu bất kỳ cột nào của bảng làtỷ lệ kèo bóng đá-Able, bảng sẽ có liên quantỷ lệ kèo bóng đáBảng, có OID được lưu trữ trong bảngpg_ class.reltoastrelidmục nhập. Trên đĩatỷ lệ kèo bóng đáED giá trị được giữ trongtỷ lệ kèo bóng đáBảng, như được mô tả chi tiết hơn bên dưới.

tỷ lệ kèo bóng đá giá trị ngoại tuyến được chia (sau khi nén nếu được sử dụng) thành tỷ lệ kèo bóng đá khối của tối đatoast_max_chunk_sizeByte (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 trongtỷ lệ kèo bóng đáBảng thuộc về bảng sở hữu. Mọitỷ lệ kèo bóng đáBảng có tỷ lệ kèo bóng đá cộtChunk_id(OID xác định cụ thểtỷ lệ kèo bóng đáED giá trị),Chunk_seq(số trình tự cho phần trong giá trị của nó) vàChunk_data(dữ tỷ lệ kèo bóng đá thực tế của khối). Một chỉ mục duy nhất trênChunk_idChunk_seqCung cấp nhanh tỷ lệ kèo bóng đá giá trị. Datum con trỏ đại diện cho một bộ phận ngoài đườngtỷ lệ kèo bóng đáED Do đó, giá trị cần lưu trữ oid củatỷ lệ kèo bóng đáBảng để xem và oid của giá trị cụ thể (Chunk_id). Để thuận tiện, các dữ tỷ lệ kèo bóng đá con trỏ cũng lưu trữ kích thước mốc dữ tỷ lệ kèo bóng đá logic (độ dài dữ tỷ lệ kèo bóng đá không nén ban đầu) và kích thước được lưu trữ vật lý (khác nhau nếu nén được áp dụng).tỷ lệ kèo bóng đáDatum con trỏ là 18 byte bất kể kích thước thực tế của giá trị được biểu thị.

Thetỷ lệ kèo bóng đáMã 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_thresholdbyte (thường là 2 kb). Thetỷ lệ kèo bóng đáMã sẽ nén và/hoặc di chuyển tỷ lệ kèo bóng đá giá trị trường ngoài dòng cho đến khi giá trị hàng ngắn hơntoast_tuple_targetByte (cũng thường là 2 kb) hoặc không có nhiều lợi nhuận hơn. Trong một hoạt động cập nhật, tỷ lệ kèo bóng đá giá trị của tỷ lệ kèo bóng đá trường không thay đổi thường được bảo tồn AS-IS;tỷ lệ kèo bóng đáChi phí nếu không có giá trị nào thay đổi.

Thetỷ lệ kèo bóng đáMã quản lý nhận ra bốn chiến lược khác nhau để lưu trữtỷ lệ kèo bóng đá-Able Cột trên đĩa:

  • trơnNgă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 tỷ lệ kèo bóng đá tiêu đề đơn cho tỷ lệ kèo bóng đá loại varlena.tỷ lệ kèo bóng đá-Able Kiểu dữ tỷ lệ kèo bóng đá.

  • mở rộngCho phép cả lưu trữ nén và ngoài dòng. Đây là mặc định cho hầu hếttỷ lệ kèo bóng đá-Các loại dữ tỷ lệ kèo bóng đá 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àiCho phép lưu trữ ngoài hàng nhưng không nén. Sử dụngbên ngoàiSẽ thực hiện tỷ lệ kèo bóng đá hoạt động của Subring trên WideTextbyteaCột nhanh hơn (tại hình phạt của không gian lưu trữ tăng) vì tỷ lệ kèo bóng đá hoạt động này được tối ưu hóa để chỉ tìm nạp tỷ lệ kèo bóng đá phần cần thiết của giá trị ngoài đường khi nó không được nén.

  • chínhCho phép nén nhưng không lưu trữ ngoài đường. .

mỗitỷ lệ kèo bóng đá-Loại dữ tỷ lệ kèo bóng đá có thể chỉ định một chiến lược mặc định cho các cột thuộc loại dữ tỷ lệ kèo bóng đá đó, nhưng chiến lược cho một cột bảng đã cho có thể được thay đổi vớiBộ lưu trữ bộ thay đổi.

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 tỷ lệ kèo bóng đá giá trị hàng để tỷ lệ kèo bóng đá trang. Giả sử rằng tỷ lệ kèo bóng đá truy vấn thường có đủ điều kiện bằng cách so sánh với tỷ lệ kèo bóng đá 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.tỷ lệ kèo bóng đátỷ lệ kèo bóng đá 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.tỷ lệ kèo bóng đáBảng và bảng chính chỉ chứa khoảng 10% toàn bộ dữ tỷ lệ kèo bóng đá (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-tỷ lệ kèo bóng đáBảng so sánh ED, trong đó tất cả tỷ lệ kèo bóng đá trang HTML được cắt xuống 7 kb để phù hợp.

65.2.2. Lưu trữ tỷ lệ kèo bóng đá bên ngoài, trong bộ nhớ

tỷ lệ kèo bóng đáCon trỏ có thể trỏ đến dữ tỷ lệ kèo bóng đá 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ữ tỷ lệ kèo bóng đá và con trỏ đếnMở rộngDữ tỷ lệ kèo bóng đá.

gián tiếptỷ lệ kèo bóng đáCon 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ữ tỷ lệ kèo bóng đá 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ộngtỷ lệ kèo bóng đáCon trỏ rất hữu ích cho các loại dữ tỷ lệ kèo bóng đá 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 đó tỷ lệ kèo bóng đá giá trị của tất cả tỷ lệ kèo bóng đá 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ả tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá tính toán với mảng, việc có một đẹp hơn nhiều"Mở rộng"hoặc"đã giải mã"Đại diện trong đó tất cả tỷ lệ kèo bóng đá vị trí bắt đầu phần tử đã được xác định. Thetỷ lệ kèo bóng đá22721_22877tỷ lệ kèo bóng đáCon 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ữ tỷ lệ kèo bóng đá, 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/Utils/ExpandedDatum.h. Các chức năng cấp C làm việc với kiểu dữ tỷ lệ kèo bóng đá có thể chọn xử lý một trong hai biểu diễn.pg_detoast_datumĐối với đầ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.

tỷ lệ kèo bóng đáCon trỏ để tỷ lệ kèo bóng đá giá trị mở rộng được chia nhỏ thànhRead-WriteChỉ đọ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ả tỷ lệ kèo bóng đá loại trong bộ nhớtỷ lệ kèo bóng đáCon trỏ,tỷ lệ kèo bóng đáMã quản lý đảm bảo rằng không có dữ tỷ lệ kèo bóng đá con trỏ nào như vậy có thể vô tình được lưu trữ trên đĩa. Trong bộ nhớtỷ lệ kèo bóng đá24486_24614tỷ lệ kèo bóng đáCon trỏ, nếu phần chứa chứa sẽ quá lớn.