美文网首页
范围分区-思考

范围分区-思考

作者: OverLight | 来源:发表于2019-11-22 11:14 被阅读0次
  • 按月分区
    之前的模型设计师及架构师留下的表分区为STRING型的etl_time:20181222153000(年月日时分秒)


    image.png

业务人员使用时经常用时间取数,导致需要截取etl_time,效率比直接查询分区字段原始值慢两倍。


image.png

思考: 若是重新分区,基于现在的业务场景及数据使用方便层面,我更倾向于年月-日-时

  • 同样是按月分区,这样会在年月目录中存储单月30天的目录数据;


    image.png
  • 天目录下有时目录( 甚至可以天时一层目录,因为一天只保留一份当天全量数据)

后续: 若是需要批量修改底层表的分区字段及分区字段值
思路:

  • 将类似etl_time:20181222153000的字段分两列: etl_date: 20181222 etl_time: 153000(根据使用场景决定time存储时分秒)

    -- 检查数据是否备份至临时表,此步骤决定是否执行下一步
    CREATE TABLE 临时表 AS orc AS SELECT * FROM 原表;  
    - 这期间耗时会根据表量、数据量决定
    - DROP TABLE 原表;  -- 检查数据已备份至临时表,再执行此步骤
    CREATE TABLE 新表 (业务字段,分列字段,分区字段);   —- 分区字段参考etl_date
    INSERT INTO 新表 (业务字段,分列字段,分区字段)  -- 检查数据是否完整
    select
    业务字段
    ,SUBSTRING(20181222153000,1,8)
    ,SUBSTRING(20181222153000,9,6)
    FROM 临时表;
    -- 备份历史数据-插数据还是挺快的,秒级几十万条(单条数据约为0.005KB)
    ...
    

相关文章

  • 范围分区-思考

    按月分区之前的模型设计师及架构师留下的表分区为STRING型的etl_time:20181222153000(年月...

  • 分区表

    使用分区方式建立的表叫分区表 范围分区每个分区都由一个分区键值范围指定(对于一个以日期列作为分区键的表,“2005...

  • Oracle表分区操作

    搜索分区下的数据: 创建表分区 注意事项: partition by 分区类型(分区键) 范围分区:range可以...

  • 【5分钟背八股】kafka的rebalance机制是什么?

    消费者分区分配策略 Range 范围分区(默认的) RoundRobin 轮询分区 Sticky策略 触发 Reb...

  • Oracle分区

    分区 Oracle数据库提供对表或索引的分区方法有三种: 范围分区 多个字段 Hash分区(散列分区)在列的取值难...

  • Hive表

    Hive分区 描述: Hive分区根据某字段的值分区1.可以多维度分区2.分区不会影响大范围查询的执行效率3.每个...

  • Oracle表分区

    Oracle 10g使用比较多的两种分区类型: (1)范围分区(range); (2)哈希分区(hash)。 (1...

  • OC内存管理 - OC

    内存管理的范围 范围:管理任何继承NSObject的对象,对其他的基本数据类型无效。 内存分区(5大分区) 栈区:...

  • mysql分区之ragne分区

    range分区的概念 range分区是利用取值范围(区间)划分分区,区间要连续并且不能互相重叠,使用values ...

  • Oracle ORA-14400: 插入的分区关键字未映射到任何

    原因:对 “表A” 进行表分区后,当前时间不在现有表分区的时间范围内 1、查看表分区情况 可以看到时间表分区过期,...

网友评论

      本文标题:范围分区-思考

      本文链接:https://www.haomeiwen.com/subject/zmmfwctx.html