当前位置: 首页 > backend >正文

MySQL 核心知识点解析

最近正在复习Java八股,所以会将一些热门的八股问题,结合ai与自身理解写成博客便于记忆
在这里插入图片描述

InnoDB 和 MyISAM 的区别

特性InnoDBMyISAM
事务支持支持ACID事务不支持事务
锁机制行级锁表级锁
外键支持支持不支持
崩溃恢复有crash-safe能力
存储结构聚簇索引非聚簇索引
全文索引MySQL 5.6+支持支持
COUNT(*)效率需要扫描全表有单独计数器,效率高
适用场景高并发、事务性操作读多写少、不需要事务

主从复制的原理

  1. 基本流程

    • 主库(binary log)记录所有数据变更
    • 从库(I/O thread)请求主库的binlog
    • 主库(binlog dump thread)发送binlog给从库
    • 从库(SQL thread)重放(replay)binlog中的事件
  2. 复制模式

    • 异步复制(默认):主库不等待从库确认
    • 半同步复制:至少一个从库接收并确认后才提交
    • 组复制(MySQL Group Replication):基于Paxos协议的多主复制
  3. binlog格式

    • STATEMENT:记录SQL语句
    • ROW:记录行变化(默认)
    • MIXED:混合模式

RR 和 RC 的区别

RR(Repeatable Read)可重复读 vs RC(Read Committed)读已提交

特性RRRC
隔离级别可重复读(默认)读已提交
幻读问题可能发生(但InnoDB通过MVCC避免)不会发生
一致性视图事务开始时创建每条语句开始时创建
锁定范围范围锁只锁定已提交的行
性能较低较高

为什么互联网公司选择使用 RC

  1. 性能优势:RC的并发度更高,锁冲突更少
  2. 减少死锁:锁定范围小,减少死锁概率
  3. 业务需求:多数互联网应用不需要严格的RR隔离
  4. 与ORM框架配合:许多框架默认使用RC
  5. MVCC实现:InnoDB的MVCC在RC下更符合直觉
  6. 避免过度锁定:RR可能导致范围锁影响性能

查询关键字的执行顺序

SQL语句的逻辑执行顺序:

  1. FROM + JOIN:确定数据来源
  2. WHERE:过滤行数据
  3. GROUP BY:分组
  4. HAVING:过滤分组
  5. SELECT:选择列
  6. DISTINCT:去重
  7. ORDER BY:排序
  8. LIMIT/OFFSET:分页

注意:这是逻辑顺序,实际执行计划可能由优化器调整。

聚簇索引和非聚簇索引的区别

特性聚簇索引非聚簇索引
存储方式索引和数据存储在一起(B+树叶子节点包含行数据)索引和数据分开存储
数量限制每表只能有一个每表可以有多个
查询效率主键查询极快需要回表查询
插入速度依赖插入顺序相对独立
更新代价高(可能引起页分裂)相对较低
典型例子InnoDB的主键索引MyISAM的所有索引

InnoDB注意事项

  • 如果没有主键,会自动选择唯一非空列作为聚簇索引
  • 如果没有合适列,会隐式创建一个6字节的ROWID作为聚簇索引
  • 二级索引(非聚簇)存储的是主键值而非物理地址
http://www.xdnf.cn/news/11965.html

相关文章:

  • 高防IP可以防护什么攻击类型?企业网络安全的第一道防线
  • 找到每一个单词+模拟的思路和算法
  • Elasticsearch的写入性能优化
  • 常见优化器Optimizer总结
  • 网络编程之TCP编程
  • shell脚本一步完成批量创建删除Linux用户
  • 3D动画在微信小程序的实现方法
  • C语言数据结构笔记3:Union联合体+结构体取8位Bool量
  • 109页PPT华为流程模块L1-L4级梳理及研发采购服务资产5级建模
  • 如何通过RL真正提升大模型的推理能力?NVIDIA提出长期强化学习训练框架ProRL
  • Learning a Discriminative Prior for Blind Image Deblurring论文阅读
  • nest实现前端图形校验
  • Linux磁盘管理 - RAID
  • macOS 上使用 Homebrew 安装redis-cli
  • 我们来学zookeeper -- 集群搭建
  • Monorepo架构: 项目管理模式对比与考量
  • 详解ZYNQ中的 RC 和 EP
  • 解决idea编译运行项目时间长的问题
  • 深入理解C#中的Web API:构建现代化HTTP服务的完整指南
  • Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
  • leetcode删除排序链表中的重复元素-小白初学简单解说
  • JavaScript 深入探索:高级应用与前沿技术
  • 佰力博科技与您探讨半导体电阻测试的基本原理
  • 数据分析之OLTP vs OLAP
  • 乘用车自动驾驶和非乘用车(矿车,卡车)自动驾驶区别
  • 机器学习基础(三) 逻辑回归
  • vue3+elementplus表格表头加图标及文字提示
  • SpringBoot-15-多表查询之多对多查询可选中间表
  • 经典ReLU回归!重大缺陷「死亡ReLU问题」已被解决
  • SAP学习笔记 - 开发22 - 前端Fiori开发 数据绑定(Jason),Data Types(数据类型)