mysql一条Session执行过程
2021-11-29 14:20:39 0 举报
mysql一条Session执行过程 从连接池--->查询缓存
作者其他创作
大纲/内容
5、获取结果集或者结果反馈
Mysql如何断开链接?Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该 connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有 Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。
JDBC又一个连接池处理mysql的语句(一般maxActive可设置为100),每次运行完mysql都要释放资源,给下个用户使用mysql本身有连接池,可以设置最大连结数。show variables like 'max_connections';(查可以看当前的最大连接数)----可设置为1000。set global max_connections=1000;
JAVA连接、使用Mysql过程
作用:避免二次解析,缓存语句和最优执行计划所有在MYSQL数据库中执行过的SQL语句,都会把相关的语句本身和执行计划保存到查询缓存中。避免下次相同语句在执行的时候发生二次解析。语句相同、缓存存在,就可以直接拿出过去的执行计划进行执行了。
1、加载驱动
6、关闭JDBC对象(关闭数据库)
Mysql连接池
查询优化器:选取最优方案
活动:活动的连接池指的是客户端可以调整的连接总数
3、创建一个Statement
SQL接口:1、提取关键字2、判断热redo日志是否生成3、判断语法正确;4、到查询缓存中查询语句是否执行过
作用:进行sql语法解析1、提取关键字(Select、From等) --->判断这条SQL语句是否需要触发edo日志并跟踪(在INNODB中产生事务的语句都要记录redo日志),并判断SQL语法是否正确。4到查询缓存中查询语句是否执行过
查询缓存:避免二次解析
查询解析器:1、查看权限。2、生成执行计划
作用:查找最优执行计划1、一般使用基于开销的优化器(CBO),逐条进行与执行和开销对比,选出最优方案补充:Where 条件越多,优化器产生执行计划越多,筛选起来越费劲
2、连接数据库
4、sql在数据库执行
不活动:系统内部产生并占用的空间。作用是配置一部分空间禁止外部连接。
作用:进行sql语义解析1、检查数据操作权限:根据上一步解析最后剩下的数据对象,查看是否有权限进行操作。权限检查步骤:数据库-->表--->列--->列对象(索引,视图)2、解析相关执行计划->根据权限后的结果、开始进行相关的解析执行计划生成。(利用算法直方图进行解析)
0 条评论
回复 删除
下一页