难点:
表空间 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
——————————————————手动分割线———————————-——————————
网友评论