【DB吐槽大会】第46期 - PG copy不能跳过错误行

简介: 大家好,这里是DB吐槽大会,第46期 - PG copy不能跳过错误行

背景


1、产品的问题点

  • PG copy不能跳过错误行

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

  • PG 支持copy语法, 由于其高效的写入性能(功能单一, 协议精简, 节省了冗长的query parser,rewrite,plan,execute过程), 通常被用于高速数据导入导出.
  • PG copy被作为1个事务来处理, 如果一次copy过程中出现了异常的行, 将导致整个copy任务回滚.

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

  • 导入、迁移、恢复数据等场景

4、会导致什么问题?

  • 如果一个copy的表数据量很多, 已经导入了很多数据, 然后发现异常数据, 导致整个copy任务回滚, 浪费时间, 同时产生的写操作、wal都是浪费的. 必须重来一遍.

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

  • 使用pg_bulkload插件以及对应的导入工具, 支持多项配置, 甚至能直接写数据文件, 跳过wal, shared buffer等, 效率比普通copy还要高.

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

  • 使用pg_bulkload需要注意, 如果选择了direct模式导入, 会绕过wal, 那么以前的备份就无法使用wal来恢复新导入的数据. 必须在bulk load后做一次全量备份. 同时如果有基于流复制的逻辑订阅、物理standby, 统统都无法接受这些bulk load写入的数据.
  • pg_bulkload属于第三方工具

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

  • 希望PG自身能支持copy是跳过并记录下异常的行到日志、指定文件、或表里面, 导入结束后进行修复.
  • 例如, 可以设置批量大小, 批量提交, 遇到异常时异常批次的数据跳过异常重新写入一遍. 也比全部回滚好.
  • 例如, 可以设置错误条数上限, 如果超过上限则回退整个copy事务.



相关文章
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 12: Recovery.conf 文件参数合并到 postgresql.conf
PostgreSQL 12 的一个重要变化是 recovery.conf 配置文件中的参数合并到 postgresql.conf,recovery.conf 不再使用,我们看看手册的说明,如下: 发行说明 Move recovery.
5152 0
|
运维 Kubernetes 监控
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
4462 0
|
定位技术 Windows 关系型数据库
PostgreSQL GUI pgadmin4 v3.3 支持 gis geometry 数据编辑、显示
标签 PostgreSQL , pgadmin , gis , 编辑 背景 pgadmin 4 v3.3 开始支持geometry 类型的展示。 https://www.postgresql.org/ftp/pgadmin/pgadmin4/v3.3/windows/ 如果geometry使用的是SRID 4326 (WGS 84 lon/lat)坐标系,则pgadmin会自动从OpenStreetMap 加载图层,作为背景。
2414 0
|
9月前
|
安全 Unix Linux
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
VMware Workstation 17.6.3 发布下载,现在完全免费无论个人还是商业用途
79495 65
|
缓存 关系型数据库 MySQL
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
953 0
|
分布式计算 监控 大数据
什么是 Spark Driver,它的职责是什么?
【8月更文挑战第14天】
928 5
|
弹性计算 关系型数据库 数据库
PostgreSQL 数据库实例只读锁定(readonly) - 硬锁定,软锁定,解锁
标签 PostgreSQL , 只读 , 锁定 , readonly , recovery.conf , 恢复模式 , pg_is_in_revoery , default_transaction_read_only 背景 在一些场景中,可能要将数据库设置为只读模式。 例如, 1、云数据库,当使用的容量超过了购买的限制时。切换到只读(锁定)模式,确保用户不会用超。 2、业务上需要对
7671 0
|
弹性计算 运维 Linux
运维工程师必备的摸鱼神器:阿里云智能助手OS Copilot
OS Copilot 概述与体验评测摘要 阿里云的OS Copilot是一款基于大模型的智能操作系统助手,作为高级运维工程师,体验者发现它在系统诊断和性能优化上尤其有用,简化了如重置ECS密码和安全组配置等任务,提升了工作效率。 OS Copilot的易用性和安全性得到肯定,操作手册详细且交互性强,减少了用户在不同页面间切换的需要。在辅助编程方面,它能帮助非专业开发者编写和理解代码,对运维工作中的开发技能补充有很大帮助。与GitHub Copilot等产品相比,OS Copilot的独特之处在于结合了Linux操作的支持。
579 3
运维工程师必备的摸鱼神器:阿里云智能助手OS Copilot