Go语言技术文章
-
MySQL 给大表加索引时,ALGORITHM 和 LOCK 决定了变更方式与并发影响。本文用 ALTER TABLE 说明如何预判支持范围、处理元数据锁,并在上线前做可回退的核对。264 收藏 -
MySQL 联合索引不是把多个单列索引简单拼在一起。以 (tenant_id,status,created_at) 为例,查询跳过第一列时通常失去按该联合键直接定位的能力,但最终是否使用索引仍要看谓词、选择性、统计信息和优化器成本。本文用 EXPLAIN 给出判断方法。264 收藏 -
MySQL invisible index 可以在不立即删除索引的前提下模拟它离开优化器候选集的影响。本文用 SHOW INDEX、EXPLAIN 和 use_invisible_indexes 对比查询计划,并说明如何安全回滚。263 收藏 -
订单清理任务执行 DELETE 时,真正拖慢速度的可能不是主表扫描,而是子表外键检查、级联删除和长事务锁范围。本文用订单与明细表的场景拆开执行路径,给出索引核对、分批删除和安全验收方法。262 收藏 -
Redis BITOP 可以把多个 Bitmap 按 AND、OR 或 XOR 合并成新的结果键,适合做用户分群和实时指标。本文用 redis-cli 拆开结果集长度、BITCOUNT 校验、O(N) 成本与长位图内存边界。262 收藏 -
数据库 · MySQL | 1星期前 | MySQL · 执行计划 · 慢查询 · MySQL EXPLAIN ANALYZE MySQL估算行数实际行数 MySQL执行计划耗时 MySQL慢查询诊断 MySQL TREE执行计划
从 EXPLAIN 基线到 EXPLAIN ANALYZE 实测,按节点对比估算行数、实际行数、迭代耗时和 loops,定位统计信息与访问路径偏差。262 收藏 -
Redis 内存使用量下降后,RSS 仍然居高不下,通常要把 allocator_frag_ratio、used_memory 与进程峰值放在一起看。本文从 INFO memory 的真实字段建立判断顺序,区分内存碎片、峰值残留和回收未完成,并给出验证与处理边界。261 收藏 -
MySQL 用 BINARY(16) 存 UUID 可以减少存储空间,但 UUID_TO_BIN 的 swap_flag 必须和 BIN_TO_UUID 使用同一约定。本文用真实 SQL 输出对比原始顺序、交换时间段和错误还原,说明版本 1 UUID 的适用边界。261 收藏 -
MySQL 死锁日志中的表名、索引名、锁模式和记录值需要结合事务语句才能还原到 SQL。本文用 SHOW ENGINE INNODB STATUS 与 performance_schema.data_locks 说明如何区分持有锁和等待锁,并从索引记录反推 WHERE 条件与事务顺序。261 收藏 -
介绍 Redis XPENDING 的摘要和扩展查询,查看消费组中按消息 ID 最早的未确认消息,并区分最老 ID与空闲最久的 pending 记录。259 收藏 -
MySQL LOAD DATA 导入 TSV 时,字段内制表符要靠引号边界或反斜杠转义表达;本文给出两种写法,并用 HEX、CHAR(9) 和 SHOW WARNINGS 验证结果。253 收藏 -
用一个缓存服务和一个报表读取服务的例子,拆解 Redis ACL 中用户、命令集合与 key pattern 的关系,并用 ACL DRYRUN 验收最小权限。251 收藏 -
Redis XCLAIM 的 min-idle-time 是消息可被接管的毫秒门槛,本文结合 XPENDING、IDLE、JUSTID 和 XACK 说明如何判断重试条件与验证接管结果。250 收藏 -
MySQL 的 DDL 卡住时,先从 performance_schema.metadata_locks 区分等待者与持有者,再核对对象、线程和业务状态,确认影响后才决定终止会话。249 收藏 -
连接池让数据库线程看起来都一样时,可以查询 performance_schema.session_connect_attrs,用 ATTR_NAME、ATTR_VALUE 和 PROCESSLIST_ID 把连接还原到驱动、应用实例与线程,再结合连接状态完成定位。248 收藏