PGBenchlà một chương trình đơn giản Để chạy kèo bóng đá euro bài kiểm tra điểm chuẩn trênPostgreSQL. Nó chạy cùng một chuỗi SQL kèo bóng đá euro lệnh lặp đi lặp lại, có thể trong nhiều cơ sở dữ liệu đồng thời kèo bóng đá euro phiên, và sau đó tính toán tỷ lệ giao dịch trung bình (Giao dịch mỗi giây). Theo mặc định,PGBenchKiểm tra kèo bóng đá euro kịch bản kèo bóng đá euro cách lỏng lẻo Dựa trên TPC-B, liên quan đến nămChọn, Cập nhậtvàChènlệnh cho mỗi giao dịch. Tuy nhiên, nó là Dễ dàng kiểm tra kèo bóng đá euro trường hợp khác bằng cách viết tập lệnh giao dịch của riêng bạn Tệp.
Đầu ra điển hình từ PGBench trông giống như:
Loại giao dịch: TPC-B (loại) Hệ số tỷ lệ: 10 Chế độ truy vấn: Đơn giản Số lượng khách hàng: 10 Số lượng chủ đề: 1 Số lượng giao dịch trên mỗi khách hàng: 1000 Số lượng giao dịch thực sự được xử lý: 10000/10000 TPS = 85.184871 (bao gồm cả kết nối thiết lập) TPS = 85.296346 (không bao gồm thiết lập kết nối)
sáu dòng đầu tiên báo cáo kèo bóng đá euro số điều quan trọng nhất Cài đặt tham số. Dòng tiếp theo báo cáo số lượng giao dịch hoàn thành và dự định (sau này chỉ là sản phẩm của số lượng khách hàng và số lượng giao dịch cho mỗi khách hàng); những thứ này sẽ bằng nhau trừ khi lần chạy không thành công trước hoàn thành. (TRONG-Tchế độ, chỉ thực tế Số lượng giao dịch được in.) Hai dòng cuối cùng báo cáo Số lượng giao dịch mỗi giây, hình có và không có Đếm thời gian để bắt đầu kèo bóng đá euro phiên cơ sở dữ liệu.
Kiểm tra giao dịch TPC-B mặc định yêu cầu cụ thể kèo bóng đá euro bảng được thiết lập trước.PGBenchnên được gọi bằng-I(Khởi tạo) Tùy chọn để tạo và Dăn kèo bóng đá euro bảng này. (Khi bạn đang kiểm tra một tập lệnh tùy chỉnh, bạn không cần bước này, nhưng thay vào đó sẽ cần phải thực hiện bất kỳ thiết lập nào Nhu cầu kiểm tra của bạn.) Khởi tạo trông giống như:
pgbench -i [ kèo bóng đá euro khác ]dbname
WHEREdbnamelà tên của Cơ sở dữ liệu đã được tạo để kiểm tra. (Bạn cũng có thể cần-H, -P, và/hoặc-Ukèo bóng đá euro để chỉ định cách kết nối với máy chủ cơ sở dữ liệu.)
THẬN TRỌNG |
pgbench -iTạo bốn Bảngpgbench_accounts, pgbench_branches, pgbench_historyvàpgbench_tellers, phá hủy bất kỳ kèo bóng đá euro bảng hiện có của kèo bóng đá euro tên này. Rất cẩn thận để sử dụng một cơ sở dữ liệu khác nếu bạn có kèo bóng đá euro bảng có chúng Tên! |
AT mặc định"Yếu tố tỷ lệ"của 1, kèo bóng đá euro bảng ban đầu chứa nhiều hàng này:
Bảng # hàng ------------------------------------- PGBench_Branches 1 PGBench_Tellers 10 PGBench_Accounts 100000 pgbench_history 0
Bạn có thể (và, cho hầu hết kèo bóng đá euro mục đích, có lẽ nên) tăng Số lượng hàng bằng cách sử dụng-S(tỷ lệ yếu tố) kèo bóng đá euro. The-f(fillfactor) kèo bóng đá euro cũng có thể được sử dụng tại thời điểm này.
Sau khi thực hiện thiết lập cần thiết, bạn có thể chạy điểm chuẩn với lệnh không bao gồm-i, đó là
pgbench [ kèo bóng đá euro ]dbname
Trong hầu hết kèo bóng đá euro trường hợp, bạn sẽ cần một số tùy chọn để tạo ra một Bài kiểm tra. kèo bóng đá euro tùy chọn quan trọng nhất là-C(số lượng khách hàng),-T(số lượng giao dịch),-T(giới hạn thời gian) và-f(Chỉ định tệp tập lệnh tùy chỉnh). Nhìn thấy Dưới đây cho kèo bóng đá euro danh sách đầy đủ.
sau đây được chia thành ba tiểu mục: khác nhau kèo bóng đá euro tùy chọn được sử dụng trong quá trình khởi tạo cơ sở dữ liệu và trong khi chạy Điểm chuẩn, một số tùy chọn rất hữu ích trong cả hai trường hợp.
PGBenchChấp nhận kèo bóng đá euro đối số khởi tạo dòng lệnh sau:
Yêu cầu gọi chế độ khởi tạo.
Tạopgbench_accounts, pgbench_tellersvàpgbench_branchesBảng với giá trị đã cho chất làm đầy. Mặc định là 100.
Nhân số lượng hàng được tạo bởi thang đo nhân tố. Ví dụ,-S 100Will Tạo 10.000.000 hàng trongpgbench_accounts15612_15645
15808_15899
Tạo kèo bóng đá euro bảng trong không gian bảng được chỉ định, thay vì không gian bảng mặc định.
Tạo tất cả kèo bóng đá euro bảng dưới dạng kèo bóng đá euro bảng chưa được tính, thay vì bảng vĩnh viễn.
PGBenchChấp nhận kèo bóng đá euro đối số điểm chuẩn dòng lệnh sau:
Số lượng khách hàng mô phỏng, nghĩa là số lượng Phiên cơ sở dữ liệu đồng thời. Mặc định là 1.
Thiết lập kết nối mới cho mỗi giao dịch, thay vì làm nó chỉ kèo bóng đá euro lần cho mỗi phiên khách hàng. Cái này rất hữu ích để đo chi phí kết nối.
Đầu ra gỡ lỗi in.
Xác định kèo bóng đá euro biến để sử dụng bởi tập lệnh tùy chỉnh (xem dưới). Nhiều-Dkèo bóng đá euro là cho phép.
Đọc tập lệnh giao dịch từFileName. Xem bên dưới để biết chi tiết.-N, -S,, Và-flà lẫn nhau loại trừ.
Số lượng chủ đề công nhân trongPGBench. Sử dụng nhiều hơn một chủ đề Có thể hữu ích trên kèo bóng đá euro máy đa CPU. Số lượng của Khách hàng phải là bội số của số lượng chủ đề, Vì mỗi luồng được cung cấp cùng một số máy khách Phiên để quản lý. Mặc định là 1.
Viết thời gian được thực hiện bởi mỗi giao dịch vào nhật ký tài liệu. Xem bên dưới để biết chi tiết.
Giao thức sử dụng để gửi truy vấn cho máy chủ:
đơn giản: Sử dụng truy vấn đơn giản giao thức.
mở rộng: Sử dụng mở rộng Giao thức truy vấn.
Chuẩn bị: Sử dụng mở rộng Giao thức truy vấn với kèo bóng đá euro câu lệnh đã chuẩn bị.
Mặc định là giao thức truy vấn đơn giản. (Nhìn thấyChương 46Để biết thêm thông tin.)
Thực hiện không có hút bụi trước khi chạy thử nghiệm. Cái này kèo bóng đá euro làcần thiết19666_19773pgbench_accounts, pgbench_branches, pgbench_historyvàpgbench_tellers.
Không cập nhậtpgbench_tellersvàpgbench_branches. Điều này sẽ tránh Cập nhật sự tranh chấp trên kèo bóng đá euro bảng này, nhưng nó làm cho bài kiểm tra trường hợp thậm chí còn ít như tpc-b.
Báo cáo độ trễ trung bình trên mỗi lần (thực thi thời gian từ quan điểm của máy khách) của mỗi lệnh Sau khi kết thúc điểm chuẩn. Xem bên dưới để biết chi tiết.
Báo cáo hệ số tỷ lệ được chỉ định trongPGBench20845_21016pgbench_branchesBảng. Tuy nhiên, khi kiểm tra điểm chuẩn tùy chỉnh (-fkèo bóng đá euro), hệ số tỷ lệ sẽ là được báo cáo là 1 trừ khi kèo bóng đá euro này được sử dụng.
Thực hiện kèo bóng đá euro giao dịch chỉ chọn thay vì TPC-B-like Bài kiểm tra.
21546_21613
Chạy thử nghiệm trong nhiều giây này, thay vì a số lượng giao dịch cố định cho mỗi khách hàng.-Tvà-Tlà loại trừ lẫn nhau.
VACUUM Tất cả bốn bảng tiêu chuẩn trước khi chạy Bài kiểm tra. Không có-NNor-V, PGBench sẽ hút bụipgbench_tellersvàpgbench_branchesBảng và sẽ cắt ngắnpgbench_history.
PGBenchChấp nhận kèo bóng đá euro đối số phổ biến theo lệnh sau:
Tên máy chủ của máy chủ cơ sở dữ liệu
Số cổng của máy chủ cơ sở dữ liệu
Tên người dùng để kết nối là
In ThePGBenchPhiên bản và Thoát.
Hiển thị trợ giúp vềPGBenchđối số dòng lệnh và ra.
Tập lệnh giao dịch mặc định phát hành bảy lệnh mỗi giao dịch:
bắt đầu;
Cập nhật PGBench_Accounts Đặt Abalance = Abalance +: Delta WHERE viện trợ =: viện trợ;
Chọn Abalance từ PGBench_Accounts WHERE AID =: AID;
Cập nhật PGBench_Tellers Đặt Tbalance = tbalance +: delta trong đó tid =: tid;
Cập nhật pgbench_branches đặt bbalance = bbalance +: delta trong đó giá thầu =: giá thầu;
Chèn vào pgbench_history (TID, Giá thầu, viện trợ, Delta, MTIME) Giá trị (: TID,: BID,: AID,: Delta, Current_timestamp);
end;
Nếu bạn chỉ định-N, Bước 4 và 5 không bao gồm trong giao dịch. Nếu bạn chỉ định-S, chỉChọnIS đã phát hành.
PGBenchcó hỗ trợ cho Chạy kịch bản điểm chuẩn tùy chỉnh bằng cách thay thế mặc định tập lệnh giao dịch (được mô tả ở trên) với tập lệnh giao dịch đọc từ kèo bóng đá euro tệp (-fkèo bóng đá euro). Trong này trường hợp a"Giao dịch"được tính là kèo bóng đá euro thực hiện kèo bóng đá euro tập tin tập lệnh. Bạn thậm chí có thể chỉ định nhiều tập lệnh (nhiều-fTùy chọn), trong đó trường hợp một ngẫu nhiên một trong kèo bóng đá euro tập lệnh được chọn mỗi khi khách hàng phiên bắt đầu một giao dịch mới.
25930_26076--bị bỏ qua. Kịch bản dòng tệp cũng có thể là"Meta lệnh ", được giải thích bởiPGBenchChính nó, như được mô tả bên dưới.
Có một cơ sở thay thế biến đổi đơn giản cho tập lệnh Tệp. kèo bóng đá euro biến có thể được đặt bởi dòng lệnh-DTùy chọn, được giải thích ở trên hoặc bởi meta kèo bóng đá euro lệnh được giải thích dưới đây. Ngoài bất kỳ biến nào được đặt trước qua-Dkèo bóng đá euro dòng lệnh, The biếnScaleđược đặt trước vào Yếu tố quy mô hiện tại. Sau khi được đặt, giá trị của kèo bóng đá euro biến có thể là được chèn vào lệnh SQL bằng cách viết:variablename. Khi chạy nhiều hơn một phiên khách, mỗi phiên có tập hợp kèo bóng đá euro biến riêng.
kèo bóng đá euro lệnh meta tập tin tập lệnh bắt đầu bằng dấu gạch chéo ngược (\). Đối số với lệnh meta được phân tách bằng không gian trắng. kèo bóng đá euro lệnh meta này được hỗ trợ:
Đặt biếnvarnamevới giá trị số nguyên được tính toán. Mỗitoán hạnglà kèo bóng đá euro số nguyên không đổi hoặc kèo bóng đá euro:variablenametham chiếu đến a Biến có giá trị số nguyên. TheNhà điều hànhcó thể+, -, *hoặc/.
Ví dụ:
\ SET NTELLERS 10 *: Tỷ lệ
Đặt biếnvarnamevới giá trị số nguyên ngẫu nhiên giữa kèo bóng đá euro giới hạnminvàMaxBao gồm. Mỗi giới hạn có thể là Hằng số số nguyên hoặc:variablenametham chiếu đến a Biến có giá trị số nguyên.
Ví dụ:
\ SetRandom Aid 1: Naccounts
khiến việc thực thi tập lệnh ngủ cho người được chỉ định thời lượng tính bằng micro giây (US), mili giây (MS) hoặc giây (S). Nếu đơn vị bị bỏ qua thì giây là mặc định.Sốcó thể là kèo bóng đá euro số nguyên không đổi hoặc kèo bóng đá euro:Variablenametham chiếu đến a Biến có giá trị số nguyên.
Ví dụ:
\ Ngủ 10 ms
Đặt biếnvarnamevới kết quả của lệnh shelllệnh. Lệnh phải trả về kèo bóng đá euro Giá trị số nguyên thông qua đầu ra tiêu chuẩn của nó.
Đối sốCó thể là kèo bóng đá euro trong hai kèo bóng đá euro hằng số văn bản hoặc kèo bóng đá euro:Variablenametham chiếu đến a biến của bất kỳ loại. Nếu bạn muốn sử dụngĐối sốBắt đầu với kèo bóng đá euro dấu chấm, bạn cần thêm một dấu hai chấm vào đầuĐối số.
Ví dụ:
30645_30747
giống như\ setshell, nhưng Kết quả bị bỏ qua.
Ví dụ:
\ shell lệnh literal_argument: Biến :: literal_starting_with_colon
Ví dụ, định nghĩa đầy đủ về tích hợp Giao dịch TPC-B-like là:
31343_31940
31953_32229
với-Lkèo bóng đá euro,PGBenchViết thời gian của mỗi giao dịch vào kèo bóng đá euro tập tin nhật ký. Tệp nhật ký sẽ được đặt tênpgbench_log.nnn, trong đónnnlà PID của quy trình PGBench. Nếu như The-JTùy chọn từ 2 hoặc cao hơn, tạo Nhiều luồng công nhân, mỗi chủ đề sẽ có tệp nhật ký riêng. kèo bóng đá euro Công nhân đầu tiên sẽ sử dụng cùng tên cho tệp nhật ký của nó như trong trường hợp công nhân đơn tiêu chuẩn. kèo bóng đá euro tệp nhật ký bổ sung cho kèo bóng đá euro công nhân khác sẽ được đặt tênpgbench_log.nnn.MMM, trong đóMMMlà số tuần tự cho mỗi Công nhân bắt đầu với 1.
Định dạng của nhật ký là:
client_id Giao dịch_no Thời gian file_no time_epoch time_us
WHEREThời gianlà tổng số Thời gian giao dịch đã trôi qua tính bằng micro giây,file_noXác định tệp tập lệnh nào là được sử dụng (hữu ích khi nhiều tập lệnh được chỉ định với-f) vàtime_epoch/time_uslà thời gian định dạng Epoch Unix và bù bằng micro giây (phù hợp để tạo ISO 8601 dấu thời gian với kèo bóng đá euro giây phân đoạn) hiển thị khi giao dịch hoàn thành.
Đây là đầu ra ví dụ:
0 199 2241 0 1175850568 995598 0 200 2465 0 1175850568 998079 0 201 2513 0 1175850569 608 0 202 2038 0 1175850569 2663
với-Rkèo bóng đá euro,PGBenchthời gian của mỗi câu lệnh được thực hiện bởi mỗi khách hàng. Nó sau đó báo cáo trung bình của kèo bóng đá euro giá trị đó, được gọi là độ trễ Đối với mỗi câu lệnh, sau khi điểm chuẩn kết thúc.
Đối với tập lệnh mặc định, đầu ra sẽ trông giống như cái này:
34865_36179
Nếu nhiều tệp tập lệnh được chỉ định, trung bình là báo cáo riêng cho từng tệp tập lệnh.
36307_36735
Nó rất dễ sử dụngPGBench36922_37032
Ở nơi đầu tiên,không bao giờTin bất kỳ bài kiểm tra nào chạy Chỉ trong vài giây. Sử dụng-Thoặc-TTùy chọn để thực hiện lần chạy ít nhất kèo bóng đá euro vài phút, để trung bình phát ra tiếng ồn. Trong kèo bóng đá euro số trường hợp bạn Có thể cần giờ để có được những con số có thể tái tạo. Đó là a ý tưởng tốt để thử kiểm tra chạy kèo bóng đá euro vài lần, để tìm hiểu xem bạn có Số có thể tái tạo hay không.
Đối với kịch bản kiểm tra TPC-B-like mặc định, việc khởi tạo Yếu tố tỷ lệ (-S) Ít nhất là lớn là số lượng khách hàng lớn nhất mà bạn dự định kiểm tra (-C37746_37821-Shàng trongpgbench_branchesBảng, Và mọi giao dịch đều muốn cập nhật kèo bóng đá euro trong số chúng, vì vậy-CGiá trị vượt quá-Schắc chắn sẽ dẫn đến rất nhiều kèo bóng đá euro giao dịch bị chặn chờ kèo bóng đá euro giao dịch khác.
Kịch bản kiểm tra mặc định cũng khá nhạy cảm với cách Long nó đã được kể từ khi kèo bóng đá euro bảng được khởi tạo: tích lũy của kèo bóng đá euro hàng chết và không gian chết trong kèo bóng đá euro bảng thay đổi kết quả. Để hiểu kết quả, bạn phải theo dõi tổng số Số lượng cập nhật và khi hút bụi xảy ra. Nếu Autovacuum là kích hoạt nó có thể dẫn đến những thay đổi không thể đoán trước được đo lường hiệu suất.
Giới hạn củaPGBenchIS rằng nó có thể trở thành nút cổ chai khi cố gắng kiểm tra một Số lượng lớn kèo bóng đá euro phiên khách hàng. Điều này có thể được giảm bớt bởi đang chạyPGBenchTrên kèo bóng đá euro khác máy từ máy chủ cơ sở dữ liệu, mặc dù độ trễ mạng thấp sẽ là điều cần thiết. Nó thậm chí có thể hữu ích khi chạy kèo bóng đá euro sốPGBenchtrường hợp đồng thời, trên kèo bóng đá euro số máy khách, chống lại cùng kèo bóng đá euro Máy chủ cơ sở dữ liệu.