Một vài ngày trước, chúng tôi đã phát hành pglogical, một giải pháp nhân bản logic hoàn toàn mã nguồn mở cho PostgreSQL, hy vọng sẽ được đưa vào cây PostgreSQL trong một tương lai không xa. Tôi sẽ không thảo luận về tất cả những thứ được kích hoạt bởi sao chép hợp lý - thông báo phát hành pglogical trình bày một cái nhìn tổng quan khá tốt và Simon cũng giải thích ngắn gọn những lợi thế của sao chép hợp lý trong một bài đăng khác cách đây vài ngày.
Thay vào đó, tôi muốn nói về một khía cạnh cụ thể được đề cập trong thông báo - so sánh hiệu suất với các giải pháp hiện có. Trang pglogical đề cập đến
Điểm chuẩn
Bài đăng này giải thích chi tiết về các điểm chuẩn mà chúng tôi đã thực hiện để tìm ra thông lượng tối đa “bền vững” (giao dịch mỗi giây) mà mỗi giải pháp có thể xử lý mà không bị trễ. Để làm được điều đó, tôi đã chạy một số bài kiểm tra pgbench trên một cặp phiên bản AWS i2.4xlarge với số lượng khách hàng khác nhau và đo lưu lượng trên bản chính và thời gian chờ bắt kịp (nếu nó bị trễ) . Sau đó, kết quả được sử dụng để tính toán ước tính về thông lượng tối đa trên nút chờ.
Ví dụ:giả sử chúng tôi đã chạy pgbench với 16 khách hàng trong 30 phút và chúng tôi đã đo được 10000 tps trên cái chính, nhưng chế độ chờ bị chậm và mất thêm 15 phút để bắt kịp. Khi đó, ước tính thông lượng bền vững tối đa là
tps =(giao dịch được thực hiện) / (tổng thời gian chạy cho đến khi bắt kịp chế độ chờ)
tức là
tps =(30 60 10.000) / (45 * 60) =18.000.000 / 2.700 =6.666
Vì vậy, trong trường hợp đó, thông lượng bền vững tối đa ở chế độ chờ là 6,666 tps, tức là chỉ ~ 66% tốc độ giao dịch được đo trên bản chính.
Hệ thống
Điểm chuẩn được thực hiện trên một cặp phiên bản AWS i2.4xlarge, được định cấu hình trong cùng một nhóm vị trí (do đó với kết nối mạng ~ 2Gbit giữa chúng) và ổ đĩa SSD 4x được định cấu hình trong RAID-0 (vì vậy I / O không có khả năng là vấn đề ở đây). Các phiên bản có ~ 122GB RAM, vì vậy tập dữ liệu (pgbench với tỷ lệ 5000) phù hợp với RAM. Tất cả các bài kiểm tra được thực hiện trên PostgreSQL 9.5.0 với cấu hình giống hệt nhau:
checkpoint_timeout = 15min
effective_io_concurrency = 32
maintenance_work_mem = 1GB
max_wal_size = 8GB
min_wal_size = 2GB
shared_buffers = 16GB
Đối với tất cả các hệ thống sao chép, phiên bản hiện có mới nhất đã được sử dụng, đặc biệt là
- slony1 2.2.4
- skytools 3.2
và một bản sao đơn giản đã được thiết lập như được mô tả trong các hướng dẫn (cả hai đều sử dụng ví dụ pgbench được sử dụng cho điểm chuẩn).
Kết quả
Các kết quả được trình bày tiếp theo cũng bao gồm sao chép trực tuyến (chế độ không đồng bộ) để cung cấp cho bạn ý tưởng tốt hơn về chi phí liên quan đến sao chép hợp lý. Tỷ lệ giao dịch không phải là con số "thô" như được đo bằng pgbench, mà là tỷ lệ "bền vững" được tính bằng công thức được trình bày ở đầu bài đăng này.
khách hàng | phát trực tuyến | pglogical | slony | londiste |
---|---|---|---|---|
1 | 1075 | 1052 | 949 | 861 |
2 | 2118 | 2048 | 1806 | 1657 |
4 | 3894 | 3820 | 3456 | 1643 |
8 | 6506 | 6442 | 2040 | 1645 |
16 | 9570 | 8251 | 1535 | 1635 |
24 | 11388 | 7728 | 1548 | 1622 |
32 | 12384 | 7818 | 1358 | 1623 |