性能调优技巧
GreptimeDB 实例的默认配置可能不适合所有场景。因此根据场景调整数据库配置和使用方式相当重要。
GreptimeDB 提供了各种指标来帮助监控和排查性能问题。官方仓库里提供了用于独立模式和集群模式的 Grafana dashboard 模版。
查询
指标
以下指标可用于诊断查询性能问题:
指标 | 类型 | 描述 |
---|---|---|
greptime_mito_read_stage_elapsed_bucket | histogram | 存储引擎中查询不同阶段的耗时。 |
greptime_mito_cache_bytes | gauge | 缓存内容的大小 |
greptime_mito_cache_hit | counter | 缓存命中总数 |
greptime_mito_cache_miss | counter | 缓存未命中总数 |
为对象存储开启缓存
我们推荐在使用对象存储时启用读取缓存和写入缓存。这可以将查询耗时缩短 10 倍以上。
读取缓存将对象或一段范围的数据存储在本地磁盘上,以避免再次从远程读取相同的数据。以下示例展示了如何为 S3 启用读取缓存。
cache_path
是存储缓存对象的目录。cache_capacity
是缓 存的容量。建议至少留出总磁盘空间的 1/10 用于缓存。
[storage]
type = "S3"
bucket = "ap-southeast-1-test-bucket"
root = "your-root"
access_key_id = "****"
secret_access_key = "****"
endpoint = "https://s3.amazonaws.com/"
region = "your-region"
cache_path = "/path/to/s3cache"
cache_capacity = "10G"
写入缓存起到 write-through 缓存的作用,在将文件上传到对象存储之前,会先将它们存储在本地磁盘上。这可以减少第一次查询的延迟。以下示例展示了如何启用写入缓存。
enable_experimental_write_cache
开关可用来启用写入缓存experimental_write_cache_size
用来设置缓存的容量experimental_write_cache_path
用来设置存储缓存文件的路径。默认情况下它位于数据主目录下。experimental_write_cache_ttl
用来设置缓存文件的 TTL。
[[region_engine]]
[region_engine.mito]
enable_experimental_write_cache = true
experimental_write_cache_size = "10G"
experimental_write_cache_ttl = "8h"
# experimental_write_cache_path = "/path/to/write/cache"