随笔分类 -  MySQL

摘要:一、Profiling局限性 在MySQL性能诊断领域,Profiling工具曾因简单易用成为开发者排查SQL耗时的常用选择,但随着MySQL版本迭代(5.7+起官方明确标记为弃用),其功能局限和性能损耗问题逐渐凸显。而Performance Schema(简称PS)作为MySQL原生的高性能监控框 阅读全文
posted @ 2025-11-27 22:06 夏尔_717 阅读(51) 评论(0) 推荐(0)
摘要:一、概述 group by的核心作用是分类统计:通过指定分组列将原始数据划分为多个逻辑组,再结合sum、count、min/max等聚合函数,计算每组的统计结果(如按用户分组统计订单总额、按日期分组统计访问量)。 其执行效率的关键瓶颈在于:无索引支持时,MySQL需经历「扫描全表→创建临时表存储中间 阅读全文
posted @ 2025-11-19 14:29 夏尔_717 阅读(50) 评论(0) 推荐(0)
摘要:一、概述 1.1 MVCC的定义与价值 MVCC(Multi-Version Concurrency Control)是一种非锁定式并发控制技术,其核心目标是解决读写操作的相互阻塞问题。传统锁机制中,读操作加共享锁、写操作加排他锁,导致读写互斥;而MVCC通过维护数据的多个历史版本,让快照读(非锁定 阅读全文
posted @ 2025-11-15 18:37 夏尔_717 阅读(13) 评论(0) 推荐(0)
摘要:一、概述 order by的核心功能,是按照指定的单个或多个字段,对select查询返回的结果集进行升序(asc,默认)或降序(desc)排列,以满足业务对数据有序性的需求。但要判断order by的实际执行效率,最直接的工具是explain分析——通过输出结果中“Extra”列的两个关键标识,可快 阅读全文
posted @ 2025-11-03 21:18 夏尔_717 阅读(62) 评论(0) 推荐(0)
摘要:一、概述 show status是MySQL内置的核心诊断命令,用于实时查看数据库服务器的运行状态指标,涵盖连接数、查询性能、缓存使用、锁等待等关键维度。这些指标如同数据库的“体检报告”,能帮助开发者快速定位性能瓶颈、优化配置参数,是日常运维和故障排查的必备工具。 二、基础语法与分类 2.1 基础语 阅读全文
posted @ 2025-11-02 13:55 夏尔_717 阅读(84) 评论(0) 推荐(0)
摘要:一、概述 information_schema提供了对数据库元数据、统计信息以及有关MySQLServer信息的访问(例如:数据库名或表名、字段的数据类型和访问权限等)。该库中保存的信息也可以称为MySQL的数据字典或系统目录。 在每个MySQL实例中都有一个独立的information_schem 阅读全文
posted @ 2025-11-02 01:09 夏尔_717 阅读(67) 评论(0) 推荐(0)
摘要:一、概述 processlist是MySQL数据库的实时连接监控中心,通过它可直观查看当前所有数据库连接线程的状态(如执行SQL、空闲、锁等待等),是排查慢查询、死锁、连接泄露等性能问题的核心手段。 关键版本变更(必看!)​ 弃用警告:information_schema.processlist表及 阅读全文
posted @ 2025-10-31 18:12 夏尔_717 阅读(87) 评论(0) 推荐(0)
摘要:一、概述 MySQL慢查询日志是定位性能瓶颈的核心工具,专门记录响应时间超过阈值的SQL语句。 其核心定义为:运行时间超过long_query_time参数(默认10秒)的SQL,会被自动记录到日志中。开启该日志的核心目的,是精准识别执行效率低下的查询语句,为优化提供数据支撑。 默认情况下,MySQ 阅读全文
posted @ 2025-10-21 16:05 夏尔_717 阅读(155) 评论(0) 推荐(0)
摘要:一、概述 show index语句是MySQL中用于查看表索引信息的语句。它提供了有关表中索引的详细信息,包括索引名称、索引类型、关联的列等。 二、语法与概要描述 2.1 基本语法 SHOW INDEX语句的语法如下: show index from table_name [from db_name 阅读全文
posted @ 2025-10-20 13:10 夏尔_717 阅读(222) 评论(0) 推荐(0)
摘要:一、概述 Performance Schema(简称PS)是MySQL原生工具,用于监控服务器运行时的资源消耗、等待事件(如锁等待、IO耗时),聚焦“性能数据”,与关注“元数据”(如表结构、列属性)的information_schema形成互补。​ 核心特点​ 实时监控:运行时实时捕捉服务器内部执行 阅读全文
posted @ 2025-10-09 16:48 夏尔_717 阅读(63) 评论(0) 推荐(0)
摘要:因为加锁是跟数据库的隔离级别息息相关的。而常用的数据库隔离级别也就RC(读已提交)和RR(可重复读),所以本文分别根据RC(读已提交)和RR(可重复读)隔离级别展开讲述。 一、环境准备 设置数据库隔隔离级别 mysql> set global transaction isolation level 阅读全文
posted @ 2025-09-30 16:46 夏尔_717 阅读(30) 评论(0) 推荐(0)
摘要:一、概述 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重。 注意:优化有风险,涉足需谨慎! 优化可能带来的问题 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的 阅读全文
posted @ 2025-09-26 20:57 夏尔_717 阅读(68) 评论(0) 推荐(0)
摘要:一、概述 optimizer_trace是MySQL 5.6引入的一项跟踪功能,它可以跟踪优化器做出的各种决策(比如访问表的方法、各种开销计算、各种转换等),并将跟踪结果记录到information_schema.optimizer_trace表中。此功能默认关闭,开启后,可分析如下语句: sele 阅读全文
posted @ 2025-09-26 17:50 夏尔_717 阅读(60) 评论(0) 推荐(0)
摘要:一、概述 MySQL常用关联算法有三种:合并关联(Merge Join),哈希关联(Hash Join)和嵌套循环关联(Nested Loop Join)。 当联接两个关系时,关联算法对两个关系的处理是不同的。假定:外关系是左侧数据集(驱动表),内关系是右侧数据集(非驱动表、被驱动表)。 比如,A 阅读全文
posted @ 2025-07-13 23:15 夏尔_717 阅读(47) 评论(0) 推荐(0)
摘要:一、隐藏索引 1.1 概述 MySQL 8.0开始支持隐藏索引 (invisible index),不可见索引。 隐藏索引不会被优化器使用,但仍然需要进行维护。 语法: -- 创建隐藏索引 CREATE INDEX idx_invisible ON table_name(col) INVISIBLE 阅读全文
posted @ 2025-06-10 19:24 夏尔_717 阅读(160) 评论(0) 推荐(0)
摘要:一、常用函数 1.1 ascii(str) 返回值为字符串str的最左字符的数值,即取得最左字符的ascii码。假如str为空字符串,则返回值为0。假如str为null,则返回值为null。 mysql> select ascii('a'); + + | ascii('a') | + + | 97 阅读全文
posted @ 2023-07-05 14:33 夏尔_717 阅读(546) 评论(0) 推荐(0)
摘要:生成列(generated column)的值是根据列定义中包含的表达式计算得出的。 生成列包含下面两种类型: virtual(虚拟):当从表中读取记录时,将动态计算该列。 stored(存储):当向表中写入新记录时,将计算该列并将其存储为常规列。 virtual生成列比stored生成列更有用,因 阅读全文
posted @ 2022-11-27 13:09 夏尔_717 阅读(726) 评论(0) 推荐(0)
摘要:一、概述 MySQL 8支持公用表表达式,包括非递归和递归两种。 公用表表达式允许使用命名的临时结果集,这是通过允许在SELECT语句和某些其他语句前面使用WITH子句来实现的。 不能在同一查询中两次引用派生表(子查询),因为那样的话,查询会根据派生表的引用次数计算两次或多次,这会引发严重的性能问题 阅读全文
posted @ 2022-11-24 14:02 夏尔_717 阅读(471) 评论(0) 推荐(0)
摘要:1. 自增变量持久化 在MySQL8.0之前的版本中,自增列计数器置于内存中,并不会持久化到磁盘,当数据库重启后,会根据select max(id)+1 from xxx重新计算当前自增列值,这种现象在某些情况下会导致业务主键冲突或者其他难以发现的问题。自增主键重启重置的问题很早就被发现Innodb 阅读全文
posted @ 2022-11-18 15:49 夏尔_717 阅读(596) 评论(0) 推荐(0)
摘要:要在MySQL中存储数据,就必须定义数据库和表结构(schema),这是一个主要的限制。为了应对这一点,MySQL 5.7开始支持了JavaScript对象表示(JavaScript Object Notation,JSON)数据类型。之前,这类数据不是单独的数据类型,会被存储为字符串。新的json 阅读全文
posted @ 2022-11-05 18:25 夏尔_717 阅读(1398) 评论(0) 推荐(2)