PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Về hiệu suất bệnh lý

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách triển khai một LMS canvas khả dụng cao với Cụm cơ sở dữ liệu PostgreSQL

  2. Cách ly giao dịch trong PostgreSQL

  3. Làm cách nào để đặt lại chuỗi khóa chính của postgres khi nó không đồng bộ?

  4. Cách chèn vào mảng trong PostgreSQL

  5. Gặp lỗi:Xác thực ngang hàng không thành công đối với postgres của người dùng, khi cố gắng làm cho pgsql hoạt động với đường ray