一:背景
1. 讲故事
最近看各大技术社区,不管是知乎,掘金,博客园,csdn基本上看不到有小伙伴分享sqlserver类的文章,看样子这些年sqlserver没落了,已经后继无人了,再写sqlserver是不可能再写了,这辈子都不会写了,只能靠技术输出mysql维持生活这样子。
二:了解架构图
mysql最大的好处就是开源, 手握百万源码,有什么问题搞不定呢? 这一点要比sqlserver爽多了,不用再dbcc捣来捣去。
1. 从架构图入手
大家都知道做/装修房子都要有一张图纸,其实软件也是一样,只要有了这么一张图纸,大方向就定下来了,再深入到细节也不会乱了方向,然后给大家看一下我自己画的架构图,画的不对请轻拍。
其实SqlServer,Oracle,MySql架构都大同小异,MySql的鲜明特点就是存储引擎做成了插拔式,这就牛逼了,现行最常用的是InnoDB,这就让我有了一个想法,有一套业务准备用 InMemory 模式跑一下,厉害了~~~
2. 功能点介绍
MySql其实就两大块,一块是MySql Server层,一块就是Storage Engines层。
<1> Client
不同语言的sdk遵守mysql协议就可以与mysqld进行互通。
<2> Connection/Thread Pool
MySql使用C++编写,Connection是非常宝贵的,在初始化的时候维护一个池。
<3> SqlInterface,Parse,Optimizer,Cache
对sql处理,解析,优化,缓存等处理和过滤模块,了解了解即可。
<4> Storage Engines
负责存储的模块,官方,第三方,甚至是你自己都可以自定义实现这个数据存储,这就把生态做起来了,