MySQL技术文章
-
MySQL Performance Schema 查平均耗时时,应从 events_statements_summary_by_digest 读取 AVG_TIMER_WAIT,并按皮秒换算为毫秒。本文说明采集开关、查询写法、聚合边界和短窗口核对方法。125 收藏 -
MySQL 8.0 的 INVISIBLE 列可以让新字段先进入表结构,却不改变 SELECT * 的旧返回集。本文用同一张 orders 表演示灰度加列、显式读取和回滚检查。122 收藏 -
MySQL 报 Too many connections 时,不要先盲目调大 max_connections。本文用 Threads_connected、Threads_running、SHOW PROCESSLIST、Connections 和 Threads_created 建立一条可复现的定位顺序,区分连接泄漏、并发峰值与线程创建开销。119 收藏 -
MySQL 函数索引不生效,先对照索引表达式与 WHERE 谓词,再检查复合索引列顺序、覆盖列、回表和 EXPLAIN 计划。118 收藏 -
MySQL invisible index 试验结束后,用 ALTER TABLE ... ALTER INDEX ... VISIBLE 恢复可见,再通过 IS_VISIBLE、SHOW INDEX 和 EXPLAIN 确认对象状态与执行计划。118 收藏 -
数据库 · MySQL | 2个月前 | MySQL · 数据库 · SQL · MySQL VALUES() 弃用 ON DUPLICATE KEY UPDATE MySQL 行别名 INSERT AS new MySQL upsert INSERT SELECT
MySQL 已将 ON DUPLICATE KEY UPDATE 中用 VALUES() 读取新行字段的写法标记为弃用。本文从库存快照写入场景出发,给出行别名 AS new 的最小改写、INSERT ... SELECT 的不同处理方式,以及上线前应核对的兼容边界。117 收藏 -
从列定义、参数绑定和 EXPLAIN 计划三处排查 MySQL 隐式类型转换,避免字符串列与数字比较导致索引无法高效查找。116 收藏 -
本文用一次报表接口超时故障复盘说明 MySQL 临时表打满磁盘的排查过程:从影响面、时间线、触发 SQL、根因定位到临时止血和防复发措施。114 收藏 -
用 MySQL 8.4 的 authentication_policy 规划单因素与多因素账号,说明 caching_sha2_password、旧客户端兼容窗口和上线前登录验收方法。113 收藏 -
MySQL 主从切换后如何确认新主库已经追上指定事务?本文用 GTID 集合和等待函数组织一套可回滚的断点判断流程,覆盖超时、空集合和误判场景。111 收藏 -
MySQL 临时表不会因为事务 COMMIT 自动消失,它绑定创建它的客户端会话;连接池复用时要主动清理,避免旧数据污染下一次请求。110 收藏 -
把订单金额、状态和时间关系交给应用层校验,批处理或旁路写入仍可能留下脏数据。本文用 MySQL 8.4 CHECK 约束建立可落地的边界,演示新增约束前的存量检查、失败写入的错误定位、约束命名和回滚步骤,避免一次结构变更卡住发布。109 收藏 -
REPLACE INTO 遇到主键或唯一键冲突时,不是原地更新,而是先删除旧行再插入新行。本文用订单同步场景拆开执行语义、AUTO_INCREMENT、外键级联和更稳妥的替代写法。109 收藏 -
数据库 · MySQL | 3星期前 | 慢查询 · sql优化 · MySQL教程 · mysql explain EXPLAIN ANALYZE sort_buffer_size Using filesort
EXPLAIN 出现 Using filesort 只说明排序没有直接由索引完成,并不等于查询一定很慢。本文用订单列表场景拆开 filesort 的输入行数、排序缓冲区、临时文件和实际耗时,给出可复现的判断与优化顺序。109 收藏 -
MySQL 窗口函数按时间排序遇到并列时,使用 ROW_NUMBER() 配合唯一键补序,并在外层筛选 rn = 1,即可稳定地每组只保留一条结果;文中同时比较 RANK() 与 DENSE_RANK() 的适用边界。109 收藏