• MySQL总结


    一、索引

    1. 索引目的:加快数据的查询效率
    2. 索引模型:哈希表(等值)、有序数组(等值、范围)、二叉树(树高问题)、B-树(存储成本大、不适合范围查询)、B+树(叶子结点指向)
    3. 索引类型:存储(聚簇、非聚簇)、字段特性(主键、唯一、普通、全文)、字段个数(单列、联合)
    4. 索引下推
    5. 创建原则:查询频繁、更新少、区分度高、长度小、最左前缀、联合索引、非空字段、离散度
    6. 索引失效:使用函数、联合索引未满足最左匹配原则、隐式转化、or语句前后没有同时使用索引、索引列使用不等于号或not、like通配符匹配后缀%xxx

    二、事物

    1. 概念:一组操作,要么全部成功,要么全部失败。
    2. ACID:原子性、一致性、隔离性、持久性
    3. 并发问题
    问题说明解决方法
    脏读一个事务访问到另外一个事务未提交的数据行锁
    不可重复读多次读取同一条记录,得到的记录值不一致MVCC
    幻读多次读取某范围内的记录,得到的记录条数不一致Next-key lock
    1. 隔离级别
    隔离级别描述实现原理
    读未提交一个还没提交的事物的变更可以被别的事物看到
    读提交一个事物提交后,别的事物才能看到该事物的变更快照读+undo log
    可重复读一个事物在执行过程中看到的数据,总是和事物启动时看到的一致当前读+undo log
    串行化对同一行记录会加读、写锁

    三、锁

    1. 锁类型:粒度(行、页、表)、类别(共享、排他)
    2. innodb锁:Record lock、Gap lock(开区间)、Next-key lock(前开后闭区间)
    3. 死锁检测:直接进入等待状态,直至超时;发起死锁检测,检测到死锁后,回滚死锁链中的某个事务,让其他事务继续执行
    4. 乐观锁
    5. 悲观锁

    四、MVCC

    1. 两种视图
      view视图:在执行查询语句时生成,为查询语句定义的虚拟表。
      一致性视图:InnoDB 在实现 MVCC使用的就是一致性读视图(consistent read view),用于支持 RC(Read Committed,读提交)和 RR(Repeatable Read,可重复读)隔离级别的实现。
    2. 当前读 VS 快照读
      当前读:读取的是记录数据的最新版本,显式加锁的都是当前读
      快照读:读取的是记录数据的可见版本(有旧的版本)。不加锁,普通的select语句都是快照读

    五、日志文件

    1. redo log
    2. bing log
    3. undo log

    六、SQL的执行顺序

    1. 一条查询语句的执行顺序
    2. 一条更新语句的执行顺序

    七、MySQL优化

    1. SQL优化
    2. 架构优化:字段优化、大于500万条考虑水平分库分表或根据业务含义做垂直分表、主从架构
    3. 缓存:JVM或Redis缓存等
    4. 数据量太大,考虑TiDB、elastic- search等

    八、基础知识

    1. 数据库三大范式是什么
      第一范式:每个列都不可以再拆分。
      第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
      第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
    2. MyISAM 和 InnoDB 的区别
  • 相关阅读:
    C# Winform中在DataGridView中添加Button按钮,操作Button按钮
    设备行业研究报告:激光打印机市场现状及未来发展趋势
    petite-vue源码剖析-逐行解读@vue/reactivity之reactive
    大学生个人网页模板 简单网页制作作业成品 极简风格个人介绍HTML网页设计代码下载
    yolov4 预测框解码详解【附代码】
    Pandas数据分析26——pandas对象可视化.plot()用法和参数
    [ 行业洞察 ]“变”即常态,数字化服务商赴约转型盛宴
    代码阅读:LanGCN
    RK3588 linux内核中断之上半部(二)
    c# Class vs Structure
  • 原文地址:https://blog.csdn.net/qq_44837912/article/details/126190816