Postgresql 7.4.30 Tài liệu | ||||
---|---|---|---|---|
prev | Backward nhanh | Chuyển tiếp nhanh | NEXT |
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_UPPERvàpd_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àAttlenvàAttalign. 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, FastGetAttrvà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).
Prev | kèo bóng đá cúp c2 chủ | Tiếp theo |
Ví dụ | UP | BKIGiao diện phụ trợ |