当前位置:网站首页>MySQL基础知识

MySQL基础知识

2022-04-23 14:08:00 白马非马·

0. 基础知识

  1. 关系型数据库:MySQL
    数据库中存储的数据之间是有联系(一对一,一对多和多对一)

1. 索引(采用B和B+树)

1.1 索引可供选择的数据结构

快速查询和检索数据的数据结构,常见的有B树,B+树和Hash

  1. Hash表进行索引:
    1)优点:快
    2)缺点:Hash冲突问题,Hash索引不支持顺序和范围查询

  2. B+树:多路平衡查找树
    1)区别:B树所有节点既存放键,也存放数据;B+树只有叶子节点存放键和数据,其他节点只存放键。
    2)数据都存放在叶子节点中,查找的数据少。

  3. B-树

  4. AVL树:平衡二叉树
    1)所有节点子树的高度差不超过一,超过会进行旋转操作
    2)为什么不用红黑树进行索引?
    树的深度过大过大,而导致磁盘IO读写过于频繁。

  5. 红黑树:自平衡二叉查找树,弱平衡二叉树
    1)为什么不用红黑树进行索引。
    红黑树往往出现由于树的深度过大过大,而导致磁盘IO读写过于频繁。

  6. 红黑树与AVL树的区别
    红黑树的 查询性能略微逊色于AVL树,因为他比avl树会稍微不平衡最多一层,也就是说红黑树的查询性能只比相同内容的avl树最多多一次比较,但是,红黑树在插入和删除上完爆avl树, avl树每次插入删除会进行大量的平衡度计算,而红黑树为了维持红黑性质所做的红黑变换和旋转的开销,相较于avl树为了维持平衡的 开销要小得多

1.2 索引的类型

  1. 索引类型
    1)主键索引(聚集索引):索引结构和数据存放在一起
    2)二级索引(辅助索引,非聚集索引)索引结构和数据不存放在一起。

2. 事务

  1. 事务:是逻辑上的一组操作,要么都执行,要么都不执行
  2. 数据库事务:保证多个对数据库的操作构成一个逻辑上的整体,要么全部执行成功,要么全部不执行
//开启一个事务
START TRANSACTION
SQL1,SQL2
//提交事务
COMMIT
  1. 关系型数据库的事务四大特性:
    1)原子性:事务是最小的执行单位,不允许分割
    2)隔离性:并发访问数据库,一个用户的事务不会被其他事务所干扰
    3)持久性:一个事务被提交,对数据库的改变是持久的。
    4)一致性:执行事务前后,数据保持一致(转账,钱没少) 【前三个保证了,最后一个才能保证】

  2. 事务四大特性的实现原理:
    1)原子性:undo log(回滚日志)
    2)持久性:redo log(重做日志)
    3)隔离性:锁机制,MVCC保证。
    4)一致性:前三者满足,自然保证。

  3. 并发事务带来的问题:
    1)脏读:一个事务进行数据库修改,还没有提交,另一个事务进行访问,多得到的数据是脏数据。
    2)丢失修改:两个事务同时对一个数据进行修改,那么第一个事务修改的数据不会被保存。
    3)不可重复读(修改):一个事务多次读取数据库的一个数据,在两次读取数据之间,发生了另一个事务对数据的修改,导致第一个事务读到的两个数据不一致,那么成为不可重复读。
    4)幻读(新增或者删除):和不可重复读类似,就是一个事务在读取数据库内容时,另一个事务对该数据库进行插入操作,使得第二次第一个事务读到的数据多了,像发生了幻觉。

  4. 事务隔离的级别:
    1)读取未提交
    2)读取已提交
    3)可重复读
    4)可串行化:(最理想)

  5. MySQL的默认隔离级别是:可重复读

3. 存储引擎

存储引擎:如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。决定数据库提供的功能和性能。

主流的存储引擎有两种:MylSAM 和InnoDB(事务性数据库)。

  1. 两个存储引擎的对比
    1)是否支持行级锁
    2)是否支持事务
    3)是否支持外键是否支持数据库异常崩溃后的安全恢复
    4)是否支持MVCC(行级锁的一个升级)

4. 锁机制

  1. MylSAM 和InnoDB存储引擎采用的锁
    1)MylSAM:表级锁,一锁,直接把一张表给锁住
    2)InnoDB支持行级锁和表级锁,默认为行级锁

  2. 行级锁和表级锁区别:
    1)表级锁:粒度最大一种锁,对当前操作的整张表加锁。(无死锁)
    2)行级锁:粒度最小的一种锁,只针对当前操作的行进行加锁(死锁)

  3. Inno存储引擎的锁算法三种
    1)Record lock: 记录锁
    2)Gap lock:间隙锁,锁定一个范围,不包括记录本身
    3)Next-key lock:临建锁

参考文章:

链接:http://www.zhihu.com/question/43744788/answer/98258881

版权声明
本文为[白马非马·]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_42974034/article/details/124146653