MySQL技术文章
-
数据库 · MySQL | 2个月前 | MySQL · 回滚 · 数据库运维 · MySQL 8.4 SET PERSIST SET PERSIST_ONLY RESET PERSIST mysqld-auto.cnf persisted_variables
MySQL 8.4 的 SET PERSIST 可以把全局系统变量同时写入运行时和 mysqld-auto.cnf,SET PERSIST_ONLY 则只为下一次启动准备配置。本文用连接数调整场景拆开两者的作用域、权限、复查与 RESET PERSIST 回退边界,避免把临时改动误当成永久配置。244 收藏 -
MySQL EXPLAIN 的 filtered 很低,不等于索引一定失效。本文从 rows 与 filtered 的乘积、残余条件、实际执行行数和统计信息入手,给出先查什么、何时 ANALYZE TABLE、何时再改索引的排查顺序。244 收藏 -
围绕 (tenant_id, status, created_at) 示例,说明跳过复合索引最左列后普通访问、Skip Scan、EXPLAIN 判断和索引调整方案。244 收藏 -
大 IN 列表的成本不只取决于参数数量,还取决于范围优化器要评估的组合规模。本文用 EXPLAIN、Warning 3170 和 optimizer trace 定位退化,并比较拆分查询与临时表 JOIN。244 收藏 -
用一套固定清单读取 MySQL EXPLAIN FORMAT=JSON:先定位 query_block 和表节点,再联读访问类型、索引、估算行数、过滤条件、排序与成本,最后用真实执行证据验证优化结果。243 收藏 -
MySQL FORMAT_BYTES生成带单位的容量文本。通过原创只读SQL说明如何保留字节数排序、阈值筛选和合计,并约定NULL、接口精度与权限范围。243 收藏 -
MySQL 用 ROW_NUMBER 取每组最新记录时,如果时间相同,必须补充唯一且符合业务的排序键;若要保留全部并列最新行,应改用 RANK。本文用订单状态示例说明两种写法和检查清单。242 收藏 -
把 MySQL LOAD DATA 导入大文件从一次性命令升级成可回滚流程:先固定字符集和字段边界,再隔离错误行,最后用临时表与原子切换避免半成品进入业务表。240 收藏 -
多个 worker 从 MySQL InnoDB 任务表取件时,普通 FOR UPDATE 可能互相等待。本文用最小 SQL 说明 SKIP LOCKED 如何跳过已锁行、如何在短事务中更新状态,以及 NOWAIT、锁释放和失败重试的边界。239 收藏 -
MySQL 8.4 的 InnoDB 死锁发生后会自动选择一个事务回滚,但应用仍要识别错误并重试。本文用订单与库存更新场景演示如何读取 SHOW ENGINE INNODB STATUS、开启 innodb_print_all_deadlocks、判断受害事务并验收重试策略。238 收藏 -
MySQL REGEXP_SUBSTR 默认返回第一个匹配,想取第 N 个匹配要把 occurrence 作为第四个参数传入。本文用可直接改写的 SQL 说明 pos、occurrence、match_type、NULL 和无匹配的处理边界。238 收藏 -
MySQL 中同一条语句多次引用 CTE,通常只会物化一次;本文用 EXPLAIN 和 optimizer_trace 区分共享结果、自动索引与真正重复工作。237 收藏 -
用一个 orders.status 示例说明 MySQL 8.4 直方图过期后的识别、手动重建、COLUMN_STATISTICS 查看、AUTO UPDATE 取舍与 DROP HISTOGRAM 回退。237 收藏 -
从 EXPLAIN 的 key、key_len、type 和 Extra 入手,判断 MySQL 复合索引没有按预期生效的原因,并用最小 SQL 验证最左匹配、范围条件和排序顺序。235 收藏 -
围绕 mysqldump 讲清 InnoDB 一致性导出、对象清单、恢复先后和结果核对,帮助你规划一份真正可恢复的 MySQL 逻辑备份。235 收藏