Timescale Cloud:性能、规模、企业

自托管产品

MST

默认情况下,TimescaleDB 使用默认的 PostgreSQL 服务器配置设置。但在某些情况下,这些设置并不适用,特别是当您拥有使用更多硬件资源(例如 CPU、内存和存储)的更大服务器时。本节解释了您最可能需要调整的一些设置。

其中一些设置是 PostgreSQL 设置,另一些是 TimescaleDB 特有的设置。对于大多数更改,您可以使用调优工具来调整配置。对于更高级的配置设置,或更改 timescaledb-tune 工具中未包含的设置,您可以手动调整 postgresql.conf 配置文件。

设置

  • shared_buffers
  • effective_cache_size
  • work_mem
  • maintenance_work_mem
  • max_connections

您可以调整这些设置以匹配机器的可用内存。为了更简单,您可以使用 PgTune 网站来计算要使用的设置:输入您的机器详细信息,并选择 data warehouse(数据仓库)DB 类型以查看建议的参数。

提示

您可以使用 timescaledb-tune 调整这些设置。

设置

  • timescaledb.max_background_workers
  • max_parallel_workers
  • max_worker_processes

PostgreSQL 使用工作进程池为实时查询和后台作业提供工作进程。如果您不配置这些设置,您的查询和后台作业可能会运行得更慢。

TimescaleDB 后台工作进程通过 timescaledb.max_background_workers 进行配置。每个数据库都需要分配一个后台工作进程来调度作业。额外的后台工作进程根据需要运行后台作业。此设置应为数据库总数与您希望同时运行的并发后台工作进程总数之和。默认情况下,timescaledb-tunetimescaledb.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_workersmax_parallel_workers 之和。

提示

您可以使用 timescaledb-tune 调整这些设置。

设置

  • synchronous_commit

默认情况下,磁盘写入是同步执行的,因此每个事务必须完成并发送成功消息,然后下一个事务才能开始。您可以通过设置 synchronous_commit = 'off' 将其更改为异步以提高写入吞吐量。请注意,禁用同步提交可能会导致某些已提交的事务丢失。为帮助降低风险,请勿同时更改 fsync 设置。有关异步提交和磁盘写入速度的更多信息,请参阅 PostgreSQL 文档

提示

您可以在 postgresql.conf 配置文件中调整这些设置。

设置

  • max_locks_per_transaction

TimescaleDB 依赖表分区来扩展时序工作负载。超表在查询期间需要获取许多块上的锁,这可能会耗尽允许的锁数量的默认限制。在某些情况下,您可能会看到如下警告:

psql: FATAL: out of shared memory
HINT: You might need to increase max_locks_per_transaction.

为避免此问题,您可以增加 max_locks_per_transaction 设置,其默认值通常为 64。此参数限制了每个事务使用的平均对象锁数量;只要所有事务的锁都适合锁表,单个事务可以锁定更多对象。

对于大多数工作负载,选择一个等于超表中预期最大块数两倍除以 max_connections 的数字。这考虑了超表查询使用的锁数量大约等于超表中的块数(如果查询需要访问所有块),或者如果查询使用索引,则为该数字的两倍。您可以使用 timescaledb_information.hypertables 视图查看当前拥有的块数量。更改此参数需要数据库重启,因此请确保选择一个更大的数字以允许未来的增长。有关锁管理的更多信息,请参阅 PostgreSQL 文档

提示

您可以在 postgresql.conf 配置文件中调整这些设置。

关键词

此页面有发现问题吗?报告问题 或在 GitHub 上编辑此页面