【DB吐槽大会】第38期 - PG 不能自动创建(扩展)分区

简介: 大家好,这里是DB吐槽大会,第38期 - PG 不能自动创建(扩展)分区

背景


1、产品的问题点

  • PG 不能自动创建(扩展)分区
  • 例如按日期分区的分区表, 每个月1个分区, 如果写入的数据落入了不存在的分区会报错, 而不是自动创建它.

2、问题点背后涉及的技术原理

  • PG 支持range, list, hash分区方法, 写入数据时, 根据分区字段的value计算得到对应的分区, 如果元数据中没有定义这个分区, 并且也没有定义默认分区的话, 报错.
  • 一般时间类型的分区字段采用range分区, 例如按年、月、日分区.
  • 某些可枚举的字段分区, 通常采用list分区.
  • 某些字段值较多, 但是总会按照这个值进行等值查询的, 比如用户ID, 则通常使用hash分区.
  • 某些情况下也可能会采用多级分区, 如hash+range, ...

3、这个问题将影响哪些行业以及业务场景

  • 通用场景, 特别是list和range分区

4、会导致什么问题?

  • list和range分区往往是随着时间的推移或业务持续运营会发生变化, 所以无法在分区表定义时完全固定下来, 而需要有开发者或DBA在需要时提前创建. 如果忘记提前创建分区, 会导致写入异常, 影响业务.
  • 例如每个月底创建下个月的分区.

5、业务上应该如何避免这个坑

6、业务上避免这个坑牺牲了什么, 会引入什么新的问题

  • 管理变得复杂, 任务、机制与业务紧耦合, 增加业务风险点

7、数据库未来产品迭代如何修复这个坑

  • 希望内核支持: 配置好分区命名规则, 如果写入的数据对应的分区不存在, 希望可以自动创建不存在的分区.
相关文章
|
安全 Shell 网络安全
openssh和openssl的区别是什么?
【4月更文挑战第14天】openssh和openssl的区别是什么?
2104 0
|
8月前
|
SQL HIVE
十一、Hive JOIN 连接查询
在 Hive 的世界里,JOIN 就像是数据间的红线,把原本分散在各自表里的信息串联起来。无论是内连接、外连接,还是 Hive 特有的左半连接,都各有“武功招式”,适用于不同场景。
462 12
|
5月前
|
机器学习/深度学习 人工智能 Java
优先队列 priority_queue详解
说到,priority_queue优先队列。必须先要了解啥是堆与运算符重载(我在下方有解释)。否则只知皮毛,极易忘记==寸步难行。但在开头,还是简单的说下怎么应用。
732 1
|
存储 边缘计算 物联网
揭秘边缘计算:物联网时代的分布式智能
揭秘边缘计算:物联网时代的分布式智能
1432 92
|
Java 应用服务中间件 Spring
SpringBoot 响应请求是串行还是并行?
Spring Boot 在默认情况下通过 Servlet 容器的线程池实现并行处理 HTTP 请求。通过适当的线程池配置,可以进一步优化并发性能。此外,Spring Boot 提供了异步处理机制(如使用 `@Async` 注解)和反应式编程模型(Spring WebFlux),使得应用能够处理更高的并发负载。在具体项目中,可以根据需求选择合适的处理模型,以充分利用 Spring Boot 的并发处理能力。
623 21
|
存储 SQL API
Flink教程(23)- Flink高级特性(Streaming File Sink)
Flink教程(23)- Flink高级特性(Streaming File Sink)
1338 0
|
Python
pyinstaller 安装使用
【7月更文挑战第8天】
2051 3
|
开发者 索引 Python
【Python 基础】remove、del和pop有什么区别?
【5月更文挑战第8天】【Python 基础】remove、del和pop有什么区别?
|
SQL 监控 安全
|
消息中间件 监控 关系型数据库
实时计算 Flink版产品使用问题之运行后,怎么进行监控和报警
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。