暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Doris性能优化技巧与实践 ↗

大数据技能圈 2024-07-14
211

Apache Doris 是一个高性能的分析型数据库,适用于大数据实时分析场景。尽管 Doris 以其出色的性能而闻名,但在某些情况下,通过一些优化技巧可以进一步发挥其潜力。本文将介绍一些常见的性能优化方法,并提供详细的代码案例。

01

了解你的查询

性能优化的第一步是了解你的查询。使用 EXPLAIN
语句来查看查询的执行计划。

    EXPLAIN SELECT * FROM your_table;

    02

    索引优化

    确保你的表上有适当的索引以加速查询。Doris 支持多种索引类型,包括前缀索引、bitmap 索引等。

    2.1

    创建前缀索引

      CREATE INDEX prefix_index ON your_table (column1, column2);

      2.2

      创建 bitmap 索引

        CREATE INDEX bitmap_index ON your_table (column1) USING BITMAP;

        这或许是一个对你有用的开源项目data-warehouse-learning 项目是一套基于 MySQL + Kafka + Hadoop + Hive + Dolphinscheduler + Doris + Seatunnel + Paimon + Hudi + Iceberg + Flink + Dinky + DataRT + SuperSet 实现的实时离线数仓(数据湖)系统,以大家最熟悉的电商业务为切入点,详细讲述并实现了数据产生、同步、数据建模、数仓(数据湖)建设、数据服务、BI报表展示等数据全链路处理流程。

        https://gitee.com/wzylzjtn/data-warehouse-learning

        https://github.com/Mrkuhuo/data-warehouse-learning

        项目演示:

        03

        物化视图

        物化视图可以预先计算并存储查询结果,从而加快复杂查询的速度

        3.1

        创建物化视图

          CREATE MATERIALIZED VIEW sales_summary
          AS SELECT date, product_id, SUM(quantity) AS total_quantity
          FROM sales
          GROUP BY date, product_id;

          04

          分区优化

          合理使用分区可以提高查询性能,尤其是在处理大型表时。

          4.1

          创建分区表

            CREATE TABLE sales (
            date DATE,
            product_id INT,
            quantity INT,
            price DECIMAL(10, 2)
            )
            PARTITION BY RANGE (date) (
            PARTITION p202401 VALUES LESS THAN ('2024-02-01'),
            PARTITION p202402 VALUES LESS THAN ('2024-03-01')
            -- 其他分区...
            );

            05

            数据倾斜处理

            数据倾斜是影响性能的一个常见问题。使用 SHOW DATA SKEW
            命令来识别和处理数据倾斜。

              SHOW DATA SKEW ON your_table

              5.1

              分析数据倾斜结果

               执行 SHOW DATA SKEW
              命令后,你将得到一个数据倾斜的报告,通常包括以下信息:

              • 表名

              • 各列的数据量

              • 各分区的数据量

              • 数据倾斜的级别(如轻度、中度、严重)

              5.2

              处理数据倾斜的策略

              1)重新分区:如果数据倾斜是由于分区键的选择不当导致的,可以考虑重新设计分区键,使得数据更均匀地分布。
                -- 删除旧分区 
                ALTER TABLE your_table DROP PARTITION p202401;
                -- 创建新分区
                ALTER TABLE your_table ADD PARTITION p202401 VALUES LESS THAN ('2024-02-01');
                2)调整数据分布:如果数据倾斜是由于某些键值的基数过大,可以考虑对这些键值进行散列或使用随机前缀。
                使用随机分布键:在创建表时,可以使用随机分布键来避免数据倾斜。
                  CREATE TABLE your_table (  id INT,  value VARCHAR(255) ) DISTRIBUTED BY RANDOMLY;
                  调整副本数量:在某些情况下,增加副本数量可以帮助减轻数据倾斜的影响。
                  3)数据重分布:使用 ALTER TABLE REORGANIZE 命令重新分布数据到不同的分区。
                    ALTER TABLE your_table REORGANIZE PARTITION p202401;
                    4)使用物化视图:如果查询模式固定,可以使用物化视图来预先计算和存储查询结果,从而避免在原始数据上执行复杂查询。
                    5)优化查询:根据数据倾斜的具体情况,优化查询语句,例如通过调整 JOIN 顺序或使用子查询来减少数据倾斜的影响。
                    6)硬件调整:如果数据倾斜是由于某些节点的硬件性能较低导致的,可以考虑增加这些节点的资源或重新平衡集群资源。
                    7)使用数据采样:在设计表结构和索引之前,使用数据采样来分析数据分布,以便更好地规划分区和索引。

                    06

                    资源管理

                    Doris 允许你通过资源标签来管理资源使用,确保关键查询获得足够的资源。

                      SET [resource_group_name] = 'your_resource_tag';

                      07

                      批量操作

                       批量插入和更新操作通常比单个操作更高效。

                        INSERT INTO your_table VALUES
                        (1, 'product1', 100),
                        (2, 'product2', 200);
                        -- 更多数据...

                        08

                        选择合适的数据模型

                         Doris 支持不同的数据模型,如 Unique Key、Duplicate Key 等。选择适合你数据和查询模式的模型。

                        8.1

                        创建 Unique Key 表
                          CREATE TABLE unique_key_table (
                          id INT,
                          product_name VARCHAR(50),
                          price DECIMAL(10, 2)
                          )
                          UNIQUE KEY(id);

                          项目文档地址

                          添加作者进大数据交流群

                          推荐阅读

                          文章转载自大数据技能圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论