MySQL索引、存储引擎和SQL优化深入解析
目录存储引擎1. 在创建表时,指定存储引擎2. 查看当前数据库支持的存储引擎3. innoDB存储引擎4. MyISAM存储引擎5. Memory存储引擎6. 区别7. 存储引擎的选择索引基础1. 优缺点2. 索引结构3. 索引分类4. innoDB索引分类5. 索引语法1. 创建索引2.查看索引3.删除索引SQL优化SQL查询性能下降的原因1. 慢查询日志2. 执行计划id列s ...
MySQL索引、存储引擎和SQL优化深入解析
目录存储引擎1. 在创建表时,指定存储引擎2. 查看当前数据库支持的存储引擎3. innoDB存储引擎4. MyISAM存储引擎5. Memory存储引擎6. 区别7. 存储引擎的选择索引基础1. 优缺点2. 索引结构3. 索引分类4. innoDB索引分类5. 索引语法1. 创建索引2.查看索引3.删除索引SQL优化SQL查询性能下降的原因1. 慢查询日志2. 执行计划id列s ...
深入理解MySQL元数据锁(MDL)原理解析与实践指南
目录一、为什么需要MDL?——没有MDL的“坑”1.1 问题场景复现1.2 问题根源与后果1.3 解决方案:引入MDL锁二、MDL如何工作?——增加MDL后的实验2.1 实验准备2.2 实验步骤与结果2.3 实验结论三、MDL的“副作用”:查询阻塞案例分析3.1 案例准备3.2 阻塞场景复现3.3 问题分析与应对 ...
深入理解MySQL元数据锁(MDL)原理解析与实践指南
目录一、为什么需要MDL?——没有MDL的“坑”1.1 问题场景复现1.2 问题根源与后果1.3 解决方案:引入MDL锁二、MDL如何工作?——增加MDL后的实验2.1 实验准备2.2 实验步骤与结果2.3 实验结论三、MDL的“副作用”:查询阻塞案例分析3.1 案例准备3.2 阻塞场景复现3.3 问题分析与应对 ...
MySQL环境搭建与基础操作详细过程
目录一、实验核心目标二、关键知识点与实操步骤(一)MySQL 服务管理:启动与退出(二)MySQL 登录与退出:两种实用方式方式一:命令行客户端登录方式二:MySQL Workbench 登录(三)SQL 语句执行:两种工具实战1. 命令行状态下的 SQL 操作2. MySQL Workbench 下的 SQL 操作(四)数据库与数据表核心操作1. 数据库创建与选 ...
MySQL环境搭建与基础操作详细过程
目录一、实验核心目标二、关键知识点与实操步骤(一)MySQL 服务管理:启动与退出(二)MySQL 登录与退出:两种实用方式方式一:命令行客户端登录方式二:MySQL Workbench 登录(三)SQL 语句执行:两种工具实战1. 命令行状态下的 SQL 操作2. MySQL Workbench 下的 SQL 操作(四)数据库与数据表核心操作1. 数据库创建与选 ...
MySQL中统计各个IP的连接数的方法总结
目录MySQL中统计各个IP的连接数方法1:查询 INFORMATION_SCHEMA.PROCESSLIST方法2:使用 SHOW PROCESSLIST 命令方法3:更详细的连接信息统计方法4:实时监控脚本(Shell)方法5:定期统计并记录到表方法6:查看当前连接详情实用技巧1. 查找连接数过多的IP2. 杀死特定IP的所有连接MySQL中统计各个IP的连接数
在MySQL中统计各 ...
MySQL中统计各个IP的连接数的方法总结
目录MySQL中统计各个IP的连接数方法1:查询 INFORMATION_SCHEMA.PROCESSLIST方法2:使用 SHOW PROCESSLIST 命令方法3:更详细的连接信息统计方法4:实时监控脚本(Shell)方法5:定期统计并记录到表方法6:查看当前连接详情实用技巧1. 查找连接数过多的IP2. 杀死特定IP的所有连接MySQL中统计各个IP的连接数
在MySQL中统计各 ...
MySQL核心日志与备份恢复示例详解
目录1.二进制日志1.1 概述1.2 磁盘文件1.3 过期时间1.4 日志格式1.5 刷盘策略1.6 mysqlbinlog工具1.6.1 准备数据1.6.2 查看binlog1.6.3 数据恢复2.数据备份与恢复2.1 分类2.1.1 按数据存储形式划分2.1.2 按数据库运行状态划分2.1.3 按备份数据范围划分2.2 mysqldump2.2.1 工具介绍2.2.2 示例2.2.3 数据一致性问题2.3 mysqli ...
MySQL核心日志与备份恢复示例详解
目录1.二进制日志1.1 概述1.2 磁盘文件1.3 过期时间1.4 日志格式1.5 刷盘策略1.6 mysqlbinlog工具1.6.1 准备数据1.6.2 查看binlog1.6.3 数据恢复2.数据备份与恢复2.1 分类2.1.1 按数据存储形式划分2.1.2 按数据库运行状态划分2.1.3 按备份数据范围划分2.2 mysqldump2.2.1 工具介绍2.2.2 示例2.2.3 数据一致性问题2.3 mysqli ...
MySQL中insertOrUpdate的功能实现方式
目录底层实现相似SQL浅谈主键跳跃总结insertOrUpdate在我们日常使用中比较常见,那么它是如何实现的呢,不知道大家有没有考虑过呢?
在MySQL中,可采用INSERT INTO ... ON DUPLICATE KEY UPDATE语句实现insertOrUpdate功能。
值得留意的是,在出现重复键时,会在先前索引值和当前值之间添加临时键锁,这可能导致死锁。
若要 ...
Mysql因为字段字符集编码的问题导致索引没生效的解决方案
目录我的原始sqlexplain结果分析为什么复合索引只匹配到了org_id为什么两个字符集不一致呢?如何把整个库的所有表及字段的字符集都统一为utf8mb4_0900_ai_ci总结我的原始sql
SELECT s.department_name AS departmentName,
cps.purchase_type AS pu ...
Mysql中的常用调优参数用法及解读
目录写在开头内存池相关innodb_buffer_pool_sizeinnodb_buffer_pool_instancesinnodb_log_buffer_size写数据不能直接怼磁盘写日志redo log & 刷盘相关innodb_redo_log_capacityinnodb_flush_log_at_trx_commitsync_binlog后台 I/O、清理线程和并发限制innodb_write_io_threadsinnodb_read_io_threadsinnodb_purge_threads临 ...
MySQL FIND_IN_SET字符串函数深度解析
目录函数概述函数签名返回值基本语法与用法基础示例边界情况工作原理内部实现逻辑字符匹配规则常见陷阱与问题1. 索引失效问题2. 数据类型陷阱3. 空值和空字符串陷阱4. 逗号字符陷阱5. 性能陷阱性能分析时间复杂度性能测试对比内存使用最佳实践1. 适用场景2. 优化技巧3. 数据验证替代方案1. 规范化表结构(推荐)2. JSON 字 ...
MySQL FIND_IN_SET字符串函数深度解析
目录函数概述函数签名返回值基本语法与用法基础示例边界情况工作原理内部实现逻辑字符匹配规则常见陷阱与问题1. 索引失效问题2. 数据类型陷阱3. 空值和空字符串陷阱4. 逗号字符陷阱5. 性能陷阱性能分析时间复杂度性能测试对比内存使用最佳实践1. 适用场景2. 优化技巧3. 数据验证替代方案1. 规范化表结构(推荐)2. JSON 字 ...
MySQL复合查询从基础到高级应用全面解析
目录一、复合查询基础概念1.1 什么是复合查询1.2 复合查询的主要类型二、示例数据库结构详解2.1 完整的表结构设计2.2 示例数据填充三、子查询深度解析3.1 子查询分类与语法3.1.1 按子查询位置分类3.1.2 按子查询相关性分类3.2 子查询操作符详解3.3 子查询性能优化四、连接查询全面讲解4.1 连接类型详解4.1.1 内连接(INNER J ...
MySQL复合查询从基础到高级应用全面解析
目录一、复合查询基础概念1.1 什么是复合查询1.2 复合查询的主要类型二、示例数据库结构详解2.1 完整的表结构设计2.2 示例数据填充三、子查询深度解析3.1 子查询分类与语法3.1.1 按子查询位置分类3.1.2 按子查询相关性分类3.2 子查询操作符详解3.3 子查询性能优化四、连接查询全面讲解4.1 连接类型详解4.1.1 内连接(INNER J ...
记一次MySQL binlog日志导致磁盘空间占满的问题
背景
某开发人员反馈,一个MySQL测试环境的数据库服务器,磁盘空间被占满,并且明确告知MySQL数据库并不大,但是其binlog日志占用数百GB的空间,远远超出预期的大小,要协助检查为什么binlog会占用如此大的空间。简言之就是:数据量较小,binlog的日志量很大。
binlog相关的配置信息
查看MySQL binlog相关的参数,1 ...
MySQL 筛选条件放 ON 后 vs 放 WHERE 后
今天我们来讲讲数据库筛选条件放 ON 后和放 WHERE 后的区别。
ON 决定如何 "连接" 表,WHERE 决定连接后 "显示" 哪些行。 这个根本区别导致了在 LEFT JOIN / RIGHT JOIN 外连接中,条件放置位置会产生巨大影响;而在 INNER JOIN 中,效果通常 等价。
ON 条件匹配 被驱动表 的行,生成 "临时关联结果集"。LEF ...
数据库性能实测:Docker 开销、连接方式、MySQL vs PostgreSQL 全面对比
本文通过多组对照实验,测试 Docker 容器化开销、网络连接方式、数据库版本、MySQL 与 PostgreSQL 性能差异,揭示影响数据库性能的真正因素。
测试背景
网上关于数据库性能的说法众说纷纭:
"Docker 部署数据库有性能损耗"
"PostgreSQL 比 MySQL 快"
"Unix socket 比 TCP 快"
为了搞清楚真相,我在阿里云 ECS 上进行了 ...