大致分析完了mysql整体架构
明确了mysql架构,其实也就是如下过程
主要执行过程
从架构上来看,Mysql服务器对于一条SQL语句的执行过程可以分成如下几部分:
以下部分来自网上转帖,偷个懒,呵呵
接受命令 包括用户验证,资源申请等
|
命令解析 解析SQL语句,生成语法树
|
寻找执行计划 根据解析出来的语法树,找到可能的执行计划。对于一条SQL语句,很可能会有多种执行方案,特别是在SQL语句比较复杂的时候。这里需要对于各种可能的方案进行代价评估,最快的找到最有的执行方案。
|
优化执行计划 优化执行计划。这是SQL执行中最复杂的部分之一,据说全都是由数学博士们写出来的,而且比较难懂。我目前还处于不懂的状态。
|
执行 没啥可说的,只剩执行及返回结果了
mysql属于网络应用程序,整体网络应用程序基本上都是这个套路
与我之前分析的tomcat,memcached其实都一样
基于socket的连接程序
问题是对于mysql的实际应用,这还远远不够,就如我对tomcat和memcached以及tcp ip源码分析的一样,要实际应用,指导调优之类的实际应用还必须分析mysql索引的处理过程
留待以后研究完再写处理
明确了mysql架构,其实也就是如下过程
主要执行过程
从架构上来看,Mysql服务器对于一条SQL语句的执行过程可以分成如下几部分:
以下部分来自网上转帖,偷个懒,呵呵
接受命令 包括用户验证,资源申请等
|
命令解析 解析SQL语句,生成语法树
|
寻找执行计划 根据解析出来的语法树,找到可能的执行计划。对于一条SQL语句,很可能会有多种执行方案,特别是在SQL语句比较复杂的时候。这里需要对于各种可能的方案进行代价评估,最快的找到最有的执行方案。
|
优化执行计划 优化执行计划。这是SQL执行中最复杂的部分之一,据说全都是由数学博士们写出来的,而且比较难懂。我目前还处于不懂的状态。
|
执行 没啥可说的,只剩执行及返回结果了
mysql属于网络应用程序,整体网络应用程序基本上都是这个套路
与我之前分析的tomcat,memcached其实都一样
基于socket的连接程序
问题是对于mysql的实际应用,这还远远不够,就如我对tomcat和memcached以及tcp ip源码分析的一样,要实际应用,指导调优之类的实际应用还必须分析mysql索引的处理过程
留待以后研究完再写处理