Mục lục
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.
Nguồn: https://dangxuanduy.com/
Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.
KHOÁ DÀNH CHO NGƯỜI MỚI
KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)
CÁC KHOÁ NÂNG CAO:
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c
KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD
CÁC KHOÁ COMBO:
COMBO 1: ADMIN 1 + MULTITENANT 12c
COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD
LỊCH HỌC:
Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE
ĐĂNG KÝ:
https://forms.gle/MtCAoRQFenP886y79
Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.