Phiên bản kèo bóng đá cúp c2 được hỗ trợ:7.4 / 7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản kèo bóng đá cúp c2 được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một kèo bóng đá cúp c2 chohiện tạiPhiên bản hoặc kèo bóng đá cúp c2 trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Chương 51. Tệp kèo bóng đá cúp c2

Mô tả về định dạng kèo bóng đá cúp c2 tệp cơ sở dữ liệu.

Phần này cung cấp một cái nhìn tổng quan về định dạng kèo bóng đá cúp c2 được sử dụng bởiPostgreSQLBảng và chỉ mục. (Các phương thức truy cập chỉ mục không cần sử dụng định dạng kèo bóng đá cúp c2 này. Hiện tại, Tất cả các phương thức chỉ mục đều sử dụng định dạng cơ bản này, nhưng dữ liệu được tiếp tục Chỉ mục Metapages thường không tuân theo các quy tắc bố cục mục chính xác.) Bàn nướng bánh mì và trình tự được định dạng giống như một Bảng thông thường.

Trong phần giải thích sau, Abyteđược giả sử chứa 8 bit. Ngoài ra, thuật ngữMụcđề cập đến một giá trị dữ liệu riêng lẻ đó là Được lưu trữ trên một kèo bóng đá cúp c2. Trong một bảng, một mục là một hàng; trong một chỉ mục, một Mục là một mục nhập chỉ mục.

Bảng 51-16969_7042

Bảng 51-1. Bố cục kèo bóng đá cúp c2 mẫu

Mục Mô tả
PageHeaderData 20 byte dài. Chứa thông tin chung về kèo bóng đá cúp c2, bao gồm cả con trỏ không gian trống.
itemiddata Mảng (bù, chiều dài) Các cặp chỉ vào thực tế mặt hàng.
kèo bóng đá cúp c2 gian trống kèo bóng đá cúp c2 gian kèo bóng đá cúp c2 phân bổ. Tất cả các hàng mới được phân bổ từ đây, nói chung từ cuối.
Mục Bản thân các mục thực tế.
kèo bóng đá cúp c2 gian đặc biệt Dữ liệu cụ thể của phương thức truy cập chỉ mục. Các phương pháp khác nhau Lưu trữ dữ liệu khác nhau. Trống trong các bảng thông thường.

20 byte đầu tiên của mỗi kèo bóng đá cúp c2 bao gồm một tiêu đề kèo bóng đá cúp c2 (PageHeaderData). Định dạng của nó được chi tiết trongBảng 51-2. Hai đầu tiên Các lĩnh vực đối phó với các công cụ liên quan đến Wal. Điều này được theo sau bởi ba Các trường số nguyên 2 byte (PD_LOWER, PD_UPPERpd_special). Những điều này đại diện cho các byte bù đắp cho Sự khởi đầu của kèo bóng đá cúp c2 gian kèo bóng đá cúp c2 được phân bổ, đến cuối kèo bóng đá cúp c2 gian kèo bóng đá cúp c2 được phân bổ, và bắt đầu kèo bóng đá cúp c2 gian đặc biệt.

Bảng 51-2. PageHeaderData Layout

trường loại length Mô tả
PD_LSN XLOGRECPTR 8 byte LSN: Byte tiếp theo sau byte cuối cùng của XLOG
PD_SUI startupid 4 byte 9456_9525
PD_LOWER vị trí Index 9634_9643 Offset để bắt đầu kèo bóng đá cúp c2 gian trống.
PD_UPPER Vị trí Index 2 byte Offset để kết thúc kèo bóng đá cúp c2 gian trống.
pd_special Vị trí Index 2 byte Offset để bắt đầu kèo bóng đá cúp c2 gian đặc biệt.
pd_pagesize_version UINT16 2 byte Kích thước kèo bóng đá cúp c2 và thông tin số phiên bản bố cục.

Tất cả các chi tiết có thể được tìm thấy trong src/bao gồm/lưu trữ/bufpage.h.

Không gian đặc biệt là một khu vực ở cuối kèo bóng đá cúp c2 được phân bổ tại thời gian khởi tạo kèo bóng đá cúp c2 và chứa thông tin cụ thể cho một phương thức truy cập. 2 byte cuối cùng của kèo bóng đá cúp c2 Tiêu đề,pd_pagesize_version, Cửa hàng Cả kích thước kèo bóng đá cúp c2 và chỉ báo phiên bản. Bắt đầu vớiPostgreSQL7.3 Phiên bản số là 1; Các bản phát hành trước đã sử dụng phiên bản số 0. (Cơ bản Định dạng kèo bóng đá cúp c2 và định dạng tiêu đề không thay đổi, mà là bố cục của Tiêu đề hàng đống có.) Kích thước kèo bóng đá cúp c2 về cơ bản chỉ có mặt dưới dạng kiểm tra chéo; Không có hỗ trợ để có nhiều hơn một kèo bóng đá cúp c2 Kích thước trong cài đặt.

Theo tiêu đề kèo bóng đá cúp c2 là các định danh mục (itemiddata), mỗi người yêu cầu bốn byte. kèo bóng đá cúp c2 mặt hàng Định danh chứa kèo bóng đá cúp c2 byte offset để bắt đầu kèo bóng đá cúp c2 mục, nó độ dài tính bằng byte và kèo bóng đá cúp c2 tập hợp các bit thuộc tính ảnh hưởng đến nó Giải thích. Mã định danh mục mới được phân bổ khi cần thiết từ Sự khởi đầu của không gian không được phân bổ. Số lượng mặt hàng số nhận dạng có mặt có thể được xác định bằng cách xemPD_LOWER, được tăng lên để phân bổ một cái mới định danh. Bởi vì một định danh mục không bao giờ được di chuyển cho đến khi nó được giải phóng, chỉ số của nó có thể được sử dụng trên cơ sở dài hạn để tham khảo mục, ngay cả khi bản thân mặt hàng được di chuyển trên kèo bóng đá cúp c2 để không gian trống nhỏ gọn. Trên thực tế, mọi con trỏ đến một mục (itempulum, còn được gọi làCTID) Được tạo bởiPostgreSQLbao gồm một số kèo bóng đá cúp c2 và chỉ mục của một định danh mục.

12023_12245HeaptupleHeaderData, được mô tả bên dưới.

Phần cuối cùng là"Đặc biệt phần"có thể chứa bất cứ thứ gì phương thức truy cập Mong muốn lưu trữ. Bảng thông thường hoàn toàn kèo bóng đá cúp c2 sử dụng điều này (được chỉ định bởi cài đặtpd_specialđến bằng các kèo bóng đá cúp c2).

12591_12822Bảng 51-3. Thực tế Dữ liệu người dùng (cột của hàng) bắt đầu ở phần bù được biểu thị bằngT_HOFF, phải luôn là kèo bóng đá cúp c2 Nhiều khoảng cách Maxalign cho nền tảng. Null bitmap chỉ có mặt nếuHEAP_HASNULLbit được đặt trongt_infomask. Nếu nó có mặt, nó chỉ bắt đầu sau khi tiêu đề cố định và chiếm đủ byte để có kèo bóng đá cúp c2 bit mỗi cột dữ liệu (nghĩa làt_nattsBITS hoàn toàn). Trong danh sách các bit này, 1 bit cho biết Not-null, 0 bit là kèo bóng đá cúp c2 null. Khi bitmap không có mặt, tất cả Các cột được giả định không null. ID đối tượng chỉ có mặt nếu TheHEAP_HASOIDbit được đặt trongT_INFOMASK. Nếu có mặt, nó xuất hiện ngay trước TheT_HOFFranh giới. Bất kỳ đệm cần thiết để làmT_HOFFMaxalign Nhiều sẽ xuất hiện giữa bitmap null và ID đối tượng. (Điều này đến lượt đảm bảo rằng ID đối tượng phù hợp căn chỉnh.)

Bảng 51-3. Bố cục HeaptupleHeaderData

trường loại LEGN Mô tả
t_xmin Giao dịchID 4 byte Chèn tem XID
t_cmin CommandID 4 byte Chèn tem CID (lớp phủ với t_xmax)
T_XMAX Giao dịchID 4 byte Xóa tem XID
T_CMAX CommandID 4 byte Xóa tem CID (lớp phủ với T_XVAC)
T_XVAC TranstercentID 4 byte XID cho hoạt động chân kèo bóng đá cúp c2 di chuyển hàng phiên bản
T_CTID itempulinterdata 6 byte hiện tại của phiên bản hàng này hoặc mới hơn
t_natts INT16 2 byte Số lượng thuộc tính
T_INFOMASK UINT16 2 byte Cờ khác nhau
T_HOFF UINT8 1 byte Offset cho dữ liệu người dùng

Tất cả các chi tiết có thể được tìm thấy trong src/bao gồm/truy cập/htup.h.

15985_16087PG_Attribution. Các trường cụ thể làAttlenAttalign. Không có cách nào để trực tiếp nhận được kèo bóng đá cúp c2 thuộc tính cụ thể, ngoại trừ khi chỉ có chiều rộng cố định Cánh đồng và không có null. Tất cả những mánh khóe này được gói gọn trong Chức năngHEAP_GETATTR, FastGetAttr​​vàheap_getSysAttr.

Để đọc dữ liệu bạn cần kiểm tra từng thuộc tính lần lượt. Trước tiên, hãy kiểm tra xem trường có phải là null theo null Bitmap. Nếu là, đi đến tiếp theo. Sau đó, hãy chắc chắn rằng bạn có liên kết đúng. Nếu trường là trường chiều rộng cố định, thì tất cả Các byte được đặt đơn giản. Nếu đó là trường chiều dài thay đổi (Attlen == -1) Sau đó, nó phức tạp hơn kèo bóng đá cúp c2 chút, sử dụng Cấu trúc độ dài thay đổiVarAttrib. Tùy thuộc vào các cờ, dữ liệu có thể là nội tuyến, được nén hoặc trong kèo bóng đá cúp c2 bảng khác (bánh mì nướng).