Postgresql 8.1.23 Tài kèo bóng đá hom nay | ||||
---|---|---|---|---|
prev | Backward nhanh | Chương 50. Cơ sở dữ kèo bóng đá hom nay lưu trữ vật lý | Chuyển tiếp nhanh | Tiếp theo |
Phần này cung cấp tổng quan vềbánh mì nướng(Bộ lưu trữ thuộc tính quá khổ Kỹ thuật).
kể từPostgreSQLSử dụng một cố định Kích thước trang (thường là 8kb) và không cho phép kèo bóng đá hom nay bộ dữ Nhiều trang, không thể lưu trữ trường rất lớn giá trị trực tiếp. TrướcPostgreSQL7.1 Có giới hạn cứng của Chỉ dưới một trang trên tổng số lượng dữ kèo bóng đá hom nay có thể được đặt thành một hàng bảng. Trong phiên bản 7.1 trở lên, giới hạn này là khắc phục bằng cách cho phép các giá trị trường lớn được nén và/hoặc chia thành nhiều hàng vật lý. Điều này xảy ra trong suốt Đối với người dùng, chỉ có tác động nhỏ đến hầu hết các 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ừ khi bánh mì cắt lát ").
Chỉ các loại dữ kèo bóng đá hom nay 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 đá hom nay 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 đá hom nay
phải có độ dài biến (Varlena)
Đại diện, trong đó từ 32 bit đầu tiên của bất kỳ
Giá trị chứa tổng chiều dài của 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 đá hom nay cấp C
Chức năng hỗ trợbánh mì nướng-Loại dữ kèo bóng đá hom nay có thể 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_datum
Trước khi làm bất cứ điều gì với kèo bóng đá hom nay
giá trị đầu vào, nhưng trong kèo bóng đá hom nay 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 thứ tự cao Hai bit của từ dài varlena, do đó giới hạn logic Kích thước của bất kỳ giá trị nào của11872_11879-Able Kiểu dữ kèo bóng đá hom nay thành 1GB (23011925_11997bánh mì nướngED giá trị của dữ kèo bóng đá hom nay kiểu. Một trong những bit này, nếu được đặt, chỉ ra rằng giá trị có đã bị nén và phải được giải nén trước khi sử dụng. Cái khác bit, nếu được đặt, chỉ ra rằng giá trị đã được lưu trữ ngoài dòng. Trong trường hợp này, phần còn lại của giá trị thực sự là Chỉ là một con trỏ, và dữ kèo bóng đá hom nay chính xác phải được tìm thấy ở nơi khác. Khi cả hai bit được đặt, dữ kèo bóng đá hom nay ngoại tuyến đã được nén cũng vậy. Trong mỗi trường hợp, độ dài trong các bit bậc thấp của varlena Word cho biết kích thước thực tế của mốc dữ kèo bóng đá hom nay, không phải kích thước của giá trị logic sẽ được trích xuất bằng cách giải nén hoặc tìm nạp dữ kèo bóng đá hom nay ngoại tuyến.
Nếu bất kỳ cột nào của bảng làbánh mì nướng-Able, bảng sẽ có liên quanbánh mì nướng12845_12892pg_ 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.
13160_13285src/backend/utils/adt/pg_lzcompress.cĐối với kèo bóng đá hom nay chi tiết.
kèo bóng đá hom nay giá trị ngoại tuyến được chia (sau khi nén nếu được sử dụng) thành kèo bóng đá hom nay khối của nhiều nhấttoast_max_chunk_sizebyte (giá trị này là kèo bóng đá hom nay chút ít hơnBLCKSZ/4, hoặc khoảng 2000 byte Theo mặc định). Mỗi khối được lưu trữ dưới dạng kèo bóng đá hom nay hàng riêng biệt trongbánh mì nướngBảng để sở hữu bàn. Mọibánh mì nướng13786_13813Chunk_id(kèo bóng đá hom nay 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ị của nó) vàChunk_data(dữ kèo bóng đá hom nay thực tế của khối). Một chỉ mục duy nhất trênChunk_idvàChunk_seqcung cấp nhanh chóng giá trị. Một mốc dữ kèo bóng đá hom nay 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 củabánh mì nướngBảng để xem và oid của 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 đá hom nay logic (ban đầu không nén chiều dài dữ kèo bóng đá hom nay) 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 từ tiêu đề varlena, tổng kích thước của Mộtbánh mì nướngDatum con trỏ là do đó 20 byte bất kể kích thước thực tế của giá trị được đại diện.
Thebánh mì nướngMã được kích hoạt Chỉ khi kèo bóng đá hom nay giá trị hàng được lưu trữ trong bảng rộng hơnBLCKSZ/4byte (thường là 2kb). Thebánh mì nướngMã sẽ nén và/hoặc di chuyển kèo bóng đá hom nay giá trị trường ngoài đường cho đến khi giá trị hàng ngắn hơnBLCKSZ/4byte hoặc không còn nữa Lợi nhuận có thể có. Trong một hoạt động cập nhật, kèo bóng đá hom nay giá trị không thay đổi kèo bóng đá hom nay lĩnh vực 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 đá hom nay giá trị ngoài dòng phát sinh khôngbánh mì nướngChi phí nếu không có giá trị nào trong số kèo bóng đá hom nay 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. Đây là chiến lược duy nhất có thể cho kèo bóng đá hom nay cột không phảibánh mì nướng-Able Kiểu dữ kèo bóng đá hom nay.
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ướng16168_16290
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ộngTextvàbyteaCột nhanh hơn (tại hình phạt tăng lên không gian lưu trữ) bởi vì kèo bóng đá hom nay hoạt động này được tối ưu hóa để Chỉ tìm nạp kèo bóng đá hom nay 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 đá hom nay 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 đá hom nay Chỉ định chiến lược mặc định cho các cột thuộc loại dữ kèo bóng đá hom nay đó, 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 đá hom nay giá trị hàng trang. Giả sử rằng kèo bóng đá hom nay 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 đá hom nay giá trị quan trọng tương đối nhỏ, hầu hết kèo bóng đá hom nay 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 đá hom nay 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 đá hom nay 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 đá hom nay (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 đá hom nay trang HTML đã được cắt xuống 7kb để phù hợp.