MySQL架构理解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL架构理解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2154字,纯文字阅读大概需要4分钟。
内容图文
1.MySQL的分层
MySQL分为2层:Server层和存储引擎。
2.Server层
-
连接器:管理连接权限验证。
-
查询缓存:命中缓存直接返回查询结果。
-
分析器:分析语法。
-
优化器:生成执行计划,选择索引。
-
执行器:操作索引返回结果。
3.存储引擎
-
存储引擎负责数据的存储和提取,其架构是插件式的。InnoDB在MySQL5.5版本开始成为其默认存储引擎。
-
MySQL常用的存储引擎有三种:InnoDB、MyISAM、Memory。
-
InnoDB:支持事务,支持外键,是聚集索引,数据文件和索引是绑在一起的。必须要有主键,通过主键索引效率最高。但是辅助索引需要两次查询,先查询到主键,然后通过主键查询到数据,不支持全文索引。
-
MyISAM: 不支持事务,不支持外键,是非聚集索引,数据文件和索引是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的,查询效率上MyISAM要高于InnoDB,因此做读写分离的时候一般选择InnoDB做主库,MyISAM做从库。
-
Memory:文件数据保存在缓存中,有比较大的缺陷。如果Mysqld进程发生异常,重启或关机这些数据都会丢失。
-
4.SQL的执行过程
-
第一步:客户端连接上MySQL的数据库连接器,连接器获取权限维持链接,如果长时间没有使用会断开,这个时间由wait_timeout控制。
-
第二步:客户端往数据库发送sql语句,此时会检测查询缓存检查之前是否执行过这个sql,如果执行则直接返回缓存数据到客户端,当然只要更新缓存就会失效。因此更新频繁的表不建议使用查询缓存,查询缓存可以通过SQL_CACHE指定。
-
第三步:当查询未命中缓存,分析器则开始工作,分析器会判断sql语句的类型:select、insert、update,分析语法是否正确。
-
第四步:优化器将根据表的索引和sql语句决定使用什么索引和join的顺序。
-
第五步:执行器执行sql,调用存储引擎的接口,扫描遍历表或者插入更新数据。
5.MySQL日志
-
MySQL有两个重要的日志:redolog和binlog。redolog属于innodb的日志,binlog则是属于sever层的日志。
-
redolog日志:
-
redolog又称为重做日志,用于记录事务操作的变化,记录修改之前和修改之后的值,无论事务是否提交都会记录下来。
-
数据库重启恢复时会用到redolog保证数据的完整性,redolog是固定大小的,因此后面的日志会覆盖前面的日志。
-
-
binlog日志:
-
binlog又称为归档日志,它记录了数据库的所有更改操作。
-
binlog是追加形式记录日志,后面的日志不会覆盖前面的日志。
-
-
数据库更新过程
-
更新的过程:读取对应的数据到内存 --> 更新数据 --> 写入redolog日志 --> redolog状态为prepare --> 写入binlog日志 --> 提交事务 --> redolog状态为commit ,数据正式写入日志文件。
-
reolog的提交方式是“两段式提交”。
-
-
注:主要内容来自公众号《江南一点雨》
内容总结
以上是互联网集市为您收集整理的MySQL架构理解全部内容,希望文章能够帮你解决MySQL架构理解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。