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 đá euro53.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ợbánh mì nướng- 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. ĐẾN ủng hộbánh mì nướng, Kiểu dữ kèo bóng đá euro phải có độ 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ị chứa tổng chiều dài kèo bóng đá euro giá trị tính bằng byte (bao gồm cả 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 cấp C Chức năng hỗ trợbánh mì nướng-Able Kiểu dữ kèo bóng đá euro phải cẩn thận để xử lýbánh mì nướngED giá trị đầu vào. (Đ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 Big-endian máy móc, kèo bóng đá euro bit đơn hàng thấp trên máy ít endian), do đó giới hạn kích thước logic của bất kỳ giá trị nào củ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 bit thứ tự cao nhất hoặc thứ tự thấp nhất được đặt, giá trị chỉ có Tiêu đề đơn lẻ thay vì tiêu đề bốn byte bình thường và Các bit còn lại cho tổng kích thước dữ kèo bóng đá euro (bao gồm cả chiều dài byte) trong byte. Như một trường hợp đặc biệt, nếu các bit còn lại là tất cả số không (không thể tự bao gồm một chiều dài), Giá trị là một con trỏ đến dữ kèo bóng đá euro ngoại tuyến được lưu trữ trong một bánh mì nướng riêng bàn. (Kích thước của một con trỏ bánh mì nướng được đưa ra ở byte thứ hai của mốc dữ kèo bóng đá euro.) Các giá trị với các tiêu đề đơn lẻ không được căn chỉnh trên Bất kỳ ranh giới cụ thể, một trong hai. Cuối cùng, khi thứ tự cao nhất hoặc bit bậc thấp nhất 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, các bit còn lại của từ dài Cung cấp tổng kích thước của mốc dữ kèo bóng đá euro nén, không phải bản gốc dữ kèo bóng đá euro. Lưu ý rằng nén cũng 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, 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 là đượ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ả trong Chi tiết hơn bên dưới.

Kỹ thuật nén được sử dụng là khá đơn giản và rất rất đơn giản Thành viên nhanh kèo bóng đá euro gia đình kỹ thuật nén LZ. Nhìn thấysrc/backend/utils/adt/pg_lzcompress.cĐối với kèo bóng đá euro 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) thành kèo bóng đá euro khối của 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 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 trongbánh mì nướngBảng để sở hữu bàn. 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(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 chóng 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 giá trị do đó cần Để lưu trữ oid kèo bóng đá eurobánh mì nướngBảng để xem và oid kèo bóng đá euro giá trị cụ thể (Chunk_id). Để thuận tiện, con trỏ Datums cũng lưu trữ kích thước dữ kèo bóng đá euro logic (ban đầu không nén chiều dài dữ kèo bóng đá euro) và kích thước được lưu trữ thực tế (khác nhau nếu nén áp dụng). Cho phép các byte tiêu đề varlena, tổng kích thước của Abánh mì nướngDatum con trỏ là Do đó, 18 byte bất kể kích thước thực tế kèo bóng đá euro giá trị được đại diện.

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 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 bình 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 phát sinh khôngbánh mì nướngChi phí nếu không có của kèo bóng đá euro giá trị ngoại tuyến thay đổi.

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 Tiêu đề một byte cho kèo bóng đá euro loại varlena. Đây là duy nhất Chiến lược có thể cho kèo bóng đá euro cột không phảibánh mì nướng-Able Kiểu dữ kèo bóng đá euro.

  • mở rộngCho phép cả hai 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 đường Nếu hàng vẫn còn quá lớn.

  • bên ngoàiCho phép vượt quá dòng Lưu trữ nhưng không nén. Sử dụngbên ngoàirộngTextbyteaCột nhanh hơn (tại hình phạt của tăng không gian lưu trữ) 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 hàng 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 sẽ vẫn được thực hiện cho kèo bóng đá euro cột như vậy, nhưng chỉ là nghỉ dưỡng khi không có cách nào khác để làm cho hàng nhỏ đủ.)

mỗibánh mì nướng-Able Kiểu dữ kèo bóng đá euro Chỉ định 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 Cách tiếp cận đơn giản như cho phép kèo bóng đá euro giá trị hàng trang. Giả sử rằng kèo bóng đá euro truy vấn thường có đủ điều kiện bằng cách so sánh chống lại kèo bóng đá euro giá trị quan trọng 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ả là gửi cho khách hàng. Vì vậy, bảng chính nhỏ hơn nhiều và nhiều hơn của các hàng của nó phù hợp với bộ đệm bộ đệm 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ẽ 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 rằng một bảng chứa các trang HTML điển hình và URL của họ là Đượ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à đó là chính bảng chỉ chứa khoảng 10% toàn bộ dữ kèo bóng đá euro (URL và Một số trang HTML nhỏ). Không có sự khác biệt về thời gian chạy so sánh đến một un-bánh mì nướngso sánh ED bảng, trong đó tất cả kèo bóng đá euro trang HTML đã được cắt xuống 7 kb để phù hợp.