MySQL技术文章
-
读写分离最容易出问题的地方不是把查询发到副本,而是写后读、事务边界和主副本切换时的会话状态。本文用 MySQL 8.4 的 GTID 等待与路由规则,搭一套可核对、可回切的处理方法。135 收藏 -
解释 MySQL GROUP BY 执行计划中的 Using temporary,区分临时表提示与磁盘溢出,并从排序组织、联合索引、左前缀和执行计划复查四个方面减少不必要的临时结果整理。134 收藏 -
MySQL 分区表查询没走分区裁剪时,先看分区表达式,再用 EXPLAIN 的 partitions 列确认扫描范围,最后把过滤条件改成可被优化器推导的分区键等值或范围。134 收藏 -
用 MySQL 8.4 的 REGEXP_REPLACE 清洗带空格和分隔符的订单编码,核对捕获组替换、NULL 返回值与更新前后的结果,避免把异常数据悄悄改坏。133 收藏 -
准备删除一个 MySQL 二级索引时,不必先承担回滚风险。MySQL 8.4 可以把索引设为 INVISIBLE,再用 EXPLAIN 和单条查询 hint 对照计划,确认它是否仍被业务查询需要。133 收藏 -
用 MySQL EVENT 做定时清理时,真正容易漏掉的是全局启用状态、会话时区和执行记录。本文用一张清理任务表说明如何配置、验证、留痕与安全停用。132 收藏 -
数据库 · MySQL | 4天前 | MySQL · JSON_CONTAINS MySQL JSON_OVERLAPS JSON 数组相交 MySQL JSON 类型比较 MySQL NULL 边界
MySQL JSON_OVERLAPS 判断 JSON 数组交集时,只需共享一个完整元素即可返回 1,但嵌套数组、对象、数字字符串类型以及 JSON null 和 SQL NULL 都有不同边界。130 收藏 -
MySQL CTE 物化后变慢,先用 EXPLAIN 确认合并或物化策略,再用 MERGE 与 NO_MERGE 对照过滤下推、临时结果和索引成本,最后按引用次数与查询结构选择方案。127 收藏 -
判断 MySQL 派生表物化后是否溢出磁盘,不能只看 Created_tmp_disk_tables。本文从 EXPLAIN、tmp_table_size、TempTable 资源、Performance Schema 和 InnoDB 临时表空间五个证据点说明如何定位。126 收藏 -
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 8.4 的 authentication_policy 规划单因素与多因素账号,说明 caching_sha2_password、旧客户端兼容窗口和上线前登录验收方法。113 收藏