-
MySQL 8.0 及以上可以先把二级索引设为不可见,让优化器停止使用它却继续维护索引。本文用订单查询演示 SHOW INDEX、ALTER INDEX INVISIBLE、EXPLAIN 和回滚检查,说明什么证据足够支持 DROP INDEX。
-
用 INFORMATION_SCHEMA.INNODB_TRX 找出当前 InnoDB 事务,按 TRX_STARTED 判断持续时间,再用 TRX_MYSQL_THREAD_ID 映射到连接,避免把只读会话、锁等待和已结束事务混为一谈。
-
Redis LMPOP 可以从多个候选列表中找到第一个非空键,并按 LEFT 或 RIGHT 一次弹出指定数量。本文用订单队列示例拆清 COUNT、空队列返回和集群多键边界。
-
应用用一条 INSERT ... ON DUPLICATE KEY UPDATE 保存业务唯一键时,新增行和命中旧行都需要返回同一个主键。本文用 account_code 唯一键演示 LAST_INSERT_ID(id) 的写法、连接级返回边界、并发验收与不适合使用的场景。
-
MySQL 报 Too many connections 时,不要先盲目调大 max_connections。本文用 Threads_connected、Threads_running、SHOW PROCESSLIST、Connections 和 Threads_created 建立一条可复现的定位顺序,区分连接泄漏、并发峰值与线程创建开销。
-
Redis ZMPOP 可以从一个或多个 Sorted Set 中按 MIN 或 MAX 批量弹出成员。本文用 priority:tasks 任务队列说明 COUNT、同分值排序、多个键的选择顺序,以及空集合返回值和并发消费边界。
-
MySQL 8.4 的 INSERT 语法没有通用的 RETURNING 子句。本文用订单写入场景解释为什么不能把 PostgreSQL 式写法直接搬过来,并给出 LAST_INSERT_ID、事务内 SELECT 和多行写入的核对边界。
-
Redis MEMORY USAGE 返回的是单个键及其值的内存估算,不等于整个实例的 used_memory。理解默认 SAMPLES 5、SAMPLES 0 和 INFO memory 的边界,才能正确判断嵌套对象与容量问题。
-
MySQL 字符串排序异常,通常不是 ORDER BY 失效,而是列、连接或表达式使用的校对规则不同。本文用 utf8mb4 校对规则、大小写敏感和 COLLATE 覆盖,给出可复现的排查与修正方法。
-
用 MySQL 8.4 的 JSON_VALUE 读取 JSON 字段时,NULL 可能来自缺失路径、JSON null 或类型转换失败。本文通过 RETURNING、ON EMPTY、ON ERROR 和 SHOW WARNINGS 拆开这些边界,避免坏数据被静默放行。
-
Redis ZMPOP 可以从 Sorted Set 原子取出最小分值成员,但批量弹出后的业务顺序、空结果和多消费者并发仍需要单独设计。本文用 redis-cli 拆开 MIN、COUNT、分值返回和单消费者批处理边界。
-
用 MySQL 8.4 的 JSON_SCHEMA_VALID() 把 JSON Schema 放进 CHECK 约束,再用 JSON_SCHEMA_VALIDATION_REPORT() 和 SHOW WARNINGS 定位字段缺失、类型错误与范围越界。
-
用 Redis INCRBYFLOAT 做累计值时,重点不是把返回值当金额类型,而是核对输入格式、字符串结果、浮点误差和业务落库边界。
-
MySQL 存储过程中的异常处理不能只靠一个通用错误提示。GET DIAGNOSTICS 可以读取 SQLSTATE、MYSQL_ERRNO、MESSAGE_TEXT、NUMBER 和 ROW_COUNT,再把可审计的结果写入日志表;本文用订单入库事务说明诊断区读取、回滚与 RESIGNAL 的边界。
-
围绕 go-redis 的 PoolTimeout、连接回收和 PING 验收,拆解客户端请求超时后连接是否还能复用,以及如何用可观察的检查判断半开连接。