SelectDB案例 从 ClickHouse 到 Apache Doris到 4.0 版本,其中 Apache Doris 作为 分析加速场景的解决方案在整个系统中发挥着重要的作用。接下来将从场景需求、数据导入、 查询优化以及成本优化四个方面出发,分享基于 Doris 的读写优化经验,希望给读者带来 一些参考。 场景需求 6 目前我们有 800+ 标签, 1300+ 指标,对应 TDW 中有 80 + Source 表,单个标签、指 标的最大基数达到了 参数调优: max_XXXX_compaction_thread max_cumulative_compaction_num_singleton_deltas 优化 BE 提交逻辑:定期缓存 BE 列表,按批次随机提交到 BE 节点,细化负载均 衡粒度。 优化背景:在写入时发现某一个 BE 负载会远远高于其他的 BE,甚至出现 OOM。结合源 码发现:作业启动后会获取一次 BE 地址列表,从中随机选出一个 节点,除非作业异常报错,否则该节 点不会发生切换。 对于少量 Flink 作业大数据场景会导致选中的 BE 节点负载较高,因此我们尝试对 BE 提 交逻辑进行优化,设置每 1 小时缓存一次 BE 列表,每写入一个批次都随机从 BE 缓存列 表中获取一个进行提交,这样负载均衡的粒度就从 job 级别细化到每次提交的批次,使得 BE 间负载更加的均衡,这部分实现我们已经贡献到社区,欢迎大家一起使用并反馈。0 码力 | 12 页 | 1.55 MB | 1 年前3
百度智能云 Apache Doris 文档加。 如果在之后的使用过程中添加索引,如果表中已有数据,则需要重写所有数据,因此索引的创建时间取决于当前数据量。 内存表 内存表 当建表时指定了 属性。则 Doris 会尽量将该表的数据块缓存在存储引擎的 PageCache 中,已减少磁盘 IO。但这个属性不会保证数据块常驻在内存中,仅作为一种尽力而为的标识。 DROP-REPOSITORY DROP REPOSITORY DROP CREATE ODBC TABLE CREATE ODBC TABLE Description Description Doris 支持以创建外部表的方式,通过 ODBC 协议访问外部数据源,进行读写操作。目前云上支持的 ODBC 数据源包括: MySQL Oracle PostgreSQL 创建 ODBC 外部表需要在建表语句中填写外部数据源连接信息。 有两种方式提供连接信息。 一种是直接想连接信息描述在建表语句中。 ALTER_PRIV Baidu 百度智能云文档 SQL手册 90 :对指定的库或表的创建权限 :对指定的库或表的删除权限 :对指定资源的使用权限 另外还有两个语法糖权限可以用于快速授权: 类似读写权限。等同于授予: 这些权限。 类似只读权限,等同于 。 权限分类: 1. 库表权限:SELECT_PRIV,LOAD_PRIV,ALTER_PRIV,CREATE_PRIV,DROP_PRIV0 码力 | 203 页 | 1.75 MB | 1 年前3
Doris的数据导入机制以及原子性保证数据完整性问题 原始数据 导入结果 已生效 Vn 已生效 V1-Vn-1 未生效 数据 已生效 V1-Vn-1 02 导入的问题 Vn • 读取到未生效数据 • 生效的数据未被读取到 读写冲突问题 原始数据 查询导入结果 源 操作1 操作2 处理 失败 失败 源 操作1 操作2 重试成功 额外重试 处理两次 02 导入的问题 At-Most-Once & At-Least-Once RollBack • 事务状态改为 Abort • BE 等待回收任务删除已写入数据 Phase 2 总结 03 Doris 中的导入 • 写入带版本 • 查询带版本 多版本机制解决读写冲突 两阶段导入保证多表原子生效 • 支持并行导入 • 有冲突时按导入顺序生效,无冲突导入时并行生效 写入带版本 查询带版本 支持并行导入 冲突时按顺序生效 (多版本机制) (两阶段导入)0 码力 | 33 页 | 21.95 MB | 1 年前3
共 3 条
- 1













