Thứ Sáu, 28 tháng 7, 2023

Tunning Là Gì? Hướng Dẫn PostgreSQL Tunning

Bài viết này sẽ hướng dẫn bạn thực hiện PostgreSQL Tunning

1. Tunning là gì?

Tunning hiểu đơn giản là quá trình điều chỉnh hệ thống nhằm tối ưu các dịch vụ sử dụng trên hệ thống.

Để tối ưu một hệ quản trị database ta thường chia thành 2 phần:

+ Tối ưu dịch vụ theo thông tin phần cứng: dựa vào thông tin phần cứng sẵn có, điều chỉnh hệ thống và cấu hình postgresql.

+ Tối ưu dịch vụ theo tính phức tạp của dữ liệu và tần suất truy cập dữ liệu trên các database.

  • Tối ưu dịch vụ theo thông tin phần cứng, ta có thể thưc hiện ngay sau khi hoàn thành việc lắp đặt phần cứng và setup dịch vụ.
  • Tối ưu dịch vụ theo tình trạng database sử dụng ta cần theo dõi quá trình hoạt động và query trên hệ thống trong thời gain sử dụng và điều chĩnh lại các cấu hình cho phù hợp với hệ thống.

2. PostgreSQL Tunning

Việc cấu hình các thông số setting của PostgreSQL thường được thực hiện trên file config hoặc cấu hình trực tiếp trong môi trường query của PostgreSQL.

Để kiểm tra các cài đặt của database, có thể dùng lệnh `show all;` để liệt kê cấu hình hiện tại.

postgres=# show all;

Dưới đây dưới là một vài biến cấu hình chính có thể thay đổi để tối ưu database:

  • max_connections: số lượng kết nối tối đa từ application đến server. Thường được set là 100 hoặc 4X(cores). Trường hợp set max_connections quá cao, sẽ làm tăng kích thước của các cấu trúc dữ liệu khác nhau trong Postgres, điều này có thể dẫn đến việc các chu kỳ CPU bị lãng phí và làm giảm hiệu xuất database.
  • checkpoint_segments: checkpoint là một hành động định kỳ lưu trữ thông tin về hệ thống. Checkpoint được lưu lại sau một số lượng segments, hành động này khá tốn kém tài nguyên trên hệ thống. Do vậy có thể tăng giá trị biến cấu hình này để làm giảm độ thường xuyên checkpoint.
  • work_mem: lượng memory postgreSQL có thể sử dụng để xử lý các task. Trường hợp cần xử lý nhiều task phức tạp, ta có thễ tăng work_mem để tăng hiệu xuất xử lý. Đương nhiên cũng cần lưu ý lượng memory khả dụng trên hệ thống.
  • random_page_cost: khoảng thời gian mà trình tối ưu hóa dành ra để đọc bộ nhớ trước khi tương tác với disk.

Đây là một vài thông tin cấu hình cơ bản, các bạn có thể tham khảo thêm các cấu hình liên quan khác trong link sau (postgresql.runtime-config.html)

PostgreSQL Tunning

Ngoài ra còn có các tool giúp tính toán và tunning postgresql như PGTune. Giúp đơn giản hóa việc PostgreSQL Tunning.

Ví dụ với 380GB RAM, 58 vCPU, 2000 connection của FO:


# WARNING

# this tool not being optimal

# for very high memory systems

# DB Version: 15

# OS Type: linux

# DB Type: web

# Total Memory (RAM): 380 GB

# CPUs num: 58

# Connections num: 2000

# Data Storage: ssd

max_connections = 2000

shared_buffers = 95GB

effective_cache_size = 285GB

maintenance_work_mem = 2GB

checkpoint_completion_target = 0.9

wal_buffers = 16MB

default_statistics_target = 100

random_page_cost = 1.1

effective_io_concurrency = 200

work_mem = 12451kB

min_wal_size = 1GB

max_wal_size = 4GB

max_worker_processes = 58

max_parallel_workers_per_gather = 4

max_parallel_workers = 58

max_parallel_maintenance_workers = 4

ALTER SYSTEM sẽ ghi giá trị vào postgresql.auto.conf, và bạn có thể sửa ở file postgresql.conf

# WARNING
# this tool not being optimal
# for very high memory systems

# DB Version: 15
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 380 GB
# CPUs num: 58
# Connections num: 2000
# Data Storage: ssd

ALTER SYSTEM SET
 max_connections = '2000';
ALTER SYSTEM SET
 shared_buffers = '95GB';
ALTER SYSTEM SET
 effective_cache_size = '285GB';
ALTER SYSTEM SET
 maintenance_work_mem = '2GB';
ALTER SYSTEM SET
 checkpoint_completion_target = '0.9';
ALTER SYSTEM SET
 wal_buffers = '16MB';
ALTER SYSTEM SET
 default_statistics_target = '100';
ALTER SYSTEM SET
 random_page_cost = '1.1';
ALTER SYSTEM SET
 effective_io_concurrency = '200';
ALTER SYSTEM SET
 work_mem = '12451kB';
ALTER SYSTEM SET
 min_wal_size = '1GB';
ALTER SYSTEM SET
 max_wal_size = '4GB';
ALTER SYSTEM SET
 max_worker_processes = '58';
ALTER SYSTEM SET
 max_parallel_workers_per_gather = '4';
ALTER SYSTEM SET
 max_parallel_workers = '58';
ALTER SYSTEM SET
 max_parallel_maintenance_workers = '4';

Ví dụ khác với 128GB RAM, 16 vCPU, 1000 connection:


Tham số cấu hình do tool sinh ra:
# WARNING
# this tool not being optimal
# for very high memory systems

# DB Version: 15
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 128 GB
# CPUs num: 16
# Connections num: 1000
# Data Storage: ssd

max_connections = 1000
shared_buffers = 32GB
effective_cache_size = 96GB
maintenance_work_mem = 2GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 8388kB
min_wal_size = 1GB
max_wal_size = 4GB
max_worker_processes = 16
max_parallel_workers_per_gather = 4
max_parallel_workers = 16
max_parallel_maintenance_workers = 4

Cách thay đổi:

# WARNING
# this tool not being optimal
# for very high memory systems

# DB Version: 15
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 128 GB
# CPUs num: 16
# Connections num: 1000
# Data Storage: ssd

ALTER SYSTEM SET
 max_connections = '1000';
ALTER SYSTEM SET
 shared_buffers = '32GB';
ALTER SYSTEM SET
 effective_cache_size = '96GB';
ALTER SYSTEM SET
 maintenance_work_mem = '2GB';
ALTER SYSTEM SET
 checkpoint_completion_target = '0.9';
ALTER SYSTEM SET
 wal_buffers = '16MB';
ALTER SYSTEM SET
 default_statistics_target = '100';
ALTER SYSTEM SET
 random_page_cost = '1.1';
ALTER SYSTEM SET
 effective_io_concurrency = '200';
ALTER SYSTEM SET
 work_mem = '8388kB';
ALTER SYSTEM SET
 min_wal_size = '1GB';
ALTER SYSTEM SET
 max_wal_size = '4GB';
ALTER SYSTEM SET
 max_worker_processes = '16';
ALTER SYSTEM SET
 max_parallel_workers_per_gather = '4';
ALTER SYSTEM SET
 max_parallel_workers = '16';
ALTER SYSTEM SET
 max_parallel_maintenance_workers = '4';

Chúc bạn thực hiện PostgreSQL Tunning thành công!

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master