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

Cấu hình tham số trong PostgreSQL

Mục lục

  1. 1. Các tham số cấu hình là gì?
  2. 2. Giải thích cấu trúc file postgresql.conf
  3. 3. Cách xem giá trị của các tham số
    1. 1. Cách 1: Xem trực tiếp trong file postgresql.conf
    2. 2. Cách 2: Xem ở view pg_settings
    3. 3. Cách 3: Sử dụng câu lệnh show
  4. 4. Cách thay đổi giá trị của tham số
    1. 1. Cách 1: Hướng dẫn cấu hình postgresql.conf
    2. 2. Cách 2: Hướng dẫn thay đổi bằng lệnh

1. Các tham số cấu hình là gì?

Rất nhiều các hoạt động, hay thành phần của PostgreSQL có thể điều chỉnh thông qua các tham số cấu hình.

Ví dụ:

  • Bạn có thể giới hạn số lượng session tối đa được phép kết nối đến database
  • Bạn có thể thay đổi port 5432 mặc định sang một port khác (như 25432 chẳng hạn)
  • Bạn có thể thay đổi đường dẫn lưu log, WAL  file…

Bạn có thể tham khảo thêm các bài viết sau:

Bài viết này sẽ hướng dẫn bạn cách cấu hình các tham số đó.

 

2. Giải thích cấu trúc file postgresql.conf

Thông thường, khi cài đặt PostgreSQL, các tham số sẽ được cấu hình theo giá trị mặc định, và được lưu tại file postgresql.conf. File này thường nằm tại data directory hay gọi cách khác là thư mục lưu trữ database của bạn.

Nếu bạn không tìm thấy nó ở đó, bạn hãy kết nối vào PostgreSQL bằng psql và gõ lệnh show config_file như sau:

$ psql
psql (13.2)
Type "help" for help.

postgres=# 
postgres=# show config_file;
              config_file               
----------------------------------------
 /var/lib/pgsql/13/data/postgresql.conf
(1 row)

File postgresql.conf có cấu trúc như sau:

# This is a comment
log_connections = yes
log_destination = 'syslog'
search_path = '"$user", public'
shared_buffers = 128MB

Như bạn thấy, trừ các dòng comment là các dòng có ký tự # ở đầu, các dòng còn lại là tên các tham số cùng giá trị tương ứng của nó.

Giả sử có tham số cấu hình mà có nhiều dòng gán nhiều giá trị xuất hiện trong file postgresql.conf thì giá trị xuất hiện cuối cùng sẽ được chấp nhận.

Khi cài đặt PostgreSQL, các tham số này sẽ được gán cho 1 giá trị mặc định.

Trên thực tế, việc để giá trị mặc định như vậy không thực sự tốt, bạn cần có sự hiểu biết về các tham số quan trọng để có thể nâng cao hiệu năng cơ sở dữ liệu. Phần lớn các tham số cấu hình này được phân loại theo các danh mục sau:

  • Các tham số  cấu hình kết nối (port, listener_addresses, max_connection…)
  • Các tham số cấú hình các thành phần trong PostgreSQL (wal_buffers, data_directory, shared_buffers, temp_buffers,…)
  • Các tham số cấu hình các tính năng trong PostgreSQL (archive_mode, autovacuum, row_security, hot_standby,…)
  • Các tham số cấu hình các vấn đề liên quan đến tối ưu (max_parallel_workers, synchronous_commit, checkpoint_timeout,…)

 

3. Cách xem giá trị của các tham số

1. Cách 1: Xem trực tiếp trong file postgresql.conf

Cách này có vẻ đơn giản nhất, bạn chỉ cần dùng 1 trình soạn thảo như vi, tìm đến thư mục lưu file postgresql.conf và mở nó lên xem thôi.

Tuy nhiên, bạn có thể sẽ gặp khó khăn trong việc tìm kiếm 1 tham số bạn cần trong đó.

2. Cách 2: Xem ở view pg_settings

Bạn sử dụng câu lệnh sau để hiển thị hết các tham số đang có

 select name, setting from pg_settings ;

                  name                  |                    setting                    
----------------------------------------+-----------------------------------------------
 allow_system_table_mods                | off
 application_name                       | psql
 archive_cleanup_command                | 
 archive_command                        | pgbackrest --stanza=my_stanza archive-push %p
 archive_mode                           | on
 archive_timeout                        | 10
 array_nulls                            | on
 authentication_timeout                 | 60
 autovacuum                             | on
 autovacuum_analyze_scale_factor        | 0.1
 autovacuum_analyze_threshold           | 50
 autovacuum_freeze_max_age              | 200000000
 autovacuum_max_workers                 | 3
 autovacuum_multixact_freeze_max_age    | 400000000
 autovacuum_naptime                     | 60
 autovacuum_vacuum_cost_delay           | 2
 autovacuum_vacuum_cost_limit           | -1
 autovacuum_vacuum_insert_scale_factor  | 0.2
 autovacuum_vacuum_insert_threshold     | 1000
 autovacuum_vacuum_scale_factor         | 0.2
 autovacuum_vacuum_threshold            | 50
--More--

Bạn cũng có thể sử dụng mệnh đề where để chỉ xem giá trị của tham số mình muốn

postgres=# select name, setting from pg_settings where name = 'archive_mode';
     name     | setting 
--------------+---------
 archive_mode | on
(1 row)

Cách này nói chung cũng ổn, nhưng lại là cách tôi ít dùng nhất.

3. Cách 3: Sử dụng câu lệnh show

Cách này đơn giản và tiện nhất, bạn muốn xem tham số nào chỉ cần gõ lệnh show + tên tham số là được

postgres=# show archive_mode;
 archive_mode 
--------------
 on
(1 row)

Cái hay ở chỗ, trong trường hợp bạn ko nhớ chính xác tên tham số, bạn chỉ cần gõ 1 phần tên của tham số. VD: Tôi chỉ gõ chữ archive. Sau đó tôi ấn Tab 2 lần, PostgreSQL sẽ gợi ý cho tôi tất cả các tham số có chứa chuỗi archive ở đầu

postgres=# show archive_
archive_cleanup_command  archive_command          archive_mode             archive_timeout          
postgres=# show archive_

Để xem toàn bộ các tham số, bạn sử dụng lệnh show all;

postgres=# show all;

 

4. Cách thay đổi giá trị của tham số

Có 2 cách để thay đổi giá trị cho tham số:

1. Cách 1: Hướng dẫn cấu hình postgresql.conf

2. Cách 2: Hướng dẫn thay đổi bằng lệnh

Sử dụng lệnh ALTER SYSTEM SET tên_tham_số = <giá trị mới>

postgres=# alter system set logging_collector = false;
ALTER SYSTEM

Các tham số sau khi bị sửa bằng cách này sẽ được tại file postgresql.auto.conf cùng thư mục với postgresql.conf. Các bạn chú ý nhé.

Sau khi đã thay đổi các tham số này, bạn reload lại cấu hình bằng lệnh sau để giá trị mới có hiệu lực.

postgres=# select pg_reload_conf();
 pg_reload_conf 
----------------
 t

hoặc:

$ pg_ctl reload
server signaled
-

Tuy nhiên, cũng sẽ có các tham số yêu cầu bạn phải khởi động lại PostgreSQL instance thì mới có hiệu lực. Làm thế nào để biết tham số nào thay đổi thì cần phải restart, tham số nào không, tôi sẽ trình bày ở một bài khác.

=============================
* 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