首页 > 数据库 > MySQL > 正文

mysql体系结构和InnoDB存储引擎知识有什么

2024-07-24 12:33:51
字体:
来源:转载
供稿:网友
  Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
  
  空闲连接默认8小时会被断开,可以由wait_timeout参数配置。
 
  在数据库中,长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。
 
  由于建立连接比较耗资源,所以建议尽量使用长连接,但是使用长连接后,MySQL 占用内存涨得特别快,这是因为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以如果长连接累积下来,可能导致内存占用太大,被系统强行杀掉(OOM),从现象看就是 MySQL 异常重启了。
  
  处理过程如下:
 
  用户发送请求到 tomcat ,通过 tomcat 链接池和 mysql 连接池建立连接,然后通过连接发送 SQL 语句到 MySQL;
  MySQL 有一个单独的监听线程,读取到请求数据,得到连接中请求的SQL语句;
  将获取到的SQL数据发送给SQL接口去执行;
  SQL接口将SQL发送给SQL解析器进行解析;
  将解析好的SQL发送给查询优化器,找到最优的查询路劲,然后发给执行器;
  执行器根据优化后的执行方案调用存储引擎的接口按照一定的顺序和步骤进行执行。
  举个例子,比如执行器可能会先调用存储引擎的一个接口,去获取“users”表中的第一行数据,然后判断一下这个数据的 “id”字段的值是否等于我们期望的一个值,如果不是的话,那就继续调用存储引擎的接口,去获取“users”表的下一行数据。 就是基于上述的思路,执行器就会去根据我们的优化器生成的一套执行计划,然后不停的调用存储引擎的各种接口去完成SQL 语句的执行计划,大致就是不停的更新或者提取一些数据出来。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表