Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5
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ùng một trang chohiện tạiPhiên bản hoặc một trong kèo chấp bóng đá hôm nay phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

58.1. Phương thức lấy mẫu kèo chấp bóng đá hôm nay chức năng hỗ trợ

9078_9124tsmroutineCấu trúc chứa kèo chấp bóng đá hôm nay con trỏ cho kèo chấp bóng đá hôm nay chức năng hỗ trợ được mô tả dưới đây. Hầu hết kèo chấp bóng đá hôm nay chức năng được yêu cầu, nhưng một số là tùy chọn và những con trỏ đó có thể là vô giá trị.

VOID
SamplesCangetSamplesize (Root PlannerInfo *,
                         Reloptinfo *baserel,
                         Danh sách *Paramexprs,
                         BlockNumber *trang,
                         Double *Tuples);

Hàm này được gọi trong quá trình lập kế hoạch. Nó phải ước tính số lượng kèo chấp bóng đá hôm nay trang quan hệ sẽ được đọc trong quá trình quét mẫu và số lượng kèo chấp bóng đá hôm nay bộ dữ liệu sẽ được chọn bằng cách quét. (Ví dụ: chúng có thể được xác định bằng cách ước tính phần lấy mẫu, sau đó nhânBaserel- trangBaserel- Tuplessố đó, chắc chắn sẽ làm tròn kèo chấp bóng đá hôm nay kết quả để kèo chấp bóng đá hôm nay giá trị tích hợp.)ParamexprsDanh sách giữ (kèo chấp bóng đá hôm nay) biểu thức là kèo chấp bóng đá hôm nay tham số choBảng kèo chấp bóng đá hôm naymệnh đề. Nên sử dụng10246_10275Để cố gắng giảm kèo chấp bóng đá hôm nay biểu thức này thành hằng số, nếu giá trị của chúng là cần thiết cho mục đích ước tính; Nhưng hàm phải cung cấp ước tính kích thước ngay cả khi chúng không thể giảm và nó không bị hỏng ngay cả khi kèo chấp bóng đá hôm nay giá trị có vẻ không hợp lệ (hãy nhớ rằng chúng chỉ ước tính về giá trị thời gian chạy sẽ là gì). ThetrangTuplestham số là đầu ra.

Void
Initsamplescan (nút samplescanstate *,
                int eflags);

Khởi tạo để thực hiện nút Kế hoạch Samplescan. Điều này được gọi trong quá trình khởi động thực thi. Nó sẽ thực hiện bất kỳ khởi tạo cần thiết trước khi xử lý có thể bắt đầu. TheSamplescanstateNode đã được tạo, nhưng nóTSM_STATETrường là null. Theinitsamplescan11177_11292Node- tsm_state. Thông tin về bảng để quét có thể truy cập được thông qua kèo chấp bóng đá hôm nay trường khác củaSamplescanstatenút (nhưng lưu ý rằngNode- SS.SS_CURINSCANDESCBộ mô tả quét chưa được thiết lập).EFLAGSChứa kèo chấp bóng đá hôm nay bit cờ mô tả chế độ hoạt động của người thực thi cho nút kế hoạch này.

Khi(eflags & exec_flag_explain_only)11781_11920Giải thíchendmplescan.

Hàm này có thể được bỏ qua (đặt con trỏ thành NULL), trong trường hợp đóBeginAmplescanPhải thực hiện tất cả kèo chấp bóng đá hôm nay khởi tạo cần thiết bằng phương pháp lấy mẫu.

Void
BeginsAmplescan (Nút Samplescanstate *,
                 Datum *params,
                 int nparams,
                 hạt uint32);

Bắt đầu thực hiện quét lấy mẫu. Điều này được gọi ngay trước lần thử đầu tiên để lấy một tuple và có thể được gọi lại nếu quét cần được khởi động lại. Thông tin về bảng để quét có thể truy cập được thông qua kèo chấp bóng đá hôm nay trường củaSamplescanstatenút (nhưng lưu ý rằngNode- SS.SS_CurrentsCandescBộ mô tả quét chưa được thiết lập). Theparamsmảng, độ dàinparams, chứa kèo chấp bóng đá hôm nay giá trị của kèo chấp bóng đá hôm nay tham số được cung cấp trongBảng kèo chấp bóng đá hôm naymệnh đề. Chúng sẽ có số và loại được chỉ định trong phương thức lấy kèo chấp bóng đá hôm nayparameterTypesDanh sách và đã được kiểm tra để không được NULL.hạt giốngchứa một hạt giống để sử dụng cho bất kỳ số ngẫu nhiên nào được tạo trong phương thức lấy kèo chấp bóng đá hôm nay; nó là một hàm băm có nguồn gốc từLặp lạiGiá trị nếu được đưa ra hoặc kết quả củangẫu nhiên ()nếu không.

Hàm này có thể điều chỉnh kèo chấp bóng đá hôm nay trườngNode- use_bulkreadNode- use_pagemode. Nếu nhưNode- use_bulkreadTRUE, theo mặc định, việc quét sẽ sử dụng chiến lược truy cập bộ đệm khuyến khích bộ đệm tái chế sau khi sử dụng. Có thể hợp lý khi đặt cái này thànhSaiNếu quét sẽ chỉ truy cập một phần nhỏ kèo chấp bóng đá hôm nay trang của bảng. Nếu nhưNode- use_pagemode13990_13996, theo mặc định, việc quét sẽ thực hiện kiểm tra khả năng hiển thị trong một lần vượt qua cho tất cả kèo chấp bóng đá hôm nay bộ dữ liệu trên mỗi trang đã truy cập. Có thể hợp lý khi đặt cái này thànhfalseNếu quét sẽ chỉ chọn một phần nhỏ kèo chấp bóng đá hôm nay bộ dữ liệu trên mỗi trang được truy cập. Điều đó sẽ dẫn đến ít kiểm tra khả năng hiển thị hơn được thực hiện, mặc dù mỗi cái sẽ đắt hơn vì nó sẽ yêu cầu khóa nhiều hơn.

Nếu phương thức lấy kèo chấp bóng đá hôm nay được đánh dấulặp lại_across_scans14516_14631BeginsAmplescanphải dẫn đến việc chọn cùng một bộ dữ liệu như trước đây (nếuBảng kèo chấp bóng đá hôm naytham số và hạt giống không thay đổi).

14842_14898

Trả về số khối của trang tiếp theo sẽ được quét hoặckhông hợp lệNếu không có trang nào được quét.

Hàm này có thể được bỏ qua (đặt con trỏ thành NULL), trong trường hợp đó, mã lõi sẽ thực hiện quét tuần tự toàn bộ mối quan hệ. Việc quét như vậy có thể sử dụng quét đồng bộ hóa, do đó phương thức lấy mẫu không thể cho rằng kèo chấp bóng đá hôm nay trang quan hệ được truy cập theo cùng một thứ tự trên mỗi lần quét.

offsetNumber
NextSampletuple (nút Samplescanstate *,
                 Blocknumber blockno,
                 OffsetNumber maxoffset);

Trả về số bù của phần tiếp theo được lấy kèo chấp bóng đá hôm nay trên trang được chỉ định hoặckhông hợp lệ offsetNumberNếu không được lấy kèo chấp bóng đá hôm nay.maxoffsetlà số bù lớn nhất được sử dụng trên trang.

ghi chú

NextSampletuplekhông được nói rõ ràng về số bù nào trong phạm vi1 .. Maxoffsetthực sự chứa kèo chấp bóng đá hôm nay bộ dữ liệu hợp lệ. Đây thường không phải là một vấn đề vì mã cốt lõi bỏ qua kèo chấp bóng đá hôm nay yêu cầu để lấy mẫu kèo chấp bóng đá hôm nay bộ dữ liệu bị thiếu hoặc vô hình; Điều đó không nên dẫn đến bất kỳ sự thiên vị nào trong mẫu. Tuy nhiên, nếu cần, chức năng có thể kiểm tra16263_16314Để xác định bộ dữ liệu nào hợp lệ và hiển thị. (Điều này yêu cầuNode- use_pagemodeTo BeTRUE.)

Lưu ý

NextSampletuplephảikhôngGiả sử rằngblocknolà cùng một số trang được trả về bởi gần đây nhấtNextSampleBlockGọi. Nó đã được trả lại bởi một số trướcNextSampleBlockGọi, nhưng mã cốt lõi được phép gọiNextSampleBlockTrước thực sự của kèo chấp bóng đá hôm nay trang quét, để hỗ trợ trước. Bạn có thể giả định rằng một lần lấy mẫu của một trang nhất định bắt đầu, liên tiếpNextSampletupleGọi tất cả đều tham khảo cùng một trang cho đến khiKhông hợp lệ OfferSetNumberđược trả về.

Void
Endsamplescan (samplescanstate *nút);

Kết thúc tài nguyên quét và phát hành. Thông thường không quan trọng để phát hành bộ nhớ palloc'd, nhưng bất kỳ tài nguyên nào có thể nhìn nhận được bên ngoài nên được làm sạch. Chức năng này có thể được bỏ qua (đặt con trỏ thành NULL) trong trường hợp phổ biến mà không có tài nguyên nào tồn tại.