Phiên bản được hỗ trợ:hiện tại(17)16/15/14
Phiên bản phát triển:Devel

32,5.kèo bóng đá việt nam#

libpqkèo bóng đá việt nam cho phép các ứng dụng gửi truy vấn mà không phải đọc kết quả của truy vấn đã gửi trước đó. Tận dụng kèo bóng đá việt nam, máy khách sẽ chờ máy chủ ít hơn, vì nhiều truy vấn/kết quả có thể được gửi/nhận trong một giao dịch mạng.

Trong khi kèo bóng đá việt nam cung cấp một sự tăng hiệu suất đáng kể, việc viết khách hàng bằng kèo bóng đá việt nam phức tạp hơn vì nó liên quan đến việc quản lý hàng đợi các truy vấn đang chờ xử lý và tìm kết quả tương ứng với truy vấn nào trong hàng đợi.

kèo bóng đá việt nam cũng thường tiêu thụ nhiều bộ nhớ hơn trên cả máy khách và máy chủ, mặc dù quản lý cẩn thận và tích cực của hàng đợi gửi/nhận có thể giảm thiểu điều này. Điều này áp dụng liệu kết nối có ở chế độ chặn hay không chặn hay không.

trong khilibpqS API đường ống được giới thiệu trongPOSTGRESQL14, Đây là một tính năng phía máy khách kèo bóng đá việt nam yêu cầu hỗ trợ máy chủ đặc biệt và hoạt động trên bất kỳ máy chủ nào hỗ trợ giao thức truy vấn mở rộng V3. Để biết thêm thông tin, xemPhần 53.2.4.

32.5.1.Sử dụng kèo bóng đá việt nam#

Để phát hành các đường ống, ứng dụng phải chuyển kết nối sang kèo bóng đá việt nam, được thực hiện vớipqenterpipelinemode.pqpipelinestatuscó thể được sử dụng để kiểm tra xem kèo bóng đá việt nam có hoạt động hay không. Trong kèo bóng đá việt nam, chỉPostgresql: Tài liệu: 17: 32.4. Sử dụng giao thức truy vấn mở rộng được cho phép, các chuỗi lệnh chứa nhiều lệnh SQL kèo bóng đá việt nam được phép, và cũng vậyCopy. Sử dụng các chức năng thực thi lệnh đồng bộ nhưPQFN,PQEXEC,PQExecParams,PQPrepare,PQEXECPREPARED,,PQDescriptePortal,PQClosePrepared,PQClosePortal, là một điều kiện lỗi.PQSendQuerycũng không được phép, vì nó sử dụng giao thức truy vấn đơn giản. Khi tất cả các lệnh được gửi đã xử lý kèo bóng đá việt nam quả của họ và kèo bóng đá việt nam quả đường ống cuối đã được tiêu thụ, ứng dụng có thể trở lại chế độ không có mục tiêu vớiPQEXITPIPELINEMODE.

Lưu ý

Tốt nhất là sử dụng kèo bóng đá việt nam vớilibpqinChế độ kèo bóng đá việt nam chặn. Nếu được sử dụng trong chế độ chặn, có thể xảy ra bế tắc máy khách/máy chủ.[15]

32.5.1.1.Phát hành truy vấn#

Sau khi vào kèo bóng đá việt nam, ứng dụng gửi các yêu cầu bằng cách sử dụngPQSendQueryParamshoặc anh chị em đã chuẩn bị của nóPQSendQueryPrepared. Các yêu cầu này được xếp hàng ở phía máy khách cho đến khi được chuyển đến máy chủ;pqpipelinesyncđược sử dụng để thiết lập một điểm đồng bộ hóa trong đường ống hoặc khipqflushđược gọi. Các chức năngPQSendPrepare,,,PQSendClosePreparedPQSendClosePortalCũng hoạt động ở kèo bóng đá việt nam. Xử lý kết quả được mô tả bên dưới.

Máy chủ thực thi các câu lệnh và trả về kèo bóng đá việt nam quả, theo thứ tự mà máy khách gửi cho họ. Máy chủ sẽ bắt đầu thực thi các lệnh trong đường ống ngay lập tức, không chờ kèo bóng đá việt nam thúc đường ống.pqpipelinesynchoặcPQSendPipelinesynchoặc khiPQSendFlushRequestđược gọi. Nếu bất kỳ câu lệnh nào gặp phải lỗi, máy chủ sẽ hủy bỏ giao dịch hiện tại và kèo bóng đá việt nam thực hiện bất kỳ lệnh tiếp theo nào trong hàng đợi cho đến điểm đồng bộ hóa tiếp theo;PGRES_PIPELINE_ABORTEDkèo bóng đá việt nam quả được tạo ra cho mỗi lệnh như vậy. (Điều này vẫn đúng ngay cả khi các lệnh trong đường ống sẽ cuộn lại giao dịch.) Xử lý truy vấn tiếp tục sau điểm đồng bộ hóa.

Tốt cho một thao tác phụ thuộc vào kèo bóng đá việt nam quả của một hoạt động trước đó; Ví dụ, một truy vấn có thể xác định một bảng mà truy vấn tiếp theo trong cùng một đường ống sử dụng.

32.5.1.2.kèo bóng đá việt nam quả xử lý#

Để xử lý kèo bóng đá việt nam quả của một truy vấn trong đường ống, ứng dụng gọiPQGetResultLiên tục và xử lý từng kèo bóng đá việt nam quả cho đến khiPQGetResultTrả về null. kèo bóng đá việt nam quả từ truy vấn tiếp theo trong đường ống sau đó có thể được truy xuất bằng cách sử dụngPQGetResultMột lần nữa và chu kỳ lặp lại. Ứng dụng xử lý kèo bóng đá việt nam quả tuyên bố cá nhân là bình thường.PQGetResultTrả về kèo bóng đá việt nam quả chứa giá trị trạng tháiPGRES_PIPELINE_SYNC

Khách hàng có thể chọn trì hoãn xử lý kèo bóng đá việt nam quả cho đến khi đường ống hoàn chỉnh được gửi hoặc xen kẽ với việc gửi thêm các truy vấn trong đường ống; nhìn thấyPhần 32.5.1.4.

PQGetResulthoạt động gikèo bóng đá việt nam như đối với xử lý không đồng bộ bình thường ngoại trừ nó có thể chứa mới mớiPGRESULTloạiPGRES_PIPELINE_SYNCPGRES_PIPELINE_ABORTED.pgres_pipeline_syncđược báo cáo chính xác một lần cho mỗiPQPipelinesynchoặcPQSENDPIPELINESYNCTại điểm tương ứng trong đường ống.PGRES_PIPELINE_ABORTEDđược phát ra thay cho kèo bóng đá việt nam quả truy vấn thông thường cho lỗi đầu tiên và tất cả các kèo bóng đá việt nam quả tiếp theo cho đến khi tiếp theoPGRES_PIPELINE_SYNC; nhìn thấyPhần 32.5.1.3.

pqisbusy,PQConsumeInput, vv hoạt động như bình thường khi xử lý kèo bóng đá việt nam quả đường ống. Cụ thể, một cuộc gọi đếnpqisbusyỞ giữa đường ống trả về 0 nếu kèo bóng đá việt nam quả cho tất cả các truy vấn được phát hành cho đến nay đã được tiêu thụ.

libpqkèo bóng đá việt nam cung cấp bất kỳ thông tin nào cho ứng dụng về truy vấn hiện đang được xử lý (ngoại trừPQGetResultTrả về NULL để cho biết rằng chúng tôi bắt đầu trả về kèo bóng đá việt nam quả của truy vấn tiếp theo). Ứng dụng phải theo dõi thứ tự mà nó đã gửi truy vấn, liên kèo bóng đá việt nam chúng với kèo bóng đá việt nam quả tương ứng của chúng.

32.5.1.3.Xử lý lỗi#

Từ quan điểm của khách hàng, sauPQResultstatusreturnPGRES_FATAL_ERROR, đường ống được gắn cờ là bị hủy bỏ.PQResultstatussẽ báo cáo APGRES_PIPELINE_ABORTEDkèo bóng đá việt nam quả cho mỗi hoạt động xếp hàng còn lại trong một đường ống bị hủy bỏ. kèo bóng đá việt nam quả chopqpipelinesynchoặcPQSENDPIPELINESYNCđược báo cáo làPGRES_PIPELINE_SYNCĐể báo hiệu sự kèo bóng đá việt nam thúc của đường ống bị hủy bỏ và nối lại xử lý kèo bóng đá việt nam quả thông thường.

Máy kháchphảikèo bóng đá việt nam quả xử lý vớiPQGetResultTrong quá trình phục hồi lỗi.

Nếu đường ống sử dụng một giao dịch ngầm, thì các hoạt động đã được thực thi sẽ được quay lại và các hoạt động được xếp hàng để tuân theo hoạt động thất bại hoàn toàn bị bỏ qua. Hành vi tương tự sẽ giữ nếu đường ống bắt đầu và thực hiện một giao dịch rõ ràng duy nhất (nghĩa là câu lệnh đầu tiên làbắt đầuvà cuối cùng làcam kèo bóng đá việt nam) Ngoại trừ phiên vẫn ở trạng thái giao dịch bị hủy bỏ ở cuối đường ống. Nếu một đường ống chứanhiều giao dịch rõ ràng, Tất cả các giao dịch đã thực hiện trước khi lỗi vẫn được thực hiện, giao dịch hiện đang bị hủy bỏ và tất cả các hoạt động tiếp theo đều được bỏ qua hoàn toàn, bao gồm các giao dịch tiếp theo. Nếu điểm đồng bộ hóa đường ống xảy ra với một khối giao dịch rõ ràng ở trạng thái bị hủy bỏ, đường ống tiếp theo sẽ bị hủy bỏ ngay lập tức trừ khi lệnh tiếp theo đặt giao dịch ở chế độ bình thường vớirollback.

Lưu ý

Khách hàng không được cho rằng công việc được cam kèo bóng đá việt nam khi nóGửiAcam kèo bóng đá việt nam- Chỉ khi nhận được kèo bóng đá việt nam quả tương ứng để xác nhận cam kèo bóng đá việt nam hoàn tất. Vì các lỗi đến không đồng bộ, ứng dụng cần có khả năng khởi động lại từ lần cuốiĐã nhậnThay đổi cam kèo bóng đá việt nam và phân chia công việc được thực hiện sau thời điểm đó nếu có sự cố.

32.5.1.4.Xử lý kèo bóng đá việt nam quả xen kẽ và công văn truy vấn#

Để tránh bế tắc trên các đường ống lớn, khách hàng nên được cấu trúc xung quanh một vòng lặp sự kiện kèo bóng đá việt nam chặn bằng cách sử dụng các cơ sở hệ điều hành nhưChọn,Poll,20000_20025, v.v.

Ứng dụng khách thường nên duy trì hàng đợi công việc còn lại để được gửi và hàng đợi công việc đã được gửi đi nhưng chưa có kèo bóng đá việt nam quả được xử lý. Khi ổ cắm có thể ghi, nó sẽ gửi nhiều công việc hơn.

Một ví dụ sử dụngselect ()Và một máy trạng thái đơn giản để theo dõi công việc đã gửi và nhận ởsrc/test/modules/libpq_pipeline/libpq_pipeline.cTrong phân phối nguồn PostgreSQL.

32.5.2.Các chức năng được liên kết với kèo bóng đá việt nam#

pqpipelinestatus #

Trả về trạng thái kèo bóng đá việt nam hiện tại củalibpqkèo bóng đá việt nam nối.


          

pqpipelinestatusCó thể trả về một trong các giá trị sau:

PQ_PIPELINE_ON

ThelibpqKết nối ở kèo bóng đá việt nam.

PQ_PIPELINE_OFF

Thelibpqkèo bóng đá việt nam nối làkèo bóng đá việt namở kèo bóng đá việt nam.

PQ_PIPELINE_ABORTED

ThelibpqKết nối ở kèo bóng đá việt nam và xảy ra lỗi trong khi xử lý đường ống hiện tại. Cờ bị hủy bỏ bị xóa khiPQGetResultTrả về kèo bóng đá việt nam quả của loạiPGRES_PIPELINE_SYNC.

pqenterpipelinemode #

gây ra kết nối để vào kèo bóng đá việt nam nếu hiện tại nó không hoạt động hoặc đã ở kèo bóng đá việt nam.

int pqenterpipelinemode (pgconn *Conn);

Trả về 1 để thành công. Trả về 0 và không có hiệu lực nếu kèo bóng đá việt nam nối hiện không nhàn rỗi, tức là, nó có kèo bóng đá việt nam quả sẵn sàng hoặc nó đang chờ thêm đầu vào từ máy chủ, v.v ... Chức năng này không thực sự gửi bất cứ thứ gì đến máy chủ, nó chỉ thay đổilibpqTrạng thái kèo bóng đá việt nam nối.

PQEXITPIPELINEMODE #

gây ra kết nối với chế độ đường ống thoát nếu nó hiện đang ở chế độ đường ống với hàng đợi trkèo bóng đá việt nam và không có kết quả đang chờ xử lý.

int pqexitpipelinemode (pgconn *Conn);

Trả về 1 để thành công. Trả về 1 và không có hành động nếu không ở kèo bóng đá việt nam.PQGetResultchưa được gọi để thu thập kèo bóng đá việt nam quả từ tất cả các truy vấn được gửi trước đó, trả về 0 (trong trường hợp đó, sử dụngpqerrormessageĐể biết thêm thông tin về sự thất bại).

pqpipelinesync #

Đánh dấu điểm đồng bộ hóa trong đường ống bằng cách gửi mộtSYNC MessageVà xả bộ đệm gửi. Điều này đóng vai trò là dấu phân cách của một giao dịch ngầm và điểm khôi phục lỗi;Phần 32.5.1.3.

int pqpipelinesync (pgconn *Conn);

Trả về 1 để thành công. Trả về 0 nếu kết nối không ở kèo bóng đá việt nam hoặc gửiSYNC Messagekèo bóng đá việt nam thành công.

PQSendPipelinesync #

Đánh dấu điểm đồng bộ hóa trong đường ống bằng cách gửiSync Messagemà kèo bóng đá việt nam cần xả bộ đệm gửi. Điều này đóng vai trò là dấu phân cách của một giao dịch ngầm và điểm khôi phục lỗi;Phần 32.5.1.3.

int pqsendpipelinesync (pgconn *Conn);

Trả về 1 để thành công. Trả về 0 nếu kết nối không ở kèo bóng đá việt nam hoặc gửiSYNC Messagekèo bóng đá việt nam thành công. Lưu ý rằng thông báo kèo bóng đá việt nam được tự động xả vào máy chủ;PQFLUSHnếu cần.

PQSendFlushRequest #

Gửi yêu cầu cho máy chủ để xóa bộ đệm đầu ra của nó.

int PQSendFlushRequest (PGConn *Conn);

Trả về 1 để thành công. Trả về 0 trên bất kỳ lỗi nào.

Máy chủ tự động xả bộ đệm đầu ra của nó dopqpipelinesyncđược gọi hoặc theo bất kỳ yêu cầu nào khi không ở kèo bóng đá việt nam; Chức năng này rất hữu ích để khiến máy chủ xả bộ đệm đầu ra của nó ở kèo bóng đá việt nam mà không cần thiết lập điểm đồng bộ hóa.PQFLUSHnếu cần.

32.5.3.Khi nào nên sử dụng kèo bóng đá việt nam#

Gikèo bóng đá việt nam như chế độ truy vấn không đồng bộ, không có chi phí hiệu suất có ý nghĩa khi sử dụng chế độ đường ống. Nó làm tăng độ phức tạp của ứng dụng khách hàng và cần thận trọng hơn để ngăn chặn các bế tắc của máy khách/máy chủ, nhưng chế độ đường ống có thể cung cấp các cải tiến hiệu suất đáng kể, để đổi lấy việc sử dụng bộ nhớ tăng lên khỏi trạng thái dài hơn.

kèo bóng đá việt nam là hữu ích nhất khi máy chủ ở xa, tức là, độ trễ mạng (Thời gian ping) cao, và cả khi nhiều hoạt động nhỏ đang được thực hiện liên tiếp. Thường có ít lợi ích hơn trong việc sử dụng các lệnh đường ống khi mỗi truy vấn mất nhiều bội số của thời gian khách hàng/máy chủ để thực hiện.

Sử dụng các lệnh đường ống khi ứng dụng của bạn thực hiện rất nhiềuChèn,Cập nhậtXóaCác hoạt động kèo bóng đá việt nam thể dễ dàng chuyển thành các hoạt động trên các bộ hoặc thành ACopyHoạt động.

kèo bóng đá việt nam không hữu ích khi thông tin từ một thao tác được yêu cầu của khách hàng để tạo hoạt động tiếp theo. Trong những trường hợp như vậy, khách hàng sẽ phải giới thiệu một điểm đồng bộ hóa và chờ chuyến đi vòng khách/máy chủ đầy đủ để có được kết quả cần thiết.

Bắt đầu;

có thể được thực hiện hiệu quả hơn nhiều với:

Cập nhật MyTable Set x = x + 1 trong đó id = 42;

Pipelining ít hữu ích hơn và phức tạp hơn, khi một đường ống duy nhất chứa nhiều giao dịch (xemPhần 32.5.1.3).



[15]Máy khách sẽ chặn cố gắng gửi truy vấn đến máy chủ, nhưng máy chủ sẽ chặn cố gắng gửi kèo bóng đá việt nam quả cho máy khách từ các truy vấn mà nó đã xử lý. Điều này chỉ xảy ra khi máy khách gửi đủ truy vấn để lấp đầy cả bộ đệm đầu ra và bộ đệm nhận của máy chủ trước khi chuyển sang xử lý đầu vào từ máy chủ, nhưng thật khó để dự đoán chính xác khi nào điều đó sẽ xảy ra.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu kèo bóng đá việt nam chính xác, kèo bóng đá việt nam phù hợpMẫu nàyĐể báo cáo vấn đề tài liệu.