Starrocks的表引擎选择及表属性的设置详细说明

  1. 表引擎选择
    • OLAP引擎
      • 特点与适用场景
        • 这是StarRocks中用于数据分析场景的主要引擎。它针对海量数据的复杂分析查询进行了优化,能够高效地处理聚合、分组、排序等操作。例如,在数据仓库场景下,当需要对销售数据进行按地区、时间等维度的统计分析时,OLAP引擎能够快速返回结果。
        • 支持高并发的查询,多个用户同时进行数据分析查询时,系统能够合理分配资源,保证查询性能。
        • 数据存储结构上,它采用列式存储,这种存储方式在处理分析型查询时,只需要读取查询涉及的列,减少了不必要的数据读取,大大提高了查询效率。例如,在查询仅涉及销售额和销售时间的情况下,不需要读取产品名称等无关列的数据。
      • 创建示例:在创建表时,使用ENGINE = OLAP来指定表引擎为OLAP,如CREATE TABLE my_olap_table (... ) ENGINE = OLAP...
    • 其他引擎(如MySQL引擎)
      • 特点与适用场景
        • StarRocks也支持MySQL引擎,主要用于兼容MySQL协议,方便与已有的MySQL应用程序和工具进行集成。如果企业有大量基于MySQL开发的应用,并且希望将部分功能迁移到StarRocks或者实现数据共享,MySQL引擎就很有用。
        • 对于一些简单的事务处理或者对MySQL语法有严格依赖的场景,MySQL引擎可以提供熟悉的操作环境。不过,它在复杂分析性能方面相对OLAP引擎会较弱。
      • 创建示例CREATE TABLE my_mysql_table (... ) ENGINE = MYSQL...(具体语法可能因版本和配置略有差异)。
  2. 表属性设置
    • Duplicate Key(重复键)
      • 含义与作用
        • 当使用DUPLICATE KEY设置(如DUPLICATE KEY (column_name))时,表示指定列的值在表中可以重复。这在数据加载和处理过程中有重要作用,特别是在处理可能存在重复数据的场景。例如,在日志数据存储中,相同的连接ID(conn_id)可能会在不同时间点出现多次,使用DUPLICATE KEY可以方便地存储这些重复记录。
      • 示例说明CREATE TABLE test_table (... ) ENGINE = OLAP DUPLICATE KEY (id)...,这里id列的值允许重复。
    • DISTRIBUTED BY HASH(哈希分布)
      • 含义与作用
        • 通过DISTRIBUTED BY HASH (column_name) BUCKETS n(其中n为桶的数量)的设置,可以将数据按照指定列的哈希值均匀分布到多个桶中。这种分布方式能够提高数据的并行处理能力和查询性能。例如,在一个用户行为分析表中,按照用户ID(user)进行哈希分布,当查询某个用户的行为数据时,系统可以快速定位到包含该用户数据的桶,减少不必要的数据扫描。
      • 示例说明CREATE TABLE user_behavior_table (... ) ENGINE = OLAP DISTRIBUTED BY HASH (user) BUCKETS 10...,表示将数据按照user列的哈希值分布到10个桶中。
    • Properties属性组(如replication_num、in_memory等)
      • replication_num(副本数)
        • 含义与作用
          • 设置数据的副本数量,通过"replication_num" = "n"n为副本数)来指定。副本的存在主要是为了提高数据的可用性和容错性。例如,当某个存储节点出现故障时,其他副本可以保证数据的正常访问。在分布式环境中,合适的副本数设置可以平衡数据安全性和存储成本。
        • 示例说明CREATE TABLE my_table (... ) PROPERTIES ( "replication_num" = "3"... ),表示表数据有3个副本。
      • in_memory(是否在内存中)
        • 含义与作用
          • 通过"in_memory" = "true/false"来设置数据是否存储在内存中。设置为true时,可以大大提高数据的读写速度,适用于对性能要求极高且数据量能够适应内存容量的场景。不过,将所有数据存储在内存会增加内存资源的消耗。
        • 示例说明CREATE TABLE high_performance_table (... ) PROPERTIES ( "in_memory" = "true"... ),表示该表数据存储在内存中。
      • storage_format(存储格式)和enable_persistent_index(持久化索引)
        • 含义与作用
          • storage_format指定数据的存储格式,不同的存储格式在存储效率、压缩率、读写性能等方面有所不同。enable_persistent_index用于设置是否启用持久化索引。持久化索引可以在系统重启后更快地恢复数据访问,提高系统的稳定性和性能。
        • 示例说明CREATE TABLE my_table (... ) PROPERTIES ( "storage_format" = "DEFAULT", "enable_persistent_index" = "false"... ),这里使用默认存储格式且不启用持久化索引。
      • compression(压缩)
        • 含义与作用
          • 通过设置compression属性(如"compression" = "LZ4")来指定数据的压缩算法。压缩可以有效减少数据存储空间,降低存储成本,同时在一定程度上也可能会影响数据的读写性能。不同的压缩算法有不同的压缩率和性能特点,LZ4是一种快速压缩算法,在压缩和解压缩速度上表现较好。
        • 示例说明CREATE TABLE storage_efficient_table (... ) PROPERTIES ( "compression" = "LZ4"... ),表示该表数据使用LZ4算法进行压缩。
      • dynamic_partition(动态分区)
      • 功能与原理
        • 动态分区允许根据数据的某个时间相关列(如日期、时间戳等)自动创建和管理分区。例如,在日志数据存储中,可以按照日期来划分分区。每天的数据自动进入对应的日期分区,这样在查询特定日期范围的日志时,系统可以快速定位到相关分区进行查询,避免全表扫描。
        • 可以设置分区的规则,包括起始分区、分区的时间间隔等。例如,设置起始分区为2024 - 01 - 01,分区间隔为DAY,那么系统会自动从这个日期开始,每天创建一个新分区来存储当天的数据。
      • 配置示例:在创建表时,可以添加如下属性:
PROPERTIES (
           "dynamic_partition.time_unit" = "DAY",
           "dynamic_partition.start" = "2024-01-01",
           "dynamic_partition.end" = "2024-12-31",
           "dynamic_partition.prefix" = "p",
           "dynamic_partition.enable" = "true"
       )

这里设置了分区时间单位为天,起始日期和结束日期,分区名称前缀为p,并且启用了动态分区功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

救救孩子把

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值