PostgreSQL: soi kèo bóng đá truoctran liệu: 9.5: PostgreSQL | |||
---|---|---|---|
prev | UP | Chương 63. Lưu trữ vật lý cơ sở dữ kèo tỷ số bóng đá euro hôm nay | Tiếp theo |
Phần này cung cấp tổng quan về định dạng kèo tỷ số bóng đá euro hôm nay được sử dụng trongPostgreSQLBảng và chỉ mục.[1]Chuỗi vàbánh mì nướngBảng đượ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ẻ được lưu trữ trên một kèo tỷ số bóng đá euro hôm nay. Trong một bảng, một mục là một hàng;
Mỗi bảng và chỉ mục được lưu trữ dưới dạng một mảngkèo tỷ số bóng đá euro hôm naycó kích thước cố định (thường là 8 kb, mặc dù có thể chọn kích thước kèo tỷ số bóng đá euro hôm nay khác khi biên dịch máy chủ). Trong một bảng, tất cả các kèo tỷ số bóng đá euro hôm nay đều tương đương về mặt logic, vì vậy một mục cụ thể (hàng) có thể được lưu trữ trong bất kỳ kèo tỷ số bóng đá euro hôm nay nào.MetapageGiữ thông tin điều khiển và có thể có nhiều loại kèo tỷ số bóng đá euro hôm nay khác nhau trong chỉ mục, tùy thuộc vào phương thức truy cập chỉ mục.
Bảng 63-2Hiển thị bố cục tổng thể của một kèo tỷ số bóng đá euro hôm nay. Có năm phần cho mỗi kèo tỷ số bóng đá euro hôm nay.
Bảng 63-2. Bố cục kèo tỷ số bóng đá euro hôm nay tổng thể
Mục | Mô tả |
---|---|
PageHeaderData | 24 byte dài. Chứa thông tin chung về kèo tỷ số bóng đá euro hôm nay, bao gồm cả con trỏ không gian trống. |
itemiddata | Mảng các số nhận dạng mục chỉ vào các mục thực tế. Mỗi mục là một cặp (bù, chiều dài). |
không gian trống | Không gian không phân bổ. Số nhận dạng mục mới được phân bổ từ đầu khu vực này, các mục mới từ cuối. |
Mục | Bản thân các mục thực tế. |
không gian đặc biệt | Dữ kèo tỷ số bóng đá euro hôm nay 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ữ kèo tỷ số bóng đá euro hôm nay khác nhau. |
24 byte đầu tiên của mỗi kèo tỷ số bóng đá euro hôm nay bao gồm một tiêu đề kèo tỷ số bóng đá euro hôm nay (PageHeaderData). Định dạng của nó được chi tiết trongBảng 63-3. Trường đầu tiên theo dõi mục WAL gần đây nhất liên quan đến kèo tỷ số bóng đá euro hôm nay này.Kiểm tra dữ kèo tỷ số bóng đá euro hôm nayđược bật. Tiếp theo là trường 2 byte chứa bit cờ.PD_LOWER, PD_UPPERvàpd_special). Chúng chứa các chênh lệch byte từ kèo tỷ số bóng đá euro hôm nay bắt đầu đến khi bắt đầu không gian không được phân bổ, đến cuối không gian không phân bổ và bắt đầu không gian đặc biệt.pd_pagesize_version, Lưu trữ cả kích thước kèo tỷ số bóng đá euro hôm nay và chỉ báo phiên bản. Bắt đầu vớiPostgreSQL8.3 Số phiên bản là 4;PostgreSQL8.1 và 8.2 Phiên bản đã sử dụng số 3;PostgreSQL8.0 Phiên bản đã sử dụng số 2;PostgreSQL7.3 và 7.4 Phiên bản đã sử dụng số 1; Các bản phát hành trước đã sử dụng phiên bản số 0. (Bố cục kèo tỷ số bóng đá euro hôm nay cơ bản và định dạng tiêu đề không thay đổi trong hầu hết các phiên bản này, nhưng bố cục của các tiêu đề hàng Heap có.) Kích thước kèo tỷ số bóng đá euro hôm nay về cơ bản chỉ có mặt dưới dạng kiểm tra chéo;
Bảng 63-3. PageHeaderData Layout
trường | loại | length | Mô tả |
---|---|---|---|
PD_LSN | PageXLogRecptr | 8 byte | LSN: Byte tiếp theo sau byte cuối cùng của bản ghi XLOG cho thay đổi cuối cùng cho kèo tỷ số bóng đá euro hôm nay này |
pd_checksum | UINT16 | 2 byte | kèo tỷ số bóng đá euro hôm nay kiểm tra kèo tỷ số bóng đá euro hôm nay |
PD_FLAGS | UINT16 | 2 byte | BIT cờ |
PD_LOWER | Vị trí Index | 2 byte | Offset để bắt đầu không gian trống |
PD_UPPER | Vị trí Index | 2 byte | bù vào cuối không gian trống |
pd_special | vị trí Index | 2 byte | Offset để bắt đầu không gian đặc biệt |
pd_pagesize_version | UINT16 | 2 byte | Kích thước kèo tỷ số bóng đá euro hôm nay và thông tin số phiên bản bố cục |
pd_prune_xid | Giao dịchID | 4 byte | Xmax không hợp nhất lâu đời nhất trên kèo tỷ số bóng đá euro hôm nay hoặc không nếu không |
Tất cả các chi tiết có thể được tìm thấy trongsrc/bao gồm/lưu trữ/bufpage.h.
Theo tiêu đề kèo tỷ số bóng đá euro hôm nay là các định danh mục (itemiddata), mỗi người yêu cầu bốn byte. Một định danh mục chứa một lần hoàn trả byte để bắt đầu một mục, độ dài của nó tính bằng byte và một vài bit thuộc tính ảnh hưởng đến cách giải thích của nó.PD_LOWER, được tăng lên để phân bổ một định danh mới. 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ỉ mục của nó có thể được sử dụng trên cơ sở dài hạn để tham khảo một mục, ngay cả khi bản thân mặt hàng được di chuyển trên kèo tỷ số bóng đá euro hôm nay để nhỏ gọn không gian trống.itemPulum, còn được gọi làCTID) Được tạo bởiPostgreSQLbao gồm số kèo tỷ số bóng đá euro hôm nay và chỉ mục của một định danh mục.
Bản thân các mục được lưu trữ trong không gian được phân bổ ngược từ cuối không gian không phân bổ. Cấu trúc chính xác thay đổi tùy thuộc vào bảng có chứa.HeaptupleHeaderData, được mô tả bên dưới.
Phần cuối cùng là"Phần đặc biệt"có thể chứa bất cứ thứ gì phương thức truy cập muốn lưu trữ. Ví dụ, B-Tree chỉ mục lưu trữ các liên kết đến anh chị em bên trái và bên phải của kèo tỷ số bóng đá euro hôm nay, cũng như một số dữ liệu khác có liên quan đến cấu trúc chỉ mục.pd_specialbằng kích thước kèo tỷ số bóng đá euro hôm nay).
Tất cả các hàng bảng được cấu trúc theo cùng một cách. Có một tiêu đề kích thước cố định (chiếm 23 byte trên hầu hết các máy), theo sau là bitmap null tùy chọn, trường ID đối tượng tùy chọn và dữ kèo tỷ số bóng đá euro hôm nay người dùng.Bảng 63-4. Dữ kèo tỷ số bóng đá euro hôm nay người dùng thực tế (các cột của hàng) bắt đầu ở phần bù được chỉ ra bởiT_HOFF, phải luôn là bội số của khoảng cách tối đa cho nền tảng. Bitmap null chỉ có mặt nếuHEAP_HASNULLbit được đặt trongT_INFOMASK. Nếu nó có mặt, nó bắt đầu ngay sau khi tiêu đề cố định và chiếm đủ byte để có một bit mỗi cột dữ kèo tỷ số bóng đá euro hôm nay (nghĩa làt_nattsBITS hoàn toàn). Trong danh sách các bit này, 1 bit cho biết không null, 0 bit là null.HEAP_HASOIDbit được đặt trongt_infomask. Nếu có, nó xuất hiện ngay trướcT_HOFFranh giới. Bất kỳ phần đệm nào cần thiết để làmT_HOFFbội số Maxalign sẽ xuất hiện giữa bitmap null và id đối tượng. (Điều này lần lượt đảm bảo rằng ID đối tượng được căn chỉnh phù hợp.)
Bảng 63-4. Bố cục HeaptupleHeaderData
trường | loại | LEGN | Mô tả |
---|---|---|---|
t_xmin | TranstercentID | 4 byte | Chèn tem XID |
T_XMAX | TranstercentID | 4 byte | Xóa tem XID |
T_CID | CommandID | 4 byte | Chèn và/hoặc xóa tem CID (lớp phủ với T_XVAC) |
T_XVAC | TranstercentID | 4 byte | XID cho hoạt động chân không di chuyển phiên bản hàng |
T_CTID | itempulinterdata | 6 byte | TiD hiện tại của phiên bản hàng này hoặc mới hơn |
T_INFOMASK2 | UINT16 | 2 byte | Số lượng thuộc tính, cộng với các bit cờ khác nhau |
t_infomask | UINT16 | 2 byte | BIT cờ khác nhau |
T_HOFF | UINT8 | 1 byte | Offset cho dữ kèo tỷ số bóng đá euro hôm nay người dùng |
Tất cả các chi tiết có thể được tìm thấy trongsrc/bao gồm/truy cập/htup_details.h.
Giải thích dữ kèo tỷ số bóng đá euro hôm nay thực tế chỉ có thể được thực hiện với thông tin thu được từ các bảng khác, chủ yếu làPG_Attribution. Các giá trị chính cần thiết để xác định các vị trí trường làAttlenvàAttalign. Không có cách nào để trực tiếp nhận một thuộc tính cụ thể, ngoại trừ khi chỉ có các trường chiều rộng cố định và không có giá trị null.HEAP_GETATTR, FastGetAttrvàHEAP_GETSYSATTR.
Để đọc dữ kèo tỷ số bóng đá euro hôm nay bạn cần lần lượt kiểm tra từng thuộc tính. Trước tiên, hãy kiểm tra xem trường có phải là null theo bitmap null hay không.struct Varlena, bao gồm tổng chiều dài của giá trị được lưu trữ và một số bit cờ. Tùy thuộc vào các cờ, dữ kèo tỷ số bóng đá euro hôm nay có thể là nội tuyến hoặc trongPostgreSQL: TàiBảng; Nó cũng có thể được nén (xemPhần 63.2).
[1] |
Trên thực tế, các phương thức truy cập chỉ mục không cần sử dụng định dạng kèo tỷ số bóng đá euro hôm nay này. Tất cả các phương thức chỉ mục hiện có sử dụng định dạng cơ bản này, nhưng dữ liệu được giữ trên các mục tiêu chỉ mục thường không tuân theo các quy tắc bố cục mục. |
prev | PostgreSQL: soi kèo bóng đá truoctran | Tiếp theo |
Ngã ba khởi tạo | UP | BKIGiao diện phụ trợ |