cau hinh tham so postgres

   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…

Đọc thêm  Cấu hình để kết nối với PostgreSQL từ bên ngoài

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


   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,…)


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

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.

Đọc thêm  Bí kíp Linux #5: Tạo file bằng trình soạn thảo vi

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 đó.

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.

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;

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

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

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

Cách 2: 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.

Nguồn: https://dangxuanduy.com/

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    0 0 votes
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments