【DB吐槽大会】第69期 - PG 不支持update | delete limit语法

简介: 大家好,这里是DB吐槽大会,第69期 - PG 不支持update | delete limit语法

背景


1、产品的问题点

  • PG 不支持update | delete limit语法

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

  • 更新、删除语法不支持限制条数的用法, 例如: 满足条件的有1000条, 而用户一次只想更新或删除10条.

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

  • 批处理、消费消息队列的内容

4、会导致什么问题?

  • 如果符合条件的记录数很多, 可能导致一条SQL delete|update的记录数超多. 如果既有insert又有高吞吐的update,delete, 那么这种大批量操作将导致大量tuple旧版本的产生, 并且只能在事务结束后进行垃圾回收, 从而导致表膨胀.
  • 分批操作可以降低单个事务的产生的dead tuple记录数. 解决单个事务内产生过多旧版本导致垃圾回收不及时的问题.

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

  • 可以使用ctid来模拟update | delete limit语法

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

  • 没有太大问题, 但是需要了解ctid的用法

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

  • 希望内核直接支持update | delete limit语法
相关文章
|
1月前
|
SQL 关系型数据库 数据库
postgresql报:ERROR: column “i“ of relation “test“ does not exist LINE 1: UPDATE怎么解决?
解决“ERROR: column "i" of relation "test" does not exist”错误的关键在于核实列名的准确性,修正更新语句,确保列名的引用正确无误,并考虑到任何可能影响列名引用的表别名、大小写、特殊字符或动态SQL生成等因素。通过上述步骤,你应该能有效定位并解决问题,保证SQL语句的正确执行。
316 0
|
SQL 关系型数据库 PostgreSQL
pg 支持insert select吗
是的,PostgreSQL支持INSERT SELECT语法。使用INSERT SELECT语法,您可以将SELECT语句的结果插入到目标表中。 下面是一个示例INSERT SELECT语句的语法: ```sql INSERT INTO target_table (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM source_table WHERE condition; ``` 在这个示例中,`target_table`是要插入数据的目标表,`source_table`是要从中选择数据的
459 0
|
消息中间件 安全 关系型数据库
MySQL-优化INSERT、UPDATE和DELETE
MySQL MyISAM INSERT UPDATE DELETE Optimizing
580 0
|
SQL 安全 关系型数据库
MySQL的delete应该加 limit么 ?
在业务场景要求高的数据库中,对于单条删除和更新操作,在 delete 和 update 后面加 limit 1 绝对是个好习惯。比如,在删除执行中,第一条就命中了删除行,如果 SQL 中有 limit 1;这时就 return 了,否则还会执行完全表扫描才 return。效率不言而喻。
1038 0
|
关系型数据库 数据库 PostgreSQL
【DB吐槽大会】第70期 - PG 不支持update | delete skip locked, nowait语法
大家好,这里是DB吐槽大会,第70期 - PG 不支持update | delete skip locked, nowait语法
|
SQL Oracle 关系型数据库
【DB吐槽大会】第62期 - PG 不支持index skip scan
大家好,这里是DB吐槽大会,第62期 - PG 不支持index skip scan
|
SQL 关系型数据库 数据库
【DB吐槽大会】第78期 - PG 不支持绕过shared buffer的查询和写入
大家好,这里是DB吐槽大会,第78期 - PG 不支持绕过shared buffer的查询和写入
|
SQL 存储 数据库
【DB吐槽大会】第10期 - 不支持 flashback query
大家好,这里是DB吐槽大会,第10期 - 不支持 flashback query
|
存储 SQL 缓存
【DB吐槽大会】第45期 - PG 不支持rotate表
大家好,这里是DB吐槽大会,第45期 - PG 不支持rotate表
|
关系型数据库 数据库 索引
【DB吐槽大会】第32期 - PG 没有全局索引
大家好,这里是DB吐槽大会,第32期 - PG 没有全局索引