Go语言技术文章
-
批量 INSERT 成功后,mysql_affected_rows() 只能给出影响行数,mysql_info() 还能返回 Records、Duplicates、Warnings 等细节。本文用 MySQL 8.4 C API 示例说明两者如何配合,以及 CLIENT_FOUND_ROWS 什么时候会改变判断。152 收藏 -
Redis 连接池耗尽不一定是池太小。本文用 go-redis PoolStats、请求耗时和 Redis SLOWLOG 交叉判断池等待、慢命令与连接未归还,并给出修复顺序。152 收藏 -
MySQL 覆盖索引通过让过滤、排序和结果列落在同一索引中,减少回到聚簇数据页读取整行的机会。本文以订单列表为例,讲解投影收窄、联合索引设计、EXPLAIN 验收及写入成本控制。148 收藏 -
MySQL Enterprise Audit 默认全量记录时,审计日志很快会被健康检查和后台账号淹没。本文用 audit_log_filter_set_filter 按事件、用户和查询统计字段收窄范围,并给出安装前提、赋值、回滚与验收方法。145 收藏 -
MySQL 角色并不等于自动最小权限:默认角色、通配符授权和库级权限叠加后,账号可能读到不该读的数据。本文用实际授权链拆解越权路径,说明 partial revokes 的边界,并给出可回滚、可审计的验收清单。145 收藏 -
MySQL 递归 CTE 遍历树数据时,应在路径中记录已访问节点,用 FIND_IN_SET 排除重复引用,再用深度、递归层数和执行时间限制兜底,避免脏数据造成无限循环。142 收藏 -
MySQL 分区表并不等于查询一定只扫少量数据。本文从 RANGE 分区的日期条件入手,用 EXPLAIN 的 partitions 字段确认分区裁剪是否发生,再补上函数包裹、隐式转换、统计信息和维护检查等容易误判的边界。140 收藏 -
用 MySQL 8.4 的 JSON_VALUE 读取 JSON 字段时,NULL 可能来自缺失路径、JSON null 或类型转换失败。本文通过 RETURNING、ON EMPTY、ON ERROR 和 SHOW WARNINGS 拆开这些边界,避免坏数据被静默放行。140 收藏 -
Redis 连接数打满时,先用 INFO clients 和 CLIENT LIST 区分真实并发、空闲连接与连接池泄漏,再核对 maxclients,最后分时回收异常连接并修正池配置。140 收藏 -
MySQL LOAD DATA 导入含真实换行的 CSV 或分隔文本时,关键是同时对齐字段分隔符、字段包围符、转义符和行终止符。本文用多行文本示例说明 OPTIONALLY ENCLOSED BY 的边界、引号处理方式以及安全导入步骤。140 收藏 -
MySQL JSON_TABLE 用 FOR ORDINALITY 为展开后的数组元素生成从 1 开始的序号。本文说明一基与零基位置、嵌套数组中的父子序号,以及先展开后过滤和路径筛选对原始位置的影响。139 收藏 -
围绕 go-redis 的 PoolTimeout、连接回收和 PING 验收,拆解客户端请求超时后连接是否还能复用,以及如何用可观察的检查判断半开连接。137 收藏 -
读写分离最容易出问题的地方不是把查询发到副本,而是写后读、事务边界和主副本切换时的会话状态。本文用 MySQL 8.4 的 GTID 等待与路由规则,搭一套可核对、可回切的处理方法。135 收藏 -
用 Redis INFO commandstats 拆解单命令 CPU 异常,理解 calls、usec、usec_per_call、failed_calls 与采样窗口的关系,并给出可复核的排查流程。135 收藏 -
Redis Cluster 遇到 CROSSSLOT 时,先区分单键 pipeline 的跨节点分发和多键命令的跨槽约束。本文用 CLUSTER KEYSLOT、hash tag、同槽分组和 ClusterClient 示例说明如何拆分,并用批次、槽位、错误数和 P95 验证改造结果。135 收藏