Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / 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 kèo bóng đá euro 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 kèo bóng đá euro phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

kèo bóng đá euro58.2. NƯỚNG

Phần này cung cấp một cái nhìn tổng quan vềbánh mì nướng(Bộ lưu trữ thuộc tính quá khổ Kỹ thuật).

PostgreSQLSử dụng một trang cố định Kích thước (thường là 8 kb) và không cho phép kèo bóng đá euro bộ dữ trang. Do đó, không thể lưu trữ trường rất lớn giá trị trực tiếp. Để khắc phục giới hạn này, kèo bóng đá euro giá trị trường lớn được nén và/hoặc chia thành nhiều hàng vật lý. Cái này xảy ra trong suốt cho người dùng, chỉ có tác động nhỏ đến hầu hết của mã phụ trợ. Kỹ thuật được gọi một cách trìu mến làbánh mì nướng(hoặc"Điều tốt nhất kể từ bánh mì cắt lát").

Chỉ các loại dữ kèo bóng đá euro nhất định hỗ trợ10399_10406- Không cần phải áp đặt chi phí Trên các loại dữ kèo bóng đá euro không thể tạo ra các giá trị trường lớn. Để hỗ trợbánh mì nướng, một kiểu dữ kèo bóng đá euro phải có một độ dài biến (Varlena) Đại diện, trong đó từ 32 bit đầu tiên kèo bóng đá euro bất kỳ giá trị được lưu trữ nào Tổng chiều dài kèo bóng đá euro giá trị tính bằng byte (bao gồm chính nó).bánh mì nướngkhông hạn chế phần còn lại của đại diện. Tất cả kèo bóng đá euro chức năng cấp C hỗ trợbánh mì nướng-Loại dữ kèo bóng đá euro có thể Cẩn thận để xử lýbánh mì nướnged đầu vào giá trị. (Đ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ì với một 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à khả thi.)

bánh mì nướngchiếm đoạt hai bit của Từ dài Varlena (kèo bóng đá euro bit thứ tự cao trên kèo bóng đá euro máy lớn của Big-Endian, kèo bóng đá euro bit đơn hàng thấp trên máy ít endian), do đó hạn chế Kích thước logic của bất kỳ giá trị nào của Abánh mì nướng-Able Kiểu dữ kèo bóng đá euro thành 1 GB (230- 1 byte). Khi cả hai bit bằng không, giá trị là bình thường un-bánh mì nướngED giá trị của dữ kèo bóng đá euro loại và các bit còn lại của từ dài cho tổng số Kích thước dữ kèo bóng đá euro (bao gồm từ dài) trong byte. Khi đặt hàng cao nhất hoặc bit bậc thấp nhất được đặt, giá trị chỉ có tiêu đề một byte thay vì tiêu đề bốn byte bình thường, và các bit còn lại Tổng kích thước dữ kèo bóng đá euro (bao gồm cả byte chiều dài) trong byte. Như một đặc biệt trường hợp, nếu các bit còn lại đều bằng không (điều này là không thể Đối với độ dài tự bao gồm), giá trị là một con trỏ để vượt ra ngoài dòng Dữ kèo bóng đá euro được lưu trữ trong một bảng bánh mì nướng riêng. (Kích thước của một con trỏ bánh mì nướng được đưa ra trong byte thứ hai của mốc dữ kèo bóng đá euro.) Các giá trị có byte đơn Các tiêu đề cũng không được căn chỉnh trên bất kỳ ranh giới cụ thể nào. Cuối cùng, Khi bit thứ tự cao nhất hoặc thứ tự thấp nhất thì rõ ràng nhưng Bit liền kề được đặt, nội dung của mốc dữ kèo bóng đá euro đã được nén và phải được giải nén trước khi sử dụng. Trong trường hợp này, phần còn lại bit của từ dài cho tổng kích thước của nén Datum, không phải dữ kèo bóng đá euro gốc. Lưu ý rằng nén cũng là có thể cho dữ kèo bóng đá euro ngoại tuyến nhưng tiêu đề varlena không cho biết kèo bóng đá euro nó có xảy ra hay không - nội dung của con trỏ bánh mì nướng cho biết điều đó, thay vào đó.

Nếu bất kỳ cột nào kèo bóng đá euro bảng làbánh mì nướng-Able, bảng sẽ có liên quanbánh mì nướngBảng, có OID được lưu trữ trong bảngpg_ class.reltoastrelidmục nhập. Ngoài dòngbánh mì nướngED giá trị được giữ trongbánh mì nướngBảng, như được mô tả chi tiết hơn dưới.

Kỹ thuật nén được sử dụng là khá đơn giản và rất nhanh Thành viên kèo bóng đá euro gia đình kỹ thuật nén LZ. Nhìn thấysrc/backend/utils/adt/pg_lzcompress.ccho chi tiết.

kèo bóng đá euro giá trị ngoại tuyến được chia (sau khi nén nếu được sử dụng) vào nhiều nhất là nhiều nhấttoast_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 với 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 trongbánh mì nướngBảng cho bảng sở hữu. Mọibánh mì nướngBảng có kèo bóng đá euro cộtChunk_id(một oid xác định cụ thểbánh mì nướngED giá trị),Chunk_seq(số thứ tự cho phần Chunk trong giá trị kèo bóng đá euro nó) vàChunk_data(The Dữ kèo bóng đá euro thực tế của khối). Một chỉ mục duy nhất trênChunk_idChunk_seqCung cấp nhanh các giá trị. Một mốc dữ kèo bóng đá euro con trỏ đại diện cho một dòng ngoài dòngbánh mì nướngED do đó giá trị cần lưu trữ OID kèo bóng đá eurobánh mì nướngBảng trong đó Nhìn và oid kèo bóng đá euro giá trị cụ thể ( kèo bóng đá euro nóChunk_id). Để thuận tiện, các mốc dữ kèo bóng đá euro con trỏ cũng Lưu trữ kích thước dữ kèo bóng đá euro logic (chiều dài dữ kèo bóng đá euro không nén ban đầu) và kích thước được lưu trữ thực tế (khác nhau nếu nén được áp dụng). Cho phép các byte tiêu đề varlena, tổng kích thước củabánh mì nướngDatum con trỏ là do đó là 18 byte bất kể kích thước thực tế kèo bóng đá euro đại diện giá trị.

Thebánh mì nướngMã được kích hoạt Chỉ khi một giá trị hàng được lưu trữ trong bảng rộng hơntoast_tuple_thresholdbyte (thường là 2 kb). Thebánh mì nướngMã sẽ nén và/hoặc di chuyển kèo bóng đá euro giá trị trường ngoài dòng cho đến khi giá trị hàng ngắn hơntoast_tuple_targetbyte (cũng bình thường 2 kb) hoặc không có nhiều lợi nhuận có thể có được. Trong một bản cập nhật Hoạt động, kèo bóng đá euro giá trị của kèo bóng đá euro trường không thay đổi thường được bảo tồn AS-IS; Vì vậy, một bản cập nhật của một hàng với kèo bóng đá euro giá trị ngoại tuyến không cóbánh mì nướngChi phí nếu không có Thay đổi giá trị ngoài dòng.

Thebánh mì nướngMã nhận ra Bốn chiến lược khác nhau để lưu trữbánh mì nướng-Able Cột:

  • trơnNgăn chặn nén hoặc Lưu trữ ngoại tuyến; Hơn nữa, nó vô hiệu hóa việc sử dụng một byte đơn Tiêu đề cho kèo bóng đá euro loại varlena. Đây là chiến lược duy nhất có thể cho kèo bóng đá euro cột của khôngbánh mì nướng-Able Data kèo bóng đá euro loại.

  • mở rộngCho phép cả nén và Lưu trữ ngoại tuyến. Đây là mặc định cho hầu hếtbánh mì nướng-Các loại dữ kèo bóng đá euro có thể. Nén sẽ được Đã thử trước, sau đó lưu trữ ngoài hàng nếu hàng vẫn còn to lớn.

  • bên ngoàicho phép lưu trữ ngoại tuyến nhưng không nén. Sử dụngbên ngoàisẽ thực hiện kèo bóng đá euro 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) bởi vì kèo bóng đá euro hoạt động này được tối ưu hóa để Chỉ tìm nạp kèo bóng đá euro phần yêu cầu của giá trị ngoại tuyến khi nó không được nén.

  • chínhCho phép nén nhưng không Lưu trữ ngoại tuyến. (Trên thực tế, lưu trữ ngoại tuyến vẫn sẽ thực hiện cho kèo bóng đá euro cột như vậy, nhưng chỉ là phương sách cuối cùng khi có Không có cách nào khác để làm cho hàng đủ nhỏ để phù hợp trên một trang.)

mỗibánh mì nướng-Loại dữ kèo bóng đá euro có thể Chỉ định một chiến lược mặc định cho các cột thuộc loại dữ kèo bóng đá euro đó, nhưng Chiến lược cho một cột bảng đã cho có thể được thay đổi bằngBộ lưu trữ bộ thay đổi.

Chương trình này có một số lợi thế so với nhiều hơn Cách tiếp cận đơn giản như cho phép kèo bóng đá euro giá trị hàng theo kèo bóng đá euro trang. Giả sử rằng kèo bóng đá euro truy vấn thường đủ điều kiện bằng cách so sánh với kèo bóng đá euro giá trị chính tương đối nhỏ, hầu hết kèo bóng đá euro 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 chính. kèo bóng đá euro giá trị lớn củabánh mì nướngthuộ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. Bộ sắp xếp cũng thu hẹp, và các loại sẽ nhiều hơn thường được thực hiện hoàn toàn trong bộ nhớ. Một bài kiểm tra nhỏ cho thấy một bảng chứa các trang HTML điển hình và URL của họ được lưu trữ trong khoảng Một nửa kích thước dữ kèo bóng đá euro thô bao gồmbánh mì nướngBảng và bảng chính chứa chỉ khoảng 10% toàn bộ dữ kèo bóng đá euro (URL và một số HTML nhỏ trang). Không có sự khác biệt về thời gian chạy so với một un-bánh mì nướngBảng so sánh ED, trong trong đó tất cả kèo bóng đá euro trang HTML đã được cắt giảm xuống còn 7 kb để phù hợp.