Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .translation-init
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Translation initialization: 2025-08-11T07:40:38.341999
Translation initialization: 2025-08-11T07:47:48.618469
Original file line number Diff line number Diff line change
@@ -1,44 +1,54 @@
## CPU profiling
---
title: 如何对 Databend 进行性能分析
---

## CPU 性能分析

```
go tool pprof -http="0.0.0.0:8081" http://localhost:8080/debug/pprof/profile?seconds=30
```

打开 `<your-ip>:8081` 并在站点标题的 VIEW 菜单中选择 `Flame Graph`:
<img src="https://user-images.githubusercontent.com/172204/208336392-5b64bb9b-cce8-4562-9e05-c3d538e9d8a6.png"/>
打开 `<your-ip>:8081`,并从网站头部的 VIEW 菜单中选择 `Flame Graph`:
<img alt="CPU profiling" src="https://user-images.githubusercontent.com/172204/208336392-5b64bb9b-cce8-4562-9e05-c3d538e9d8a6.png"/>

## 查询级别的 CPU 性能分析

## Memory profiling
`EXPLAIN PERF <statement>` 也可用于 CPU 性能分析,它专注于特定查询,并从其他节点收集 CPU 分析数据,以帮助分析查询性能。更多细节请查阅 [EXPLAIN PERF](/sql/sql-commands/explain-cmds/explain-perf)。

`databend-query` 和 `databend-meta` 可以选择使用 `jemalloc` 构建,
它提供了各种内存 profiling 功能。
## 内存性能分析

目前,它在 Mac 上不起作用,无论 intel 还是 Arm
`databend-query` 和 `databend-meta` 可以选择性地使用 `jemalloc` 进行构建,`jemalloc` 提供了多种内存性能分析功能

### 启用内存 profiling
目前,它在 Mac(无论是 Intel 还是 Arm 芯片)上无法工作。

1. 构建启用 `memory-profiling` 功能的 `databend-query`:
```
cargo build --bin databend-query --release --features memory-profiling
```
### 启用内存性能分析

2. 启动 `databend`,使用环境变量 `MALLOC_CONF` 启用内存 profiling:

```
MALLOC_CONF=prof:true,lg_prof_interval:30 ./target/release/databend-query
```
1. 启用 `memory-profiling` 功能来构建 `databend-query`:

### 生成堆 profile
```
cargo build --bin databend-query --release --features memory-profiling
```

在 `pdf` 中生成一个调用图,说明此间隔期间的内存分配:
2. 启动 `databend`,使用环境变量 `MALLOC_CONF` 来启用内存性能分析:

```
MALLOC_CONF=prof:true,lg_prof_interval:30 ./target/release/databend-query
```

### 生成堆分析报告

生成一个 `pdf` 格式的调用图,展示此时间间隔内的内存分配情况:

```
jeprof --pdf ./target/release/databend-query heap.prof > heap.pdf
```

<img src="https://user-images.githubusercontent.com/172204/204963954-f6eacf10-d8bd-4469-9c8d-7d30955f1a78.png" width="600"/>
<img alt="Generate heap profile" src="https://user-images.githubusercontent.com/172204/204963954-f6eacf10-d8bd-4469-9c8d-7d30955f1a78.png" width="600"/>

### 快速 jeprof

对于大型堆分析,jeprof 非常慢,瓶颈在于 `addr2line`。如果你想从 **30 分钟** 加速到 **3 秒**,请使用:

### Fast jeprof
jeprof 对于大型堆分析来说非常慢,瓶颈在于 `addr2line`,如果你想把速度从 **30 分钟提高到 3 秒**,请使用:
```
git clone https://github.com/gimli-rs/addr2line
cd addr2line
Expand Down
Original file line number Diff line number Diff line change
@@ -1,63 +1,63 @@
---
title: 理解 Databend 的部署方式
sidebar_label: 部署方式
title: 理解 Databend 部署
sidebar_label: 理解部署
description: 描述 Databend 的部署模式
---

import LanguageDocs from '@site/src/components/LanguageDocs';

## Databend 节点类型

在 Databend 部署中,使用了两种类型的节点:Meta 节点和 Query 节点。
在 Databend 部署中,会使用两种类型的节点:Meta 节点和 Query 节点。

Meta 节点负责存储和管理各种类型的元数据。这包括与数据库、表和集群相关的信息。此外,Meta 节点还处理用户信息,例如授权和身份验证。它作为管理和组织元数据以及用户相关数据的中心仓库
Meta 节点负责存储和管理各种类型的元数据(Metadata),包括与数据库、表和集群相关的信息。此外,Meta 节点还处理用户信息,例如授权和认证。它作为管理和组织元数据及用户相关数据的中央存储库

另一方面,Query 节点专门用于处理查询。它负责执行用户查询,从底层存储中检索数据,并将结果返回给用户。Query 节点处理 Databend 的计算方面,确保高效准确的查询处理
另一方面,Query 节点专用于处理查询。它负责执行用户查询,从底层存储中检索数据,并将结果返回给用户。Query 节点处理 Databend 的计算方面,确保高效、准确地处理查询

请注意,当我们提到“节点”时,它指的是托管和运行 Databend 系统特定组件的单个服务器。每个节点,例如 Meta 节点或 Query 节点,通常在处理数据和执行查询方面发挥着不同的作用
请注意,当我们提到“节点”时,它指的是托管和运行 Databend 系统特定组件的独立服务器。每个节点, Meta 节点或 Query 节点,通常在处理数据和执行查询方面有不同的用途

## 部署模式

Databend 部署提供两种模式:standalone 和 cluster,每种模式都有不同的应用场景和节点配置。
Databend 部署提供两种模式:单机(Standalone)和集群(Cluster),每种模式都有不同的应用场景和节点配置。

### Standalone 部署
### 单机部署

在 standalone 模式下,标准配置由单个 Meta 节点和单个 Query 节点组成。这种最小设置适用于测试目的或小规模部署。但是,重要的是要注意,由于其有限的可扩展性和缺少高可用性功能,不建议在生产环境中使用 standalone 模式
在单机模式下,标准配置包括一个 Meta 节点和一个 Query 节点。这种最小化设置适用于测试目的或小规模部署。但需要注意的是,由于其可扩展性有限且缺乏高可用性功能,不建议在生产环境中使用单机模式

<img src="/img/deploy/deploy-standalone-arch.png"/>
<img alt="单机部署" src="/img/deploy/deploy-standalone-arch.png"/>

Standalone Databend 部署中,可以将 Meta 节点和 Query 节点都托管在单个服务器上。文档中的以下主题可帮助您设置和部署 standalone Databend:
在 Databend 单机部署中,可以将 Meta 节点和 Query 节点都托管在同一台服务器上。文档中的以下主题可帮助您设置和部署单机版 Databend:

- [Deploying a Standalone Databend](01-non-production/01-deploying-databend.md)
- [Local and Docker Deployments](01-non-production/00-deploying-local.md)
- [部署单机版 Databend](01-non-production/01-deploying-databend.md)
- [本地和 Docker 部署](01-non-production/00-deploying-local.md)

### Cluster 部署
### 集群部署

Cluster 模式专为更大规模的部署而设计,并提供增强的功能。在 Databend 集群中,建议至少有三个 Meta 节点,形成一个 Meta 集群,以确保高可用性和容错能力。对于生产目的,Databend 建议使用由三到五个 Meta 节点组成的 Meta 集群。
集群模式专为大规模部署设计,并提供增强功能。在 Databend 集群中,建议至少有三个 Meta 节点,组成一个 Meta 集群以确保高可用性和容错性。对于生产环境,Databend 建议使用由三到五个 Meta 节点组成的 Meta 集群。

在 Databend 集群中,可以部署多个 Query 节点,并且可以通过将特定的 Query 节点分组在一起(使用 Cluster ID)来创建更强大的 Query 集群,以满足不同的查询性能需求。一个 Databend 集群有能力容纳多个 Query 集群。默认情况下,Databend 会最大限度地利用计算并发性,允许单个 SQL 查询利用单个 Query 节点中的所有可用 CPU 核心。但是,当使用 Query 集群时,Databend 会利用并发调度并在整个集群中执行计算。这种方法最大限度地提高了系统性能并提供了增强的计算能力
在 Databend 集群中,可以部署多个 Query 节点,并且可以通过将特定的 Query 节点组合在一起(使用集群 ID)来创建更强大的 Query 集群,以满足不同的查询性能要求。一个 Databend 集群可以容纳多个 Query 集群。默认情况下,Databend 会最大限度地利用计算并发性,允许单个 SQL 查询使用单个 Query 节点内的所有可用 CPU 核心。但是,当使用 Query 集群时,Databend 会利用并发调度,在整个集群中执行计算。这种方法可以最大限度地提高系统性能并提供增强的计算能力

<img src="/img/deploy/deploy-cluster-arch.png"/>
<img alt="集群部署" src="/img/deploy/deploy-cluster-arch.png"/>

#### Query 集群大小
#### Query 集群规模

对于 Query 集群,Databend 没有特定的最佳实践或推荐的节点数量。Query 集群中的节点数量可以根据您的具体需求和工作负载而变化
对于 Query 集群,Databend 没有特定的最佳实践或推荐的节点数量。Query 集群中的节点数量可以根据您的具体要求和工作负载而变化

Query 集群的主要目标是确保查询处理速度满足您的需求并提供最佳性能。可以相应地调整集群中的节点数量,以实现所需的查询性能和吞吐量。

#### 租户管理
#### 租户(Tenant)管理

租户是指利用系统提供的服务或资源的实体或组织。在 Databend 中,租户与唯一的租户 ID 相关联,该 ID 用作在 Databend 中区分和管理其数据、用户和资源的标识符
租户(Tenant)是指使用系统提供的服务或资源的实体或组织。在 Databend 中,一个租户(Tenant)关联一个唯一的租户 ID(Tenant ID),该 ID 作为标识符,用于在 Databend 中区分和管理其数据、用户和资源

对于 Query 集群,当 Query 节点收到 SQL 请求时,计算工作负载会在共享相同租户 ID 和集群 ID 的 Query 节点之间有效地分配。请注意,具有相同租户 ID 但不同集群 ID 的 Query 节点提供了一种工作负载隔离机制,同时仍然共享相同的数据和用户列表。
Query 集群中,当一个 Query 节点收到 SQL 请求时,计算工作负载会有效地分配给共享相同租户 ID 和集群 ID 的 Query 节点。请注意,具有相同租户 ID 但不同集群 ID 的 Query 节点提供了一种工作负载隔离机制,同时仍然共享相同的数据和用户列表。

![Alt text](/img/deploy/tenantid.PNG)

## 部署环境

本主题提供有关 Databend 节点的推荐硬件规格和支持的对象存储平台的信息。

### 硬件建议
### 硬件推荐

<LanguageDocs

Expand All @@ -77,16 +77,16 @@ The table below outlines the recommended hardware specifications for servers run

'/>

| Hardware Specification | Standalone Mode | Cluster Mode (Meta Node) | Cluster Mode (Query Node) |
| 硬件规格 | 单机模式 | 集群模式(Meta 节点) | 集群模式(Query 节点) |
| ---------------------- | ----------------- | ------------------------ | ------------------------- |
| CPU | 16-cores or above | 4-cores or above | 16-cores or above |
| Memory | 32 GB or above | 16 GB or above | 32 GB or above |
| Data Disk (SSD) | 200-600 GB | 100-200 GB | 100-200 GB |
| Network Interface Card | 10 Gbps or above | 10 Gbps or above | 10 Gbps or above |
| CPU | 16 核及以上 | 4 核及以上 | 16 核及以上 |
| 内存 | 32 GB 及以上 | 16 GB 及以上 | 32 GB 及以上 |
| 数据盘(SSD| 200-600 GB | 100-200 GB | 100-200 GB |
| 网卡 | 10 Gbps 及以上 | 10 Gbps 及以上 | 10 Gbps 及以上 |

### 支持的对象存储

Databend 支持私有化部署和云对象存储解决方案。在部署 Databend 之前,请准备好您自己的对象存储。以下是支持的对象存储解决方案的列表
Databend 支持自托管和云对象存储解决方案。在部署 Databend 之前,请准备好您自己的对象存储。以下是支持的对象存储解决方案列表

- Amazon S3
- Azure Blob Storage
Expand All @@ -106,4 +106,4 @@ cn=
- 青云 QingStor
- 华为 OBS

'/>
'/>
Loading
Loading