MySQL相关知识点

目录

读写分离和分库分表详解 | JavaGuide

数据冷热分离详解 | JavaGuide

深度分页介绍及优化建议 | JavaGuide

索引

查询性能优化

存储引擎

数据类型

切分

复制

MySQL相关知识点

explain 执行分析,主要关注哪些字段,为什么?

MySQL什么情况下会加间隙锁?

undo log、redo log、binlog 的作用

MySQL深分页怎么解决?

SQL 调优

联合索引 abc where a=3 and b>3 and c=3 怎么走索引?

对于索引,在开发中需要注意什么?

索引为什么是B+树结构,MySQL有哪些引擎,有什么区别?

MYSQL innodb引擎的索引结构,B+树一般都多高,层高怎么计算的?


读写分离和分库分表详解 | JavaGuide

读写分离和分库分表详解 | JavaGuide

数据冷热分离详解 | JavaGuide

数据冷热分离详解 | JavaGuide

深度分页介绍及优化建议 | JavaGuide

深度分页介绍及优化建议 | JavaGuide

索引

查询性能优化

存储引擎

数据类型

切分

复制

分类 详情
索引 B+Tree 原理:基于 B Tree 和叶子节点顺序访问指针实现,节点 key 有序,查找时在根节点二分查找后递归,插入删除后需维护平衡性。相比红黑树,B+Tree 树高更低,更适合磁盘数据读取,且利用磁盘预读特性提升性能
MySQL 索引类型:
- B+Tree 索引:多数存储引擎默认类型,查找快,可用于排序、分组,支持多种查找方式,InnoDB 有主索引(聚簇索引)和辅助索引之分
- 哈希索引:查找时间复杂度 O (1),但无法排序、分组,只支持精确查找,InnoDB 有自适应哈希索引
- 全文索引:MyISAM 和 InnoDB 5.6.4 + 版本支持,用于查找文本关键词,使用倒排索引,查询用 MATCH AGAINST
- 空间数据索引:MyISAM 支持,用于地理数据存储,从多维度索引数据,需 GIS 函数维护数据
索引优化:
- 独立的列:索引列不能是表达式或函数参数
- 多列索引:多条件查询时多列索引性能优于多个单列索引
- 索引列顺序:将选择性强的列放前面,选择性是不重复索引值与记录总数比值
- 前缀索引:BLOB 等类型列使用前缀索引,前缀长度依选择性确定
- 覆盖索引:索引包含查询所需所有字段值,能减少数据访问量等
索引优缺点及适用场景:优点是减少扫描行数、避免排序分组和临时表创建、将随机 I/O 变顺序 I/O;小表全表扫描可能更高效,中大型表索引有效,特大型表需考虑分区技术
查询性能优化 Explain 分析:用于分析 SELECT 查询语句,通过 select_type、key、rows 等字段优化查询
优化数据访问:
- 减少请求数据量:不使用 SELECT *,用 LIMIT 限制返回行数,缓存重复查询数据
- 减少服务器扫描行数:使用覆盖索引
重构查询方式:
- 切分大查询:防止锁数据、占满事务日志等,如按批次删除大量数据
- 分解大连接查询:提高缓存效率、减少锁竞争等,如用 IN () 代替连接查询
存储引擎 InnoDB:默认事务型存储引擎,支持四个隔离级别,默认可重复读,用 MVCC + Next-Key Locking 防幻影读,主索引是聚簇索引,内部有多种优化,支持在线热备份
MyISAM:设计简单,适用于只读或小表场景,提供压缩表等特性,不支持事务和行级锁,有并发插入功能,索引数据写入可延迟
对比:InnoDB 支持事务、行级锁和外键,崩溃后损坏概率低;MyISAM 支持压缩表和空间数据索引,只支持表级锁
数据类型 整型:TINYINT 等多种类型,INT 括号内数字不影响存储计算
浮点数:FLOAT、D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值