news 2026/5/7 4:11:41

PostgreSQL 大表字段扩长度会不会锁表?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PostgreSQL 大表字段扩长度会不会锁表?

直接结论:

会加锁,但扩大 VARCHAR 长度持锁时间极短(毫秒级),不会卡住业务。


为什么扩大长度不重写表?

加锁(AccessExclusiveLock) → 改系统表元数据 → 释放锁
整个过程毫秒级完成

VARCHAR(n)的长度限制只是系统表里的一个数字,底层存储和TEXT完全一样。

PostgreSQL 只修改系统表 pg_attribute 中的 atttypmod 元数据,不碰实际数据行,上亿数据也几乎是秒级完成。


不同操作对比

操作重写表耗时
VARCHAR 扩大长度❌ 不重写毫秒 ✅
VARCHAR 缩小长度✅ 重写很慢 ❌
改为其他类型(INT等)✅ 重写很慢 ❌
改为 TEXT❌ 不重写毫秒 ✅

什么情况会"卡住"?

不是 DDL 本身慢,而是等锁排队

  • 表上有未提交的长事务 → ALTER 一直等,后续所有查询全部堆积
  • 字段有函数索引 → 触发索引重建
  • 有 CHECK 约束 → 全表扫描重新验证

生产环境必做

-- 加锁超时保护,超时自动退出,不影响业务SETlock_timeout='3s';ALTERTABLEbig_tableALTERCOLUMNyour_colTYPEVARCHAR(500);-- ✅ 3秒内完成 → 安全-- ❌ 报 timeout → 有长事务占锁,换低峰期重试

最稳方案(AI 推荐,我不推荐)

-- 第一步:改为 TEXT,毫秒完成,不重写表ALTERTABLEbig_tableALTERCOLUMNyour_colTYPETEXT;-- 第二步:加长度约束,NOT VALID 跳过存量数据验证ALTERTABLEbig_tableADDCONSTRAINTchk_col_lenCHECK(char_length(your_col)<=500)NOTVALID;-- 第三步:低峰期验证存量数据,不阻塞读写ALTERTABLEbig_table VALIDATECONSTRAINTchk_col_len;

一句话总结:
扩大 VARCHAR 长度本身不重写表,毫秒级完成; 危险在于等锁期间请求堆积雪崩,生产操作必须加 lock_timeout 保护

最后推荐操作: 谁阻塞干谁

-- 第一步:找出阻塞方 查看谁在阻塞我的 ALTERSELECTblocking.pidAS阻塞方PID,blocking.queryAS阻塞方SQL,blocking.stateAS阻塞方状态,blocked.pidAS被阻塞PID,blocked.queryAS被阻塞SQL,now()-blocking.query_startAS阻塞持续时长FROMpg_stat_activity blockedJOINpg_stat_activity blockingONblocking.pid=ANY(pg_blocking_pids(blocked.pid))WHEREblocked.wait_event_type='Lock';-- 第二步:干掉阻塞方PIDSELECTpg_terminate_backend(阻塞方PID);-- 第二步:重新执行ALTERTABLEyour_tableALTERCOLUMNyour_colTYPEVARCHAR(500);
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 4:03:42

Python初学者项目练习9--对简单列表元素排序

一、练习题目 给定一个简单列表&#xff0c;对其元素进行排序简单列表&#xff1a;元素类型不是复合类型&#xff08;列表/元组/字典&#xff09; 示例&#xff1a; 形式1&#xff1a;[10&#xff0c;20&#xff0c;30&#xff0c;40] 形式2&#xff1a;[‘aa’, ‘bb’, ‘cc’…

作者头像 李华
网站建设 2026/5/7 4:03:39

千问 LeetCode 2127.参加会议的最多员工数 Python3实现

这道题考察的是基环树&#xff08;Pseudotree&#xff09;的性质以及拓扑排序的应用。&#x1f9e0; 核心思路1. 图的结构&#xff1a;每个员工是一个节点&#xff0c;favorite[i] 是一条从 i 指向 favorite[i] 的有向边。因为每个点出度为 1&#xff0c;整个图由若干个“基环…

作者头像 李华
网站建设 2026/5/7 4:02:28

PageIndex:基于RAG的网页智能知识库构建实战指南

1. 项目概述&#xff1a;从“网页索引”到“智能知识库”的进化最近在折腾一个很有意思的项目&#xff0c;叫 PageIndex。乍一看名字&#xff0c;你可能会觉得这又是一个简单的网页爬虫或者内容抓取工具。但如果你深入了解一下&#xff0c;就会发现它的野心远不止于此。本质上&…

作者头像 李华
网站建设 2026/5/7 4:01:28

用立创EDA复刻蓝桥杯省赛真题电路:手把手搭建一个简易电压采集与显示系统(2022模拟题2)

用立创EDA复刻蓝桥杯省赛真题电路&#xff1a;手把手搭建一个简易电压采集与显示系统 在电子设计竞赛的备赛过程中&#xff0c;真题复现是最有效的实战训练方式之一。2022年蓝桥杯省赛模拟题中的电压采集与显示系统&#xff0c;融合了模拟信号处理、数字显示和存储等典型电路模…

作者头像 李华
网站建设 2026/5/7 3:57:57

扩散模型视频生成中的精细化运动控制技术解析

1. 项目概述&#xff1a;当视频生成遇上运动控制去年参与一个影视特效项目时&#xff0c;甲方要求生成一段"火山喷发时熔岩在雪地上流动"的镜头。用传统扩散模型生成的视频中&#xff0c;熔岩要么像水一样四处漫溢&#xff0c;要么像糖浆般粘稠凝固&#xff0c;始终无…

作者头像 李华
网站建设 2026/5/7 3:57:55

DANMP架构:基于近内存处理的Transformer加速方案

1. 项目概述&#xff1a;DANMP架构的核心创新在计算机视觉领域&#xff0c;Transformer架构正逐步取代传统CNN成为主流&#xff0c;其中可变形注意力机制(Deformable Attention)因其动态采样特性备受关注。然而&#xff0c;多尺度可变形注意力(MSDAttn)的不规则内存访问模式给传…

作者头像 李华