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

Điều chỉnh PostgreSQL:Những điều quan trọng để thúc đẩy hiệu suất

PostgreSQL và Hiệu suất

Hiệu suất là một trong những yêu cầu quan trọng trong thiết kế kiến ​​trúc phần mềm và đã là trọng tâm của các nhà phát triển PostgreSQL ngay từ những ngày đầu thành lập, cũng được thể hiện trong cam kết nguồn PostgreSQL Git sau:

commit d31084e9d1118b25fd16580d9d8c2924b5740dff
Author: Marc G. Fournier <[email protected]>
Date:   Tue Jul 9 06:22:35 1996 +0000

   Postgres95 1.01 Distribution - Virgin Sources

[...]

diff --git a/src/backend/access/heap/stats.c b/src/backend/access/heap/stats.c
new file mode 100644
index 0000000000..d41d01ac1b
--- /dev/null
+++ b/src/backend/access/heap/stats.c
@@ -0,0 +1,329 @@
+/*-------------------------------------------------------------------------
+ *
+ * stats.c--
+ *    heap access method debugging statistic collection routines
+ *
+ * Copyright (c) 1994, Regents of the University of California

[...]

+ * Also note that this routine probably shouldn't have to exist, and does
+ * screw up the call graph rather badly, but we are wasting so much time and
+ * system resources being massively general that we are losing badly in our
+ * performance benchmarks.
+ */

PostgreSQL đạt được hiệu suất bằng cách triển khai các tính năng khác nhau:

  • Một số loại chỉ mục
  • Công cụ lập kế hoạch và tối ưu hóa truy vấn có thể tận dụng các hệ thống đa xử lý
  • MVCC
  • Phân vùng bảng

Lựa chọn môi trường

Với nhiều tùy chọn có sẵn ngày nay, có nhiều câu hỏi:

  • Trên tiền đề hay trên đám mây?
  • Kim loại trần hay được ảo hóa?
  • Phần cứng được gắn thương hiệu hay xây dựng của riêng bạn?
  • Các hàm cấp thấp của PostgreSQL hoặc fsync ảnh hưởng đến hiệu suất phần cứng như thế nào?
  • Đĩa cục bộ hay bộ nhớ dùng chung?
  • Cần thiết lập điều chỉnh hệ điều hành nào?

Một lần nữa, PostgreSQL wiki là một điểm khởi đầu rất tốt cho hiệu suất của mọi thứ.

Những Điều Chính Cần Tìm Là Gì?

Vì có rất nhiều tài liệu liên quan đến các khía cạnh khác nhau của việc điều chỉnh hiệu suất PostgreSQL và thiết kế hệ thống (gợi ý:tìm kiếm trang cho xfs), blog này không có nghĩa là đi sâu vào bất kỳ chủ đề nào đã được thảo luận, mà là quan điểm của sysadmin về việc bắt đầu từ đâu khi trọng tâm chính là tránh tranh chấp tài nguyên. Tôi cũng sẽ chỉ ra nhiều tài liệu tham khảo đề cập đến các vấn đề cụ thể một cách chi tiết hơn. Lời khuyên của chuyên gia trong tất cả các lĩnh vực quan trọng đối với hiệu suất PostgreSQL có sẵn thông qua nhiều công ty cung cấp Dịch vụ Chuyên nghiệp.

Hãy bắt đầu!

Thu thập thông tin

Giả sử cài đặt mặc định và biết rằng PostgreSQL không cố gắng được điều chỉnh tốt và thậm chí có thể có một số lỗi, bước này bao gồm việc thiết lập các công cụ giám sát cần thiết.

Giám sát tốt là rất quan trọng trong việc hiểu ứng dụng và có thể nhanh chóng theo dõi các tài nguyên bị ảnh hưởng và điều này đặc biệt đúng đối với các nhà cung cấp dịch vụ đám mây nơi có thể không có quyền truy cập vào máy chủ cơ sở dữ liệu để chạy các điểm chuẩn cho CPU hoặc I / O:

Fig.1 - SlideShare, Jignesh Shah, Các phương pháp hay nhất với Managed PostgreSQL trong đám mây

Phản ứng với cảnh báo hiệu suất hệ thống

Các công cụ giám sát sẽ vẽ biểu đồ và cảnh báo về các chỉ số hoạt động của hệ thống:

CPU:

  • Cảnh báo - Mức sử dụng cao cho biết một truy vấn đang chạy lâu.
    • Tác động - Thời gian phản hồi của ứng dụng.
    • Hành động - Xem xét các chỉ số đo lường thống kê cơ sở dữ liệu để xác định các truy vấn cần điều chỉnh.

I / O:

  • Cảnh báo - Số lượng hoặc số lần đọc cao.
    • Tác động - Thời gian phản hồi của ứng dụng.
    • Hành động - Thêm một bản sao đã đọc khác. Xem lại các chỉ số thống kê cơ sở dữ liệu để xác định các truy vấn đang chạy.
  • Cảnh báo - Số lần ghi cao.
    • Tác động - Thời gian phản hồi của ứng dụng.
    • Hành động - Điều chỉnh các thông số GUC shared_buffers, work_mem và Maint_work_mem. Điều chỉnh điểm kiểm tra và đảm bảo autovacuum được điều chỉnh chính xác. Nếu PostgreSQL được cài đặt trên phần cứng của riêng bạn, hãy định cấu hình không gian bảng và / hoặc cân nhắc đến sharding nhưng hãy hiểu các lưu ý về sharding.

Bộ nhớ:

  • Cảnh báo - Sử dụng nhiều bộ nhớ.
    • Tác động - Hiệu suất I / O.
    • Hành động - Xem xét các chỉ số đo lường thống kê cơ sở dữ liệu để xác định các truy vấn cần điều chỉnh.

Mạng:

  • Cảnh báo - Độ trễ cao. Thông thường đây là một vấn đề DBaaS.
    • Tác động - Khách hàng, nhân rộng.
    • Hành động - Định vị lại các máy chủ cơ sở dữ liệu gần hơn với máy chủ giao diện người dùng.
  • Cảnh báo - Số lượng kết nối cao.
    • Tác động - Khách hàng.
    • Hành động - Cân nhắc sử dụng tính năng thăm dò kết nối.

Các chỉ số hiệu suất nội bộ của cơ sở dữ liệu

Các chế độ xem pg_ * là cửa sổ cho hiệu suất của công cụ cơ sở dữ liệu và các ứng dụng quản lý PostgreSQL đã được viết để hỗ trợ việc tương quan với sự phong phú của thông tin có sẵn thông qua các truy vấn SQL khác nhau. Các phần mở rộng bổ sung tồn tại và chúng thường được tích hợp hoặc có sẵn dưới dạng phần bổ trợ.

Việc sử dụng các công cụ như vậy sẽ đơn giản hóa tác vụ DBA và đảm bảo rằng các phương pháp hay nhất được tuân thủ khi thiết lập và định cấu hình cụm cơ sở dữ liệu.

Thống kê cơ sở dữ liệu

Các công cụ giám sát như ClusterControl sử dụng thống kê hoạt động cơ sở dữ liệu để hỗ trợ DBA điều chỉnh hiệu suất:

Fig.2 - Somenines, Những điều quan trọng cần theo dõi trong PostgreSQL - Phân tích khối lượng công việc của bạnTải xuống Báo cáo chính thức hôm nay Quản lý &Tự động hóa PostgreSQL với ClusterControlTìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng quy mô PostgreSQLTải xuống báo cáo chính thức

Điều chỉnh truy vấn

Bắt đầu với phiên bản 9.5 PostgreSQL bao gồm các cải tiến hiệu suất truy vấn đáng kể như chỉ mục BRIN và truy vấn song song:

Fig.3 - 2ndQuadrant, Thomas Vondra, Cải tiến hiệu suất trong PostgreSQL 9.5 (và hơn thế nữa)

Khóa

Kiểm soát đồng thời dành riêng một chương trong tài liệu PostgreSQL. Sử dụng các công cụ giám sát để được cảnh báo khi số lượng khóa hoặc thời lượng khóa vượt quá ngưỡng và giải quyết vấn đề bằng cách tìm kiếm các chỉ mục bị thiếu, xem lại mã ứng dụng hoặc bằng cách chuyển sang thăm dò kết nối.

Tải hàng loạt

Đồng bộ_commit có thể được tắt trong quá trình nhập dữ liệu lớn. Các tùy chọn khác được thảo luận trong phần tài liệu PostgreSQL Tạo cơ sở dữ liệu.

Kết luận

Điều chỉnh hiệu suất PostgreSQL là một nhiệm vụ phức tạp. Sự phức tạp đến từ rất nhiều tùy chọn có sẵn, đây là một lập luận mạnh mẽ ủng hộ PostgreSQL. Không có viên đạn bạc nào để giải quyết các vấn đề về hiệu suất, thay vào đó là các chi tiết cụ thể của ứng dụng cuối cùng quyết định các yêu cầu điều chỉnh. Do đó, các công cụ giám sát có thể hỗ trợ đạt được thông tin chi tiết về hiệu suất liên quan đến hiệu suất hệ thống và hơn nữa cho phép xác định các khu vực cụ thể của PostgreSQL cần điều chỉnh cũng như các truy vấn SQL yêu cầu tối ưu hóa. Ngoài ra, các hệ thống quản lý cơ sở dữ liệu có thể hỗ trợ việc thiết lập và quản trị PostgreSQL để đảm bảo rằng các phương pháp hay nhất được tuân thủ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để có chức năng ngoại tuyến hoàn chỉnh trong ứng dụng web với cơ sở dữ liệu PostgreSQL?

  2. SQLAlchemy create_all () không tạo bảng

  3. Mẹo điều chỉnh hiệu suất PostgreSQL

  4. PostgreSQL 9.3:Bảng tổng hợp động

  5. PostgreSQL chậm trên một bảng lớn với các mảng và nhiều bản cập nhật