默认情况下,TimescaleDB 使用默认的 PostgreSQL 服务器配置设置。但是,在某些情况下,这些设置可能不合适,特别是当您拥有使用更多硬件资源(如 CPU、内存和存储)的较大型服务器时。本节介绍您最有可能需要调整的一些设置。
其中一些设置是 PostgreSQL 设置,而另一些是 TimescaleDB 特有的设置。对于大多数更改,您可以使用 tuning tool 来调整您的配置。对于更高级的配置设置,或者要更改 timescaledb-tune
工具中未包含的设置,您可以 手动调整 postgresql.conf
配置文件。
设置
shared_buffers
effective_cache_size
work_mem
maintenance_work_mem
max_connections
您可以调整这些设置中的每一个,以匹配机器的可用内存。为了更轻松,您可以使用 PgTune 网站来计算要使用的设置:输入您的机器详细信息,然后选择 data warehouse
数据库类型以查看建议的参数。
提示
您可以使用 timescaledb-tune
调整这些设置。
设置
timescaledb.max_background_workers
max_parallel_workers
max_worker_processes
PostgreSQL 使用工作进程池为实时查询和后台作业提供工作进程。如果您不配置这些设置,您的查询和后台作业可能会运行得更慢。
TimescaleDB 后台工作进程通过 timescaledb.max_background_workers
进行配置。每个数据库都需要分配一个后台工作进程来调度作业。其他工作进程根据需要运行后台作业。此设置应为数据库总数和您希望在任何时候运行的并发后台工作进程总数之和。默认情况下,timescaledb-tune
将 timescaledb.max_background_workers
设置为 16。您可以直接更改此设置,使用 --max-bg-workers
标志,或调整 TS_TUNE_MAX_BG_WORKERS
Docker 环境变量。
TimescaleDB 并行工作进程通过 max_parallel_workers
进行配置。对于较大的查询,PostgreSQL 会在并行工作进程可用时自动使用它们。增加此设置可以提高触发使用并行工作进程的大型查询的查询性能。默认情况下,此设置对应于可用的 CPU 数量。您可以直接更改此参数,通过调整 --cpus
标志,或使用 TS_TUNE_NUM_CPUS
Docker 环境变量。
max_worker_processes
设置定义了可供后台工作进程和并行工作进程使用的工作进程总池,以及少量内置的 PostgreSQL 工作进程。它应该至少是 timescaledb.max_background_workers
和 max_parallel_workers
之和。
提示
您可以使用 timescaledb-tune
调整这些设置。
设置
synchronous_commit
默认情况下,磁盘写入是同步执行的,因此每个事务都必须完成并发送成功消息,然后才能开始下一个事务。您可以将其更改为异步以通过设置 synchronous_commit = 'off'
来提高写入吞吐量。请注意,禁用同步提交可能会导致某些已提交的事务丢失。为了帮助降低风险,请勿同时更改 fsync
设置。有关异步提交和磁盘写入速度的更多信息,请参阅 PostgreSQL 文档。
提示
您可以在 postgresql.conf
配置文件中调整这些设置。
设置
max_locks_per_transaction
TimescaleDB 依赖于表分区来扩展时间序列工作负载。超表需要在查询期间获取许多数据块上的锁,这可能会耗尽允许持有的锁数量的默认限制。在某些情况下,您可能会看到如下警告:
psql: FATAL: out of shared memoryHINT: You might need to increase max_locks_per_transaction.
为了避免此问题,您可以将 max_locks_per_transaction
设置从默认值(通常为 64)增大。此参数限制每个事务使用的对象锁的平均数量;只要所有事务的锁都适合锁表,单个事务就可以锁定更多对象。
对于大多数工作负载,选择一个数字,该数字等于您期望在超表中拥有的最大数据块数量的两倍除以 max_connections
。这考虑到,如果您需要在查询中访问所有数据块,则超表查询使用的锁数量大致等于超表中的数据块数量;如果查询使用索引,则为该数量的两倍。您可以使用 timescaledb_information.hypertables
视图查看当前拥有多少数据块。更改此参数需要重启数据库,因此请确保选择更大的数字以留出一些增长空间。有关锁管理的更多信息,请参阅 PostgreSQL 文档。
提示
您可以在 postgresql.conf
配置文件中调整这些设置。
关键词