01 | 基础架构:一条SQL查询语句是如何执行的?

2019-07-09 15:42:31

本文的总结源于林晓斌在极客时间里面的课程,为避免产生商业问题,我只是用于个人学习总结。
原文地址:https://time.geekbang.org/column/article/68319

思维导图

yi-tiao-sqlcha-xun-yu-ju-shi-ru-he-zhi-xing-de

问题总结

  1. MySQL的框架有几个组件,各有什么作用?
  2. Server层和存储引擎层各有什么作用?
  3. you have an error in your SQL syntax这个是在词法分析还是在语法分析里面报的错?
  4. 对于表的操作权限验证是在哪里进行?
  5. 执行器的执行查询语句的流程是什么样的?
【转】深度解密Go语言之context

最近在公众号【码农桃花源】读到微信一篇关于context的文章,很不错,推荐给大家。原文地址:https://mp.weixin.qq.com/s/GpVy1eB5Cz_t-dhVC6BJNw Go 语言的 context 包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获! 贴上文章的目录: 什么是context Go 1.7 标准库引入 context,中文译作“上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环境、现场等信息。 context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、超时时间、

02 | 日志系统:一条SQL更新语句是如何执行的?

本文的总结源于林晓斌在极客时间里面的课程,为避免产生商业问题,我只是用于个人学习总结。 原文地址:https://time.geekbang.org/column/article/68633 本篇重点 一条SQL语句的执行步骤 update T set c=c+1 where ID=2; 执行流程图 小结 redo是物理的,binlog是逻辑的;现在由于redo是属于InnoDB引擎,所以必须要有binlog,因为你可以使用别的引擎 保证数据库的一致性,必须要保证2份日志一致,使用的2阶段式提交;其实感觉像事务,不是成功就是失败,不能让中间环节出现,也就是一个成功,一个失败 如果有一天mysql只有InnoDB引擎了,有redo来实现复制,那么感觉oracle的DG就诞生了,物理的速度也将远超逻辑的,毕竟只记录了改动向量 binlog几大模式,一般采用row,因为遇到时间,从库可能会出现不一致的情况,但是row更新前后都有,会导致日志变大 最后2个参数,保证事务成功,