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

八股——Mysql篇


Mysql优化

表象:页面加载慢,接口反应时间长

如何定位慢查询?

1.开源工具:Arthas

        运维工具:Skywalking

2.Mysql自带慢日志,需要设置


SQL执行慢分析

加EXPLIAIN(explian)或者DESC(desc) 

一般来说type字段是index或者all就需要优化了


索引

索引是帮助Mysql高效获取数据的数据结构

索引底层数据结构(B+树

红黑树时间复杂度O(log n)—— 平衡数据分布极端的情况

B树

B+树(非叶子结点只存储指针)—— 叶子结点直接采用双向链表


聚簇索引和二级索引(非聚簇)

聚簇索引,一般来说是ID主键索引,叶子存整行数据

二级索引,其他属性的,叶子节点存主键

通过二级索引找聚簇索引,查信息,即为回表查询


覆盖索引

回表查询性能不高


超大分页优化(使用覆盖索引+子查询)

原因:

需要limit排序效率低


索引创建原则


索引失效


谈谈SQL优化经验

五大类

  • 表的设计

  • SQL语句

ps:where少用表达式避免索引失效的情况

  • 主从复制、读写分离

搭建主库和从库,避免写影响读


事务

事务的特性

一组操作的集合,不可分割,同时成功或者失败

ACID

  • 原子性
  • 一致性
  • 隔离性
  • 永久性


并发事务问题

脏读:事务还没提交数据,被另一个事务读取了

不可重复读:两次查询读到的数据不一样(因为事务并发问题导致两次查询之间另外一事务更改了数据)

幻读:第一次查询没读到数据,想插入,但是中间另一事务插入了,导致无法插入

解决方案——> 事务隔离

事务隔离级别越高,数据越安全,但是性能越低

默认Repeated read


undo log 和 redo log

redo保证持久性

undo 保证原子性,一致性


MVCC(多版本并发控制)

太难了,下次再看


主从同步

主库写二进制日志binlog文件,从库读,写入中继日志relay log,然后再执行


分库分表

水平分库(按路由结点将一个库分成多个)——优先使用,解决海量数据问题

水平分表(一个表分到多个表)

垂直分库(根据业务把不同的表拆分到不同的库)

垂直分表(将不同字段放到不同的表)


 


相关文章:

  • WebAssembly实践,性能也有局限性
  • 小白工具PDF转换 PDF转图片 超便捷软件 文件格式转换 简单好用效率高
  • 新手村:逻辑回归-理解04:熵是什么?
  • 第五天 开始Unity Shader的学习之旅之Unity中的基础光照之漫反射光照模型
  • 座舱网联融合新旗舰!移远通信48 TOPS座舱方案携AI大模型能力,赋能多域融合
  • LabVIEW时间触发协议
  • husky的简介以及如果想要放飞自我的解决方案
  • CCF-GESP 等级考试 2025年3月认证C++一级真题解析
  • 一文解读DeepSeek在工业制造领域的应用
  • Win32 / C++ ini配置文件解析类(支持简易加解密)
  • 线性代数核心概念与NumPy科学计算实战全解析
  • 鸿蒙学习笔记(1)-文件解读、编写程序、生命周期
  • 汽车高级驾驶辅助系统应用存储MRAM
  • 边缘计算场景下的分布式推理系统架构设计
  • MySQL索引优化最佳实践
  • Python 3.8 Requests 爬虫教程(2025最新版)
  • 递归进阶(用递归改造循环11~20)(1082、1265、1395、1083、1066、1782、1783、1784、1008、1224)
  • 树的深度优先(DFS)和广度优先(BFS)算法
  • Nginx相关漏洞解析
  • Redis 版本演进及主要新特性
  • 挂马网站教程/广州seo公司
  • 广州建站方法/湖北百度seo
  • 免费综合网站注册申请/seo推广技术
  • wordpress 远程管理/seo长尾关键词优化
  • 杭州网站建设公司哪家好/百度指数疫情
  • 网站怎么才能被百度收录/seo外包 靠谱