database/sql
已收录文章:46篇
-
Golang · Go问答 | 1星期前 | golang · 连接池 · database/sql · Go问答 · 数据库事务 · 连接池 事务 DBStats rows.Close Go database/sqlGo database/sql 里漏掉 Rows.Close,问题往往不是某一次查询报错,而是连接长期被结果集占着,最终让连接池等待堆积。本文从 DBStats 指标和事务生命周期入手,复现现象,解释 Rows、Tx 与连接归还的关系,并给出可复查的代码边界。374 收藏
-
Go database/sql 查询循环结束并不等于读取完整成功,本文从连接中断、Rows.Close 和事务提交三个现场拆开 Rows.Err 的检查边界,并给出可复现的代码与验收方法。102 收藏
-
Golang · Go问答 | 3星期前 | 错误处理 · go · SQL · database/sql · 线上排查 · SCAN 查询结果 database/sql Go问答 rows.Next Rows.ErrGo 读取数据库结果时,rows.Next 返回 false 只能说明当前结果集没有下一行,不能直接当成查询成功。需要在循环后检查 rows.Err,并分别处理 QueryContext、Scan、Close 的错误,才能区分正常查完、数据库中断和结果读取失败。292 收藏
-
Golang · Go问答 | 1个月前 | 连接池 · database/sql · Go问答 · 线上排查 · DBStats · MaxOpenConns Go数据库连接池 DBStats Go问答 sql.DB WaitCountGo 服务接口突然变慢,sql.DB 连接池被打满是常见原因之一。排查时要先看 OpenConnections、InUse、Idle、WaitCount 和 WaitDuration,再决定是降载、回滚、调连接数,还是修慢查询和事务占用。355 收藏
-
Golang · Go问答 | 1个月前 | 连接池 · 性能排查 · database/sql · Go问答 · Go 连接池 DBStats sql.DB WaitCount SetMaxOpenConns用一个 Go 后端小实验解释 sql.DB 的 WaitCount 为什么增长,如何从 InUse、Idle、WaitDuration 判断连接池是否太小,并给出 SetMaxOpenConns、SetMaxIdleConns 的调参和验证清单。214 收藏
-
讲解 Go CPU profile 和火焰图的阅读方法,用 flat、cum 和热点链路定位 CPU 瓶颈。593 收藏
-
说明 inuse_space、alloc_space 和对象生命周期的区别,帮助判断内存占用和分配压力。383 收藏
-
用 testing.B、benchmem 和 benchstat 对比优化前后数据,避免凭感觉判断性能收益。530 收藏
-
通过逃逸分析识别热路径堆分配,减少接口装箱、闭包捕获和不必要对象分配。320 收藏
-
梳理 sync.Pool 的适用边界和误用风险,用对象复用降低高频临时分配。467 收藏
-
介绍 Slice 和 Map 预分配方法,减少扩容、复制和 rehash 带来的性能波动。614 收藏
-
分析字符串拼接和 []byte 转换成本,用 Builder、Buffer 和清晰边界减少分配。404 收藏