mySQL数据库结构图
利于我们理解的图:
交互过程大致可以分为以下几步:
a、初始化模块读配置文件,完成整个Mysql数据的初始化
b、连接管理器启动待命,监听用户请求;
当有用户连接进来的时候,调用线程管理器;
c、线程管理器判断有没有空闲的进程来处理客户请求,有处理;没有让用户等待,如果连等待都做不到,报错;
d、对用户请求进行权限判断(会话级别);
e、判断命令类型,
select ,看缓存有数据,直接把数据返回给客户端,缓存没有数据,生成执行计划,把数据读出来放到缓存,最后给用户;
其他语句(update,delete),先看内存中有没有数据:如果有:写日志,生成执行计划,完成数据的操作;如果没有:生成读的执行计划,把数据读到内存里面(隐含),写日志,生成执行计划,完成数据的操作
(insert语句)先看内存中有没有数据,有;判断目的数据能否插入,不能插入,给客户端提示; 没有:判断目的数据能否插入,能插入,写日志,生成执行计划,完成数据的操作
f、通过访问控制模块和存储引擎获取相应的数据