首页 / MYSQL / 关系型数据库——MySQL
关系型数据库——MySQL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关系型数据库——MySQL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2900字,纯文字阅读大概需要5分钟。
内容图文
![关系型数据库——MySQL](/upload/InfoBanner/zyjiaocheng/517/1dcfd92cd07646fa99523d372ce65eef.jpg)
【MySQL架构图】
MySQL简要架构图如下图所示,引擎层以插件方式集成了不同的存储引擎,它们共用Server层对外提供服务。
- 连接器:用于连接管理,进行身份认证及权限相关的管理。(登录MySQL)
- 查询缓存区:执行查询语句时,先从缓存区查询。(该功能V8.0之后移除)
- 分析器:未命中缓存时,对SQL进行词法分析、语法分析。
- 优化器:按照MySQL认为的最优方案,生成执行计划。
- 执行器:执行SQL,并从存储引擎返回数据。
- 存储引擎:存储数据,提供读写接口
【MySQL存储引擎】
V5.5之前MySQL的默认存储引擎为MyISAM(ISAM:Indexed Sequential Access Method,即有索引的顺序访问方法。MyISAM是基于传统的ISAM优化而来)
V5.5之后,MySQL的默认存储引擎便更改为InnoDB,主要是为支持数据库事务安全而设计。
# MyISAM vs InnoDB
- 锁:MyISAM支持表级锁;InnoDB支持行级锁(默认)。因此并发操作时,InnoDB的效率要更高。
- 性能:MyISAM执行大量select和insert操作时,效率更高;InnoDB执行大量update和insert操作时,效率更高。
- 外键:MyISAM不支持;InnoDB支持外键。
- 事务:MyISAM不支持事务操作;InnoDB支持数据库事务。
- 崩溃后安全恢复:MyISAM不支持;InnoDB支持。
- MVCC:MVCC:Multi-Version Concurrency Control,基于多版本的并发控制协议。作用于
READ COMMITTED
和REPEATABLE READ
两个隔离级别下,是一种乐观锁,相对基于锁的并发控制更加高效。最基本的原则是:读不加锁,读写不冲突。仅InnoDB支持。
【MySQL索引】
MySQL索引使用的数据结构主要有BTree索引 和 哈希索引 。查询结果为单条时,哈希索引性能更好;其余场景BTree索引更优。
InnoDB存储引擎下,数据文件和索引文件是一体的。表数据文件本身就是按B+Tree组织的一个索引结构,树的叶节点data域保存了完整的数据记录。
【MySQL日志模块】
MySQL的Server层自带有归档日志模块 binlog,每当MySQL执行更新操作时(insert、delete、update),SQL执行记录会记录到该日志中。该日志模块为所有存储引擎所共享。
引擎层中的InnoDB存储引擎还独有一个重做日志模块 redo log,也会用来记录SQL执行更新的操作。该模块可以保证MySQL崩溃后安全恢复,也是InnoDB可以支持事务操作的重要模块。
使用InnoDB执行更新操作的流程:
分析器 —— 权限验证 —— 执行器 —— 存储引擎 ——记录redo log(prepare状态) —— 记录bin log —— 记录redo log(commit状态)
【MySQL部署模式】
- 单点模式。常用的部署模式,但无法实现容灾。
- 主从模式。一主多从,读写分离。解决单点负载瓶颈。主节点宕机,需将从节点切换为主节点来保证服务可用。
- 主从模式下数据同步过程:
- 主节点负责写,并将更改操作记录到归档日志bin log中;
- 从节点的IO线程将主的binlog事件(sql语句) 同步本机上并记录在中继日志relay log里;
- 从节点的SQL线程按照relay log中记录顺序执行SQL,使得主从数据同步。
- 主从模式下数据同步过程:
- 集群模式。各节点均可对外提供读写服务,一个节点写的操作会同步到其他所有节点以满足数据一致性。但任意节点宕机不影响集群服务。
参考文献:(文章仅做交流学习,侵权即删!!)
1、https://github.com/Snailclimb/JavaGuide
2、https://blog.csdn.net/AGambler/article/details/84672849
关系型数据库——MySQL
标签:词法分析 节点 命中 redo log inno 身份认证 高效 图片 nod
本文系统来源:https://www.cnblogs.com/vikezhu/p/12008788.html
内容总结
以上是互联网集市为您收集整理的关系型数据库——MySQL全部内容,希望文章能够帮你解决关系型数据库——MySQL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。