12-mysql

作者: 安然在路上 | 来源:发表于2021-07-01 16:12 被阅读0次

难点:
表空间 redo/undo 半同步复制 高可用

  • MySQL架构原理和存储机制
    MySQL体系结构(内存结构、磁盘结构)、SQL运行机制、存储引擎、Undo/Redo Log等等

  • MySQL索引存储机制和工作原理
    索引存储结构、索引查询原理、索引分析和优化、查询优化等

  • MySQL事务和锁工作原理
    事务隔离级别、事务并发处理、锁机制和实战等

  • MySQL集群架构及相关原理
    集群架构设计理念、主从架构、双主架构、分库分表等

  • 架构V1.0 - 单机单库

  • 架构V2.0 - 主从架构
    在MySQL的场景下就是通过主从结构(双主结构也属于特殊的主从),主库抗写压力,通过从库来分担读压力,对于写少读多的应用,主从架构完全能够胜任。
    V2.0瓶颈 1、数据量太大,超出一台服务器承受 2、写操作太大,超出一台M服务器承受

  • 架构V3.0 - 分库分表
    对于V1.0和V2.0遇到写入瓶颈和存储瓶颈时,可以通过水平拆分来解决,水平拆分和垂直拆分有
    较大区别,垂直拆分拆完的结果,每一个实例都是拥有全部数据的,而水平拆分之后,任何实例都
    只有全量的1/n的数据。

select_type
表示查询的类型。常用的值如下:

  • SIMPLE : 表示查询语句不包含子查询或union
  • PRIMARY:表示此查询是最外层的查询
  • UNION:表示此查询是UNION的第二个或后续的查询
  • EXPLAIN SELECT * from user WHERE id < 3;
  • DEPENDENT UNION:UNION中的第二个或后续的查询语句,使用了外面查询结果
  • UNION RESULT:UNION的结果
  • SUBQUERY:SELECT子查询语句
  • DEPENDENT SUBQUERY:SELECT子查询语句依赖外层查询的结果。

type
表示存储引擎查询数据时采用的方式。比较重要的一个属性,通过它可以判断出查询是全表扫描还是基于索引的部分扫描。常用属性值如下,从上至下效率依次增强。

  • ALL:表示全表扫描,性能最差。
  • index:表示基于索引的全表扫描,先扫描索引再扫描全表数据。
  • range:表示使用索引范围查询。使用>、>=、<、<=、in等等。
  • ref:表示使用非唯一索引进行单值查询。
  • eq_ref:一般情况下出现在多表join查询,表示前面表的每一个记录,都只能匹配后面表的一行结果。
  • const:表示使用主键或唯一索引做等值查询,常量查询。
  • NULL:表示不用访问表,速度最快。

Extra
Extra表示很多额外的信息,各种操作会在Extra提示相关信息,常见几种如下:

  • Using where
    表示查询需要通过索引回表查询数据。
  • Using index
    表示查询需要通过索引,索引就可以满足所需数据。
  • Using filesort
    表示查询出来的结果需要额外排序,数据量小在内存,大的话在磁盘,因此有Using filesort建议优化。
  • Using temprorary
    查询使用到了临时表,一般出现于去重、分组等操作。

事务并发处理可能会带来一些问题,比如:更新丢失、脏读、不可重复读、幻读等。

  • 更新丢失
    当两个或多个事务更新同一行记录,会产生更新丢失现象。可以分为回滚覆盖和提交覆盖。
    回滚覆盖:一个事务回滚操作,把其他事务已提交的数据给覆盖了。
    提交覆盖:一个事务提交操作,把其他事务已提交的数据给覆盖了。
  • 脏读
    一个事务读取到了另一个事务修改但未提交的数据。
  • 不可重复读
    一个事务中多次读取同一行记录不一致,后面读取的跟前面读取的不一致。
  • 幻读
    一个事务中多次按相同条件查询,结果不一致。后续查询的结果和面前查询结果不同,多了或少了几行记录。

4种隔离级别:
读未提交 -> 读已提交 -> 可重复读 -> 串行化

MVCC:
多版本控制MVCC,也就是Copy on Write的思想。在事务1开始写操作的时候会copy一个记录的副本,其他事务读操作会读取这个记录副本,因此不会影响其他事务对此记录的读取,实现写和读并行。目前MVCC只在 Read Commited 和 Repeatable Read 两种隔离级别下工作。

查看死锁日志:
通过show engine innodb status\G;命令查看近期死锁日志信息。
使用方法:1、查看近期死锁日志信息;2、使用explain查看下SQL执行计划

数据库架构

半同步复制---解决数据丢失的问题(ACK)
并行复制----解决从库复制延迟的问题(并行)

MMM和MHA解决主从切换的问题,保证系统的可用性。

水平拆分:解决表中记录过多问题。
垂直拆分:解决表过多或者是表字段过多问题。

mysql上作业参考链接:
https://blog.csdn.net/chuanchengdabing/article/details/108501699

——————————————————手动分割线———————————-——————————

相关文章

  • 12-mysql

    难点:表空间 redo/undo 半同步复制 高可用 MySQL架构原理和存储机制MySQL体系结构(内存结构...

  • 12-MySQL锁机制

    一、定义 锁是计算机协调多个进程或线程并发访问某一资源的机制在数据库中,除传统的计算资源(如CPU、RAM、I/O...

  • 12-MySQL索引和外键

    索引 什么是索引?索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,...

网友评论

      本文标题:12-mysql

      本文链接:https://www.haomeiwen.com/subject/ieskultx.html