摘要:MySQL 中这三种日志各司其职,核心区别如下: 对比维度redo logundo logbinlog 归属层级 InnoDB 引擎层 InnoDB 引擎层 MySQL Server 层 核心作用 崩溃恢复,保证持久性 事务回滚、MVCC,保证原子性 主从复制、数据备份 写入方式 循环写,空间固定
阅读全文
摘要:MySQL 慢查询排查遵循 "发现 → 定位 → 分析 → 优化 → 验证" 五步法: 步骤①:开启慢查询日志,捕获慢 SQL。 步骤②:查看慢查询日志,定位问题 SQL。 步骤③:使用 EXPLAIN 分析执行计划。 步骤④:根据分析结果优化(索引/SQL 改写)。 步骤⑤:验证优化效果,对比执行
阅读全文
摘要:1 2 3 4 5 6 7 8 9 10 11 12 13 14 # /usr/bin/xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/tmp/a xtrabackup: recognized server argumen
阅读全文
摘要:在搭建 MySQL8.0.x(如 8.0.30)主从复制架构时,不少开发者会遇到从库启动失败的情况,查看从库状态会显示 Last_IO_Errno:2061 错误,具体提示为 “Authentication plugin 'caching_sha2_password' reported error:
阅读全文
摘要:在 MySQL 数据库运维中,大表索引创建、重建等 DDL 操作一直是性能痛点 —— 传统 DDL 操作单线程执行,面对千万级甚至亿级数据的大表,往往耗时数小时,还可能阻塞业务。MySQL 8.0.27 版本引入的innodb_ddl_threads参数,通过并行化处理 DDL 的 sort 和 b
阅读全文
摘要:在 MySQL 日常开发中,COUNT(*)与COUNT(col)是最常用的计数函数,但多数开发者易将二者混淆,误认为仅是语法差异。实际上,二者在功能逻辑和执行性能上存在显著区别,且受 InnoDB、MyISAM 两大存储引擎的特性影响极大。本文基于 MySQL 8.0.30 版本的实测数据,从功能
阅读全文
摘要:在 MySQL 运维中,执行REPAIR TABLE修复损坏表时,常遇到 “The storage engine for the table doesn't support repair” 报错。这个错误并非表损坏无法修复,而是存储引擎不兼容修复操作导致 —— 核心原因是 InnoDB 引擎默认不支
阅读全文
摘要:索引是数据库提升查询性能的核心工具,但实际开发中,因 SQL 写法、数据类型或索引设计不当,常会导致索引失效,查询从 “索引扫描” 退化为 “全表扫描”,性能骤降。本文结合 MySQL、PostgreSQL、Oracle 三大主流数据库的特性,详解索引失效的 8 大高频场景、底层原因及针对性优化方案
阅读全文
摘要:在 MySQL 或 MariaDB 开发中,NULL值是处理 “缺失数据” 的常用方式,但包含IS NULL的查询往往隐藏着性能隐患。尤其当多个字段同时使用IS NULL条件时,查询可能从毫秒级骤降至分钟级。本文基于 350 万行数据的实测案例,拆解 NULL 值与索引的交互逻辑,揭秘性能暴跌的根源
阅读全文
摘要:在 MySQL 中,将数据库字符集设置为utf8mb4需从全局配置、数据库级配置、表级配置甚至字段级配置多个层面操作,确保字符集的一致性。以下是详细步骤和注意事项: 一、前提:确认 MySQL 版本支持 utf8mb4字符集从 MySQL 5.5.3 版本开始支持,建议使用 MySQL 5.7 及以
阅读全文
摘要:在 MySQL 主从复制架构中,“数据一致性” 是业务可靠性的基石 —— 主从数据不一致可能导致订单丢失、库存偏差、报表错误等严重问题。而 pt-table-checksum(Percona Toolkit 核心工具之一)正是为解决这一痛点而生:它通过在主库分块计算数据校验和,同步到从库后对比差异,
阅读全文
摘要:在 MySQL 主从复制架构中,传统异步复制虽能满足大部分场景的性能需求,但存在 “主库提交事务后,从库未同步就宕机导致数据丢失” 的风险。而 MySQL 8 半同步复制 通过 “主库等待从库确认接收事务” 的机制,在性能与数据一致性间取得平衡,成为对数据可靠性有要求的业务(如电商订单、金融交易)的
阅读全文
摘要:在 MySQL 运维中,DDL(数据定义语言)操作(如加列、改字段、重命名)曾是运维人员的 “痛点”—— 传统 DDL 算法(如COPY、INPLACE)在处理大表(千万级以上数据)时,要么需要复制全表数据导致耗时漫长,要么会持有表级锁阻塞业务读写,严重影响线上服务可用性。 自MySQL 8.0.1
阅读全文
摘要:在 MySQL 数据库中,字符集(Character Set)是决定数据如何存储、传输和显示的核心组件,直接影响数据一致性(如避免乱码)、查询性能和多语言支持能力。本文将从字符集的基础概念出发,深入讲解 MySQL 的字符集体系、配置层级、常见问题及最佳实践,帮助开发者全面掌握字符集管理。 一、基础
阅读全文
摘要:MySQL LIMIT 子句 MySQL LIMIT 子句是控制 SELECT 语句返回行数的重要工具。通过指定从结果集中获取的最大行数,它可以让你处理数据子集,尤其是在涉及大表的情况下。该功能可提高查询性能,并通过只获取必要的行来优化资源使用。 MySQL LIMIT 子句的语法 MySQL 中的
阅读全文
摘要:在 MySQL 数据库运维中,表结构修改是绕不开的需求:电商订单表需新增 “物流状态” 字段、金融用户表要调整索引优化查询、游戏日志表需按日期分区减少历史数据扫描... 但传统ALTER TABLE命令会对表加排他元数据锁(MDL),大表修改时可能导致读写阻塞数小时,直接引发业务中断。而pt-onl
阅读全文
摘要:会话临时表空间 会话临时表空间用于存储用户创建的临时表,以及在InnoDB被配置为磁盘上内部临时表的存储引擎时由优化器创建的内部临时表。从 MySQL 8.0.16 开始,磁盘上内部临时表使用的存储引擎是InnoDB。(以前,存储引擎由internal_tmp_disk_storage_engine
阅读全文
摘要:MySQL 的系统变量配置了 MySQL Server 如何运行,SET 语句用于修改系统变量。MySQL SET 命令有多种选项,用于指定如何以及何时修改系统变量。重要的是要了解这些修改如何反映在当前会话(连接)、以后的会话以及数据库服务器重启后。 用户可以使用 SET 修改的变量由其权限级别决定
阅读全文
摘要:在复杂 SQL 查询的优化中,表连接方式的选择直接决定了执行效率。本文通过一个实际案例,解析驱动表优化与 Hash 关联在多表连接场景中的应用差异,揭示如何根据数据特征选择最优策略。 一、案例背景:一条慢查询的困境 某业务 SQL 涉及多表连接,包含CT_ACT、CT_ACT_STAGE、CT_AC
阅读全文
摘要:MySQL 客户端配置读取机制揭秘:从 "诡异默认用户" 看配置优先级 在 MySQL 运维中,客户端的默认连接参数(如用户、主机、端口)通常由配置文件控制。但有时会遇到这样的困惑:明明在/etc/my.cnf中配置了默认用户为root,实际连接时却默认使用了另一个用户。这一现象的背后,藏着 MyS
阅读全文