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

Quản lý kết nối trong PostgreSQL:Hướng dẫn

Hiệu suất luôn quan trọng trong bất kỳ hệ thống nào. Bạn sẽ cần tận dụng tốt các nguồn lực sẵn có để đảm bảo thời gian phản hồi tốt nhất có thể và có nhiều cách khác nhau để thực hiện việc này. Mọi kết nối đến cơ sở dữ liệu đều tiêu tốn tài nguyên vì vậy một trong những cách này là có một trình quản lý kết nối tốt giữa ứng dụng của bạn và cơ sở dữ liệu. Trong blog này, chúng tôi sẽ nói về pgBouncer, một trình kết nối chung cho PostgreSQL và chúng tôi sẽ chỉ ra cách triển khai điều này để cải thiện hiệu suất PostgreSQL của bạn.

Kết nối Poolers

Tùy thuộc vào lưu lượng hệ thống của bạn, có thể hữu ích nếu thêm một công cụ bên ngoài để giảm tải trên cơ sở dữ liệu của bạn, điều này sẽ cải thiện hiệu suất. Có thể nó là không đủ, nhưng nó là một điểm khởi đầu tốt. Đối với điều này, bạn nên triển khai một trình gộp kết nối

Kết nối tổng hợp là một phương pháp tạo một nhóm các kết nối và sử dụng lại chúng, tránh mở các kết nối mới đến cơ sở dữ liệu mọi lúc, điều này sẽ làm tăng đáng kể hiệu suất của các ứng dụng của bạn. PgBouncer là một trình gộp kết nối phổ biến được thiết kế cho PostgreSQL.

Cách hoạt động của PgBouncer

PgBouncer hoạt động như một máy chủ PostgreSQL, vì vậy bạn chỉ cần truy cập cơ sở dữ liệu của mình bằng thông tin PgBouncer (Địa chỉ IP / Tên máy chủ và Cổng) và PgBouncer sẽ tạo kết nối đến máy chủ PostgreSQL hoặc nó sẽ sử dụng lại một cái nếu nó tồn tại.

Khi PgBouncer nhận được kết nối, nó sẽ thực hiện xác thực, điều này phụ thuộc vào phương pháp được chỉ định trong tệp cấu hình. PgBouncer hỗ trợ tất cả các cơ chế xác thực mà máy chủ PostgreSQL hỗ trợ. Sau đó, PgBouncer sẽ kiểm tra kết nối được lưu trong bộ nhớ cache, có cùng tên người dùng + cơ sở dữ liệu kết hợp. Nếu một kết nối được lưu trong bộ nhớ cache được tìm thấy, nó sẽ trả kết nối đó cho máy khách, nếu không, nó sẽ tạo một kết nối mới. Tùy thuộc vào cấu hình PgBouncer và số lượng kết nối đang hoạt động, có thể kết nối mới được xếp hàng đợi cho đến khi nó có thể được tạo hoặc thậm chí bị hủy bỏ.

Hành vi của PgBouncer phụ thuộc vào chế độ gộp được định cấu hình:

  • tổng hợp phiên (mặc định):Khi một máy khách kết nối, một kết nối máy chủ sẽ được gán cho toàn bộ thời gian khách hàng vẫn kết nối. Khi máy khách ngắt kết nối, kết nối máy chủ sẽ được đưa trở lại vào nhóm.

  • tổng hợp giao dịch:Kết nối máy chủ chỉ được chỉ định cho một máy khách trong một giao dịch. Khi PgBouncer thông báo rằng giao dịch đã kết thúc, kết nối máy chủ sẽ được đưa trở lại nhóm.

  • gộp câu lệnh:Kết nối máy chủ sẽ được đưa trở lại vào nhóm ngay sau khi truy vấn hoàn tất. Các giao dịch nhiều sao kê không được phép trong chế độ này vì chúng sẽ bị phá vỡ.

Cách triển khai PgBouncer bằng ClusterControl

Đối với điều này, chúng tôi sẽ cho rằng bạn đã thiết lập và chạy cụm PostgreSQL của mình và bạn đang sử dụng ClusterControl để quản lý nó, nếu không, bạn có thể theo dõi bài đăng trên blog này để dễ dàng triển khai PostgreSQL để có tính khả dụng cao.

Vào ClusterControl -> Chọn PostgreSQL Cluster -> Cluster Actions -> Thêm Load Balancer -> PgBouncer. Ở đó, bạn có thể triển khai một nút PgBouncer mới sẽ được triển khai trong nút cơ sở dữ liệu đã chọn hoặc thậm chí nhập một nút PgBouncer hiện có.

Bạn sẽ cần chỉ định Địa chỉ IP hoặc Tên máy chủ, Cổng Nghe và PgBouncer thông tin đăng nhập. Khi bạn nhấn Deploy PgBouncer, ClusterControl sẽ truy cập vào nút, cài đặt và định cấu hình mọi thứ mà không cần bất kỳ sự can thiệp thủ công nào.

Bạn có thể theo dõi tiến trình trong Phần Hoạt động ClusterControl. Khi nó kết thúc, bạn cần tạo Pool mới. Đối với điều này, hãy đi tới ClusterControl -> Chọn cụm PostgreSQL -> Nodes -> PgBouncer Node.

Tại đây, bạn sẽ cần thêm các thông tin sau:

  • Tên máy chủ PgBouncer:Chọn máy chủ lưu trữ nút để tạo nhóm kết nối.

  • Tên nhóm:Tên nhóm và cơ sở dữ liệu phải giống nhau.

  • Tên người dùng:Chọn người dùng từ nút chính của PostgreSQL hoặc tạo một người dùng mới.

  • Chế độ nhóm:Nó có thể là một trong những chế độ mà chúng tôi đã đề cập trước đó:phiên (mặc định), giao dịch, hoặc tổng hợp câu lệnh.

  • Kích thước nhóm:Kích thước tối đa của nhóm cho cơ sở dữ liệu này. Giá trị mặc định là 20.

  • Kết nối Cơ sở dữ liệu Tối đa:Định cấu hình mức tối đa cho toàn cơ sở dữ liệu. Giá trị mặc định là 0, có nghĩa là không giới hạn.

Bây giờ, bạn sẽ có thể nhìn thấy Nhóm trong phần Nút.

Đây là cấu trúc liên kết cơ bản. Bạn có thể cải thiện nó, chẳng hạn như thêm các nút cân bằng tải, nhiều nút để tránh một điểm lỗi duy nhất và sử dụng một số công cụ như “Keepalived”, để đảm bảo tính khả dụng. Nó cũng có thể được thực hiện bằng cách sử dụng ClusterControl.

Kết luận

Sử dụng PgBouncer làm công cụ kết nối kết nối là một cách tốt để cải thiện hiệu suất cơ sở dữ liệu bằng cách sử dụng tốt các tài nguyên có sẵn trong máy chủ.

Bạn cũng có thể cải thiện cấu trúc liên kết này bằng cách sử dụng kết hợp PgBouncer + HAProxy để đạt được Tính khả dụng cao cho cụm PostgreSQL của bạn. Tất cả những điều này có thể được thực hiện từ cùng một giao diện người dùng ClusterControl.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ansible Loves PostgreSQL

  2. Sự khác biệt giữa loại dữ liệu DECIMAL và NUMERIC trong PSQL

  3. Cách tốt nhất để chọn các hàng ngẫu nhiên PostgreSQL

  4. Chia tỷ lệ theo chiều dọc PostgreSQL

  5. Nhóm người dùng PostgreSQL NL