程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
数据库 相关技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
pg_locks 一行不等于一个锁:自连接查阻塞链的四个失效点
编程
pg_locks 一行不等于一个锁:自连接查阻塞链的四个失效点
2026-11-15 00:04:22
pg_locks 的行数对不上锁数,原因不只行锁不落视图:fastpath 行逐 backend 采集、跨库 OID 会错 join、prepared transaction 的 pid 为 null。给出按 granted 判断等待、pg_blocking_pids 展开阻塞边、跨库安全过滤与 prepared xact 关联的可复制 SQL,以及 log_lock_waits 默认 off 时的排查顺序。
pg_locks
PostgreSQL
锁等待
数据库
运维
SQL
PostgreSQL 19 的 REPACK:一条命令顶掉 VACUUM FULL、CLUSTER 和 pg_repack
编程
PostgreSQL 19 的 REPACK:一条命令顶掉 VACUUM FULL、CLUSTER 和 pg_repack
2026-11-14 21:02:39
PostgreSQL 19 把 VACUUM FULL、CLUSTER 与 pg_repack 合并成一条 REPACK 命令,REPACK (CONCURRENTLY) 不再拿排他锁。本文按重建期与切换期拆解它如何用复制 slot 同步增量,算清 WAL、slot 池与磁盘双份三笔代价,并给出上线前检查项。
PostgreSQL
运维
数据库
MySQL 版本号跳到 26.10:升级必须先落在 9.7,AUTO_INCREMENT 也开始跳号
编程
MySQL 版本号跳到 26.10:升级必须先落在 9.7,AUTO_INCREMENT 也开始跳号
2026-11-13 20:01:33
MySQL 26.7 起版本号改成 YY.M 日历版本,26.10 又加了第四段 UPDATE。版本号不再能看出是不是 LTS,升级路径改由 compatibility lineage 判定:9.7.x LTS 是唯一能进第一代日历版本的入口,跨 lineage 和跳号都不行。另有 innodb_autoinc_preallocate 默认 50 导致异常停机跳号、四个新保留字、两个被移除的变量,以及 CSA 与 MRS 组件化。
MySQL
运维
数据库
升级
Valkey 升到 9.1 就回不去了:RDB 头从 REDIS0011 变成 VALKEY080,旧二进制只回一句 Can't handle RDB format version 80
编程
Valkey 升到 9.1 就回不去了:RDB 头从 REDIS0011 变成 VALKEY080,旧二进制只回一句 Can't handle RDB format version 80
2026-11-11 20:02:45
Valkey 7.2/8.x 写 RDB 11,9.0/9.1 写 RDB 80,9.2 RC 写 81:升级后旧二进制只报 Can't handle RDB format version 80。含 rdb-version-check relaxed 的真实边界、9.0 恒发 RDB 80、9.1 降级发 11 的两个 abort 条件、9.1.0–9.1.2 的 listpack 分段 bug、DUMP/RESTORE 报 payload version 错,以及 go-redis 与 HELLO/INFO 的客户端破坏性变更和可回滚升级步骤。
Valkey
Redis
运维
数据库
升级
PostgreSQL 19 把 BufferPin 改名成 Buffer:等待事件告警不报错,只静默返回 0 行
编程
PostgreSQL 19 把 BufferPin 改名成 Buffer:等待事件告警不报错,只静默返回 0 行
2026-11-11 20:01:16
PostgreSQL 19 升级实测:BufferPin 等待事件改名 Buffer/BufferCleanup,旧告警查询不报错只返回 0 行;另附 sync_error_count、io_workers、standard_conforming_strings 四处硬报错,登录新增 MD5 与密码过期 WARNING,新增列对 SELECT * 的影响,以及 pg_upgrade --check 前的检查清单。
PostgreSQL
数据库
运维
监控
升级
ERROR 2061 不是密码错:caching_sha2_password 缓存失效后,非 TLS 连接全掉进 full auth
编程
ERROR 2061 不是密码错:caching_sha2_password 缓存失效后,非 TLS 连接全掉进 full auth
2026-11-11 00:03:50
caching_sha2_password 的 fast auth 依赖服务端内存缓存,缓存一失效就走 full auth,非 TLS 连接随即报 ERROR 2061。本文给缓存失效时机表、RSA 公钥两条路径、JDBC/Go/PHP 驱动差异,以及自研协议客户端漏读 AuthMoreData 导致包错位的真实 PR 案例。
caching_sha2_password
MySQL
认证插件
排障
RSA公钥
数据库
同一个 DELETE,changes() 返回 1,total_changes 涨了 3
编程
同一个 DELETE,changes() 返回 1,total_changes 涨了 3
2026-11-07 00:05:59
RowsAffected 到底数了什么:SQLite 的 sqlite3_changes 只算语句直接改的行,total_changes 连触发器程序和外键级联一起算,却不含 REPLACE 消解。给出五个可复现探针,以及触发器内读 changes() 的保存/恢复陷阱、INSTEAD OF 视图恒为 0、expo-sqlite 与 bun 的真实踩坑,最后说明判「命中」与判「真变」为什么必须分开。
RowsAffected
SQLite
影响行数
触发器
外键级联
Go
数据库
MySQL 8.4.13:丢弃表空间再导入旧镜像后,点查为什么读到旧数据
案例
MySQL 8.4.13:丢弃表空间再导入旧镜像后,点查为什么读到旧数据
2026-11-05 21:07:05
MySQL 8.4.13 修了两个 InnoDB 表空间导入缺陷:导出的表被改过、表空间 DISCARD 后又导入旧镜像时,点查会命中陈旧 AHI 条目返回旧代数据;导入失败后的残留页还会在 eviction 时触发 btr0sea.cc 断言。本文给现象、原因与排查步骤。
MySQL
InnoDB
数据库
故障排查
表空间
PostgreSQL 19 默认关掉 JIT:先找出哪些查询原来在替它付编译成本
编程
PostgreSQL 19 默认关掉 JIT:先找出哪些查询原来在替它付编译成本
2026-11-05 21:04:30
PostgreSQL 19(GA 计划 11 月 19 日)把 jit 默认值从 on 改成 off,三个成本阈值不变。本文说明 JIT 如何在计划阶段被成本触发、怎么从 EXPLAIN ANALYZE 和 pg_stat_statements 找出原来靠 JIT 的查询,以及 ALTER ROLE 只对新会话生效这层限制。
PostgreSQL
数据库
JIT
升级
运维
Redis 8.12-rc2 的 SEXPIRE:读路径砍掉一次往返,代价是 intset 直接跳成 hashtable
编程
Redis 8.12-rc2 的 SEXPIRE:读路径砍掉一次往返,代价是 intset 直接跳成 hashtable
2026-11-05 20:00:56
Redis 8.12 给 set 成员加了独立 TTL,实测读路径快一倍、写路径没变快;但给 300 个整数的 intset 里一个成员设过期,编码会直接跳到 hashtable,内存涨 15 倍且 SPERSIST 后不回退。
Redis
数据库
性能
运维
MySQL 9.7 把 UNIQUE NOT NULL 当主键等价:开着 sql_generate_invisible_primary_key 也不再补 GIPK
编程
MySQL 9.7 把 UNIQUE NOT NULL 当主键等价:开着 sql_generate_invisible_primary_key 也不再补 GIPK
2026-11-04 21:05:49
MySQL 9.7 起 UNIQUE NOT NULL 键在 CREATE/ALTER 中被视为主键等价,开着 sql_generate_invisible_primary_key 的表不再自动长 GIPK,SQL_REQUIRE_PRIMARY_KEY 下也能建这类表。附 InnoDB 行大小估算在 9.7.0 收紧、9.7.4 回退的排查顺序。
MySQL
数据库
DDL
GIPK
Galera 下 causal_reads 等满 10 秒 timeout:换成 wsrep_sync_wait 位掩码
编程
Galera 下 causal_reads 等满 10 秒 timeout:换成 wsrep_sync_wait 位掩码
2026-11-04 00:04:36
Galera 三节点 + MaxScale 读写分离,照抄异步复制的 causal_reads=local 不生效:MASTER_GTID_WAIT 等不到 gtid_slave_pos,每个读白等满 10 秒超时。改用 wsrep_sync_wait 位掩码(1/2/4/8,常用 1/7/15),并记下四个静默跳过的条件:显式事务内、已有等待中的 GTID、非客户端线程、wsrep_dirty_reads=ON;附分区时 ERROR 1205、connection_init_sql_file 注入与连接池复位。
causal_reads
Galera
MariaDB
MaxScale
读写分离
数据库
MySQL 8.4.13:漏掉的 OR 分支、gtid_executed 空洞与过期 AHI 条目
编程
MySQL 8.4.13:漏掉的 OR 分支、gtid_executed 空洞与过期 AHI 条目
2026-11-01 21:02:25
MySQL 8.4.13 里几条「语句正常执行、结果却不对」的修复:index_merge_union=off 时 OR 查询漏一个 disjunct 返回空集、XA RECOVER 与 GTID 可见顺序颠倒、binlogless 副本 FLUSH PRIVILEGES 在 gtid_executed 留空洞、过期 AHI 条目让点查读到已 discard 代际。附复现与验证方法。
MySQL
数据库
复制
优化器
PDO 持久连接的状态残留:跨请求的事务、游标与预处理语句怎么排查
代码
PDO 持久连接的状态残留:跨请求的事务、游标与预处理语句怎么排查
2026-10-30 21:09:35
持久连接省下握手开销,代价是事务、游标、预处理语句都跨过了请求边界:销毁一个持久实例会回滚另一个实例仍在用的事务,execute() 失败后旧结果仍可读。按状态残留位置逐项拆,并给出 inTransaction、closeCursor、rowCount 的排查顺序。
PHP
MySQL
PDO
数据库
PostgreSQL 18.6 的 output_plugin_libraries 白名单:第三方逻辑解码插件被挡掉,pg_upgrade --check 会先失败
综合
PostgreSQL 18.6 的 output_plugin_libraries 白名单:第三方逻辑解码插件被挡掉,pg_upgrade --check 会先失败
2026-10-29 21:05:49
18.6 引入 output_plugin_libraries 白名单(CVE-2026-6471),默认只放行 pgoutput 与 test_decoding,wal2json、postgres-decoderbufs 等要显式加;pg_upgrade --check 在 17+ 迁移前会先失败。附查 slot 插件、ALTER SYSTEM 与 reload 的顺序。
PostgreSQL
数据库
运维
MySQL 里跑 JavaScript 不是让你把业务搬进数据库:Percona 的 component_js_lang 只补 SQL 缺的那几步
编程
MySQL 里跑 JavaScript 不是让你把业务搬进数据库:Percona 的 component_js_lang 只补 SQL 缺的那几步
2026-10-26 21:06:52
Percona 的 component_js_lang 让 MySQL 8.4 里能写 V8 JavaScript 函数,但引擎砍掉了网络、文件、npm 和 async,只留纯函数。这篇讲它真正补的是 SQL 表达不了的几步:未知形状递归、数组、29 位大整数、带聚合的迭代,并用四个 demo 的实测数字说明边界与授权方式。
MySQL
数据库
JavaScript
MySQL 写后读仍是旧值:Seconds_Behind_Source 判不准,改用位点/GTID 等待
编程
MySQL 写后读仍是旧值:Seconds_Behind_Source 判不准,改用位点/GTID 等待
2026-10-24 00:04:53
读写分离下写后立刻读到旧值,而 Seconds_Behind_Source 判不出这笔写是否已落到从库:讲清它在五种场景下为什么失真、performance_schema 原始提交时间戳怎么看真实水位、SOURCE_POS_WAIT 与 WAIT_FOR_EXECUTED_GTID_SET 的返回值语义、主库 GTID 怎么带到读侧,以及超时回落与等待堆积的代价。
读写分离
MySQL
主从复制
GTID
复制延迟
WAIT_FOR_EXECUTED_GTID_SET
数据库
队列
PostgreSQL 19 异步 I/O 调优:删掉手工 io_workers,让 worker 池自己伸缩
编程
PostgreSQL 19 异步 I/O 调优:删掉手工 io_workers,让 worker 池自己伸缩
2026-10-23 21:03:32
PG 19 让 io_method=worker 的 worker 池自伸缩,新增四个 GUC,并用 EXPLAIN (ANALYZE, IO) 把每节点异步 I/O 计数放进执行计划。本文给出从 18 迁移时该删哪些参数、上下限怎么设、以及验证代价。
PostgreSQL
数据库
性能调优
MySQL 9.7 社区版能开 hypergraph_optimizer 了:WL#17265 的改动、五个开关与验证方法
编程
MySQL 9.7 社区版能开 hypergraph_optimizer 了:WL#17265 的改动、五个开关与验证方法
2026-10-22 20:02:09
社区版 MySQL 一直能看到 optimizer_switch 里的 hypergraph_optimizer,却开不起来。WL#17265 把它编进默认构建但仍默认关闭。本文拆清两个 CMake 选项的区别、五种开启方式的作用域差异,以及编译关闭时 SET 报 3999、启动参数被接受却不生效、SET_VAR 只给 warning 这三种表现,并用 optimizer trace 证明是否真的用上了新优化器。
MySQL
数据库
优化器
执行计划
运维
PHP 8.5 把 FETCH_CLASS 的构造参数改成 CUFA 语义后,实体水合会坏在哪
编程
PHP 8.5 把 FETCH_CLASS 的构造参数改成 CUFA 语义后,实体水合会坏在哪
2026-10-17 21:02:54
PHP 8.5 把 PDO::FETCH_CLASS 的构造参数改成 call_user_func_array 语义:字符串键变命名参数、自动 by-ref 包装消失、fetch 中途 setFetchMode 直接抛 Error。给最小复现、报错形态、定位命令与四种修复路径。
PHP
PDO
升级踩坑
数据库
Illegal mix of collations(1267/1271):用 COLLATION() 定位比较两侧的真实来源
案例
Illegal mix of collations(1267/1271):用 COLLATION() 定位比较两侧的真实来源
2026-10-17 00:03:36
MySQL/MariaDB 报 Illegal mix of collations(1267/1271)怎么排查:从错误码看两侧 collation 来源,用 COLLATION() 与 information_schema 定位冲突列与连接设置,讲清 MySQL coercibility 与 MariaDB derivation 推导规则、COLLATE 修法的索引代价,以及 uca1400_ai_ci 默认变更带来的新冲突。
collation
排序规则
MySQL
MariaDB
数据库
字符集
运维
MySQL 报 ER_1366 Incorrect string value:从驱动到字段排查连接字符集链
编程
MySQL 报 ER_1366 Incorrect string value:从驱动到字段排查连接字符集链
2026-10-16 00:05:00
存 emoji / 中文报 ER_1366 Incorrect string value、ER_1300、ER_3988 时,问题常在客户端、连接层、服务端对象三处字符集不统一。给出 SHOW VARIABLES 该看的变量、SET NAMES 与 character-set-client-handshake、实例→库→表→字段的修改优先级,以及 PHP/Python/Go/JDBC 驱动侧配置与 latin1 双重编码陷阱。
utf8mb4
MySQL
字符集
乱码
emoji
排障
数据库
collation
utf8mb3 转 utf8mb4:767 字节索引上限、191/768 前缀与 row size 8126 的踩坑记录
案例
utf8mb3 转 utf8mb4:767 字节索引上限、191/768 前缀与 row size 8126 的踩坑记录
2026-10-16 00:03:48
从 utf8mb3 转 utf8mb4 时,内容没问题但表结构常被 InnoDB 的字节上限卡住:COMPACT 行格式 767 字节对应 191 字符前缀、DYNAMIC 行格式 3072 字节对应 768 字符,以及 TINYTEXT/VARCHAR 长度、row size 8126、ER_1071/1709/1118 报错与可执行修复 SQL。
utf8mb4
MySQL
字符集
索引
InnoDB
运维
数据库
emoji
PG19 的 REPACK:把 VACUUM FULL 和 CLUSTER 合成一条命令,CONCURRENTLY 不阻塞读写
编程
PG19 的 REPACK:把 VACUUM FULL 和 CLUSTER 合成一条命令,CONCURRENTLY 不阻塞读写
2026-10-15 21:03:21
PostgreSQL 19 新增 REPACK,合并 VACUUM FULL 与 CLUSTER 的功能,REPACK ... CONCURRENTLY 可在不阻塞读写的情况下重建表。文中对比两者的锁与磁盘/时间取舍,并列出 Beta4 回退的特性(SQL/PGQ、在线开关 checksums 等),避免照 beta1 公告做规划。
PostgreSQL
数据库
运维
SQL
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
…
15
下一页
共 15 页
到第
页
确定