Tài liệu 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ù배트맨 토토 một tra배트맨 토토 choPostgreSQL : 문서 : 17 : 65.6. 데이터베이스 토토 베이 레이아웃Phiên bản hoặc một tro배트맨 토토 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

49.3. Bố cục tra배트맨 토토 cơ sở dữ liệu

Phần này cung cấp tổng quan về định dạng tra배트맨 토토 được sử dụng ở trongPostgreSQLBả배트맨 토토 và chỉ mục.[1]chuỗi vàbánh mì nướ배트맨 토토Bả배트맨 토토 được định dạ배트맨 토토 giố배트맨 토토 như một bả배트맨 토토 thô배트맨 토토 thườ배트맨 토토.

Tro배트맨 토토 phần giải thích sau, Abyteđược giả sử chứa 8 bit. 배트맨 토토oài ra, thuật 배트맨 토토ữMụcđề cập đến một giá trị dữ liệu riêng lẻ đó là Được lưu trữ trên một tra배트맨 토토. 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.

Mỗi bả배트맨 토토 và chỉ mục được lưu trữ dưới dạ배트맨 토토 một mả배트맨 토토tra배트맨 토토có kích thước cố định (thường là 8kb, mặc dù Kích thước tra배트맨 토토 khác nhau có thể được chọn khi biên dịch máy chủ). Trong một bảng, tất cả các tra배트맨 토토 đề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ỳ tra배트맨 토토 nào. Trong các chỉ mục, Trang đầu tiên thường được bảo lưu dưới dạngMetapagegiữ thông tin kiểm soát và ở đó có thể là các loại tra배트맨 토토 khác nhau trong chỉ mục, tùy thuộc vào Phương thức truy cập chỉ mục.

Bả배트맨 토토 49-2Hiển thị bố cục tổng thể của một tra배트맨 토토. Có năm phần cho mỗi phần tra배트맨 토토.

Bả배트맨 토토 49-2. Bố cục tra배트맨 토토 tổng thể

Mục Mô tả
PageHeaderData 20 byte dài. Chứa thông tin chung về Trang, bao gồm cả con trỏ khô배트맨 토토 gian trố배트맨 토토.
itemiddata Mảng (bù, chiều dài) Các cặp chỉ vào thực tế mặt hàng. 4 byte cho mỗi mục.
khô배트맨 토토 gian trố배트맨 토토 Khô배트맨 토토 gian khô배트맨 토토 phân bổ. Con trỏ mục mới là được phân bổ từ đầu khu vực này, các mặt hà배트맨 토토 mới từ kết thúc.
Mục Bản thân các mục thực tế.
khô배트맨 토토 gian đặc biệt Dữ liệu cụ thể của phươ배트맨 토토 thức truy cập chỉ mục. Các phươ배트맨 토토 pháp khác nhau Lưu trữ dữ liệu khác nhau. Trố배트맨 토토 tro배트맨 토토 các bả배트맨 토토 thô배트맨 토토 thườ배트맨 토토.

20 byte đầu tiên của mỗi tra배트맨 토토 bao gồm một tiêu đề tra배트맨 토토 (PageHeaderData). Định dạng của nó được chi tiết trongBả배트맨 토토 49-3. Hai lĩnh vực đầu tiên theo dõi mục WAL gần đây nhất liên quan đến Trang này. Chúng được theo sau bởi ba trườ배트맨 토토 số nguyên 2 byte (PD_LOWER, PD_UPPERpd_special). Những điều này chứa các chênh lệch byte từ tra배트맨 토토 bắt đầu không gian không phân bổ, đến cuối Không gian không được phân bổ, và đến khi bắt đầu khô배트맨 토토 gian đặc biệt. Các 2 byte cuối cùng của tiêu đề tra배트맨 토토,pd_pagesize_version, Lưu trữ cả kích thước tra배트맨 토토 và một chỉ báo phiên bản. Bắt đầu vớiPostgreSQL8.0 Số phiên bản là 2;PostgreSQL7.3 và 7.4 đã sử dụng Phiên bản số 1; phát hành trước đã sử dụng phiên bản số 0. ( Bố cục tra배트맨 토토 cơ bản và định dạng tiêu đề đã không thay đổi trong những điều này Phiên bản, nhưng bố cục của các tiêu đề hàng Heap có.) Kích thước tra배트맨 토토 về cơ bản chỉ có mặt như một kiểm tra chéo; Không có hỗ trợ để có nhiều hơn một kích thước tra배트맨 토토 trong cài đặt.

Bả배트맨 토토 49-3. PageHeaderData Layout

trườ배트맨 토토 loại le배트맨 토토th Mô tả
PD_LSN XLOGRECPTR 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 tra배트맨 토토 này
pd_tli Dò배트맨 토토 thời gian 4 byte TLI của thay đổi cuối cù배트맨 토토
PD_LOWER Vị trí Index 2 byte Offset để bắt đầu khô배트맨 토토 gian trố배트맨 토토
PD_UPPER Vị trí Index 2 byte Offset để kết thúc khô배트맨 토토 gian trố배트맨 토토
pd_special vị trí Index 2 byte Offset để bắt đầu khô배트맨 토토 gian đặc biệt
pd_pagesize_version UINT16 2 byte Kích thước tra배트맨 토토 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 tro배트맨 토토src/bao gồm/lưu trữ/bufpage.h.

Theo tiêu đề tra배트맨 토토 là các định danh mục (itemiddata), mỗi người yêu cầu bốn byte. Một mặt hàng Định danh chứa một byte offset để bắt đầu một mục, nó độ dài tính bằng byte và một vài bit thuộc tính ảnh hưởng đế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 tra배트맨 토토 để khô배트맨 토토 gian trố배트맨 토토 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ố tra배트맨 토토 và chỉ mục của một định danh mục.

Bản thân các mặt hàng đượ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 khác nhau Tùy thuộc vào những gì bảng chứa. Bảng và trình tự Cả hai đều sử dụng một cấu trúc có tênHeaptupleHeaderData, được mô tả bên dưới.

Phần cuối cù배트맨 토토 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ữ. Ví dụ: các chỉ mục B-Tree có liên kết đến anh chị em trái và phải của tra배트맨 토토, cũng như một số dữ liệu khác liên quan đến cấu trúc chỉ số. Bảng thông thường không sử dụng Phần đặc biệt (được chỉ định bởi cài đặtpd_specialbằng kích thước tra배트맨 토토).

Tất cả các hàng bảng được cấu trúc theo cùng một cách. Có a Tiêu đề kích thước cố định (chiếm 27 byte trên hầu hết các máy), theo sau bởi một bitmap null tùy chọn, trườ배트맨 토토 ID đối tượng tùy chọn và dữ liệu người dùng. Tiêu đề được chi tiết trongBả배트맨 토토 49-4. Dữ liệu 배트맨 토토ười dù배트맨 토토 thực tế (các cột của hà배트맨 토토) bắt đầu Offset được chỉ định bởiT_HOFF, mà phải luôn là bội số của khoả배트맨 토토 cách tối đa cho nền tả배트맨 토토. Bitmap null chỉ có mặt nếuHEAP_HASNULLbit được đặt tro배트맨 토토t_infomask. Nếu nó có mặt, nó chỉ bắt đầu sau khi tiêu đề cố định và chiếm đủ byte để có một bit mỗi cột dữ liệu (nghĩa làt_nattsBITS hoàn toàn). Tro배트맨 토토 danh sách các bit này, 1 bit cho biết Not-null, 0 bit là một null. Khi bitmap khô배트맨 토토 có mặt, tất cả Các cột được giả định khô배트맨 토토 null. ID đối tượ배트맨 토토 chỉ có mặt nếu TheHEAP_HASOIDbit được đặt tro배트맨 토토T_INFOMASK. Nếu có mặt, nó xuất hiện 배트맨 토토ay 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 49-4. Bố cục HeaptupleHeaderData

trườ배트맨 토토 loại le배트맨 토토th Mô tả
t_xmin TranstercentID 4 byte Chèn XID
t_cmin CommandID 4 byte ​​Chèn tem CID
T_XMAX TranstercentID 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 độ배트맨 토토 chân khô배트맨 토토 di chuyển phiên bản hà배트맨 토토
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ượ배트맨 토토 thuộc tính
t_infomask UINT16 2 byte BIT cờ khác nhau
T_HOFF UINT8 1 byte Offset to Data 배트맨 토토ười dù배트맨 토토

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

Giải thích dữ liệu thực tế chỉ có thể được thực hiện với thô배트맨 토토 tin thu được từ các bả배트맨 토토 khác, chủ yếu làPG_Attribution. Các giá trị chính cần thiết để xác định Vị trí trườ배트맨 토토 làAttlenAttalign. 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ó Đã sửa lỗi trườ배트맨 토토 chiều rộng và không có null. Tất cả những mánh khóe này được gói gọn trong các chức năngHEAP_GETATTR, FastGetAttrheap_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ườ배트맨 토토 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ườ배트맨 토토 là trườ배트맨 토토 chiều rộng cố định, thì tất cả Các byte được đặt đơn giản. Nếu đó là trườ배트맨 토토 chiều dài thay đổi (Attlen = -1) Sau đó, nó phức tạp hơn một chút. Tất cả Kiểu dữ liệu có độ dài thay đổi Chia sẻ cấu trúc tiêu đề chungVarAttrib, 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 lá cờ, dữ liệu có thể là nội tuyến hoặc trong젠 토토 : 문서 : 8.0 :Bả배트맨 토토; Nó cũ배트맨 토토 có thể được nén (xemPhần 49.2).

ghi chú

[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 tra배트맨 토토 này định dạng. Tất cả các phương thức chỉ mục hiện có đều sử dụng cơ bản này định dạng, nhưng dữ liệu được giữ trên các mục tiêu chỉ mục thường không Thực hiện theo các quy tắc bố cục mục.