mysql基本结构

    最近在看林晓斌老师的《mysql实战45讲》,由于每次看完我都不积累,导致我过了几天总会忘记之前看过的,所以现在将看过的整理一下,为了保证我下次回顾更轻松快一点,我决定将mysql类比成一个大公司,而我就是作在mysql公司搬砖的小员工来介绍。

mysql的基本结构

  首先需要介绍一下mysql这个大家伙,他就是我们的大工厂,我们都是为他打工的,我先说一下我们这些存储数据的公司们分为磁盘类型和内存类型的,一般内存类型的公司效率更高一些,你使用了他们家的产品可以达到很快的效果,但是呢我们这种基于磁盘的并没有觉得他们比我们优秀的多,毕竟我们的目标客户不太一样,磁盘存储的数据库主要时间是寻址和带宽,一般寻址是ms级别,带宽一般是G/M,而内存数据库的寻址ns级别的,一听我们就差好几千万的数量级,但是要考虑一些成本问题,一个内存64g的服务器大约7、8万,而买一个的固态ssd硬盘才几千块,其次我们能装呀,就像兰博基尼和五菱荣光一样,兰博基尼是加速度快,但是他就能做一个人,我们五菱荣光加速度慢但是装的人多呀。而且我们为了让我们更快一些,我们做了不断努力,我们引用了IO buffer,这个我们等会再聊,磁盘与磁道扇区,一扇区512字节,而我们读数据就是分一块一块的page data,操作系统无论读多少,都是4k从磁盘拿,毕竟按照顺序读取数据,总比随机找要快很多吧。

 mysql的基本结构图,嘿嘿懒得自己画了,从林老师的文章中直接拷贝下来

  

连接器

连接器这个东西吧,他就是我们mysql公司门口的安检人员,经过tcp连接到数据库上,输入mysql -uroot -p,发起命令我要进入mysql工厂这个指令,然后需要进行安检,看看你输入的这个账号信息是否存在、用户名密码是否正确,如果发现校验失败,直接返回 Access denied for user 'root'@'localhost' (using password: YES)、看看你的权限是什么。

分析器

进入到公司里面了,由于我们分了好多个园区,你得选择你要去的园区,就是use database,进入到你进去的园区就要去对应的部门找想见的人,例如select * from t where id = 1;而我们的分析器就是我们园区的招待人员,他会分析你们的查找命令是否满足我们的规范,如果不满足规范,我们会直接指出要按照我们的定义规范去查, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near,如果校验成功,他会把select关键词识别出来,了解你这次目的,t识别出来,知道要去哪个部门,id识别出来,知道你要操作的人。

优化器

由于我们的公司人实在是太多了,找起来太难了,那么就需要判断怎么能让你操作更快一些呢,判断这个记录有没有建立索引,有索引的话走哪个索引等

执行器

就是我们真正帮你做事的人了,首先他要确认你有没有操作这个表的权限 ,如果有权限则进行调用存储引擎接口拿到结果,例如select * from t where id = 1,如果id不是索引则取这个表第一个记录判断id是否为1,如果不满足跳过,满足加入结果集,依次类推直到遍历结束返回给客户端,如果id是索引直接去索引树找到对应的id集合,分别拿着id找到对应记录加入结果集返回客户端

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值