欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 八股——Mysql篇

八股——Mysql篇

2025/9/24 18:00:36 来源:https://blog.csdn.net/2301_76662173/article/details/146422625  浏览:    关键词:八股——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,然后再执行


分库分表

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

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

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

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


 


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词