持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情
高级设置*
增大内存*
内存不够时, 查询可能会出现‘Memory limit exceeded’, 这是因为doris对每个用户默认设置内存限制为 2g
| SHOW VARIABLES LIKE "%mem_limit%" ; |
|---|
| exec_mem_limit 的单位是 byte,可以通过 SET 命令改变 exec_mem_limit 的值。如改为 8GB。 |
| SET exec_mem_limit = 8589934592 ; |
| 上述设置仅仅在当前session有效, 如果想永久有效, 需要添加 global 参数 |
| SET GLOBAL exec_mem_limit = 8589934592 ; |
修改超时时间
doris默认最长查询时间为300s, 如果仍然未完成, 会被cancel掉
| SHOW VARIABLES LIKE "%query_timeout%" ; |
|---|
| 可以修改为60s |
| SET query_timeout = 60 ; |
| 同样, 如果需要全局生效需要添加参数 global |
| set global query_timeout = 60 ; |
doris的高可用方案
当部署多个 FE 节点时,用户可以在多个fe上部署负载均衡实现或者通过mysql connect 自动重连
jdbc : mysql ://[ host : port ],[ host : port ].../[ database ][? propertyName1 **][=**propertyValue1 ][& propertyName2 ][=propertyValue2 ]...
或者应用可以连接到和应用部署到同一机器上的 MySQL Proxy,通过配置 MySQL Proxy 的 Failover 和 Load Balance 功能来达到目的。
数据模型
在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。一张表包括行(Row) 和列(Column) 。Row即用户的一行数据。Column 用于描述一行数据中不同的字段。
Column可以分为两大类:Key(维度列)和Value(指标列)
Doris 的数据模型主要分为3类:
-
Aggregate
-
Uniq
-
Duplicate
Aggregate模型(聚合模型)
这是一个典型的用户信息和访问行为的事实表。 在一般星型模型中,用户信息和访问行为一般分别存放在维度表和事实表中。这里我们为了更加方便的解释 Doris 的数据模型,将两部分信息统一存放在一张表中。
表中的列按照是否设置了 AggregationType,分为 Key (维度列) 和 Value(指标列) 。没有设置 AggregationType 的,如 user_id、date、age … 等称为 Key,而设置了 AggregationType 的称为 Value。
当我们导入数据时,对于 Key 列相同的行和聚合成一行,而 Value 列会按照设置的 AggregationType 进行聚合。 AggregationType 目前有以下四种聚合方式:
-
SUM:求和,多行的 Value 进行累加。
-
REPLACE:替代,下一批数据中的 Value 会替换之前导入过的行中的 Value。
-
MAX:保留最大值。
-
MIN:保留最小值。
假设我们有以下导入数据(原始数据):