首页 > 数据库技术 > 详细

MySQL体系结构

时间:2015-11-17 09:29:09      阅读:395      评论:0      收藏:0      [点我收藏+]

MySQL是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如Unix/Linux、Windows、Mac和Solaris。各种系统在底层实现方面各有不同,但是MySQL基本上能保证在各个平台上的物理体系结构的一致性。
技术分享

      MySQL由以下几部分组成:

  • 连接池组件
  • 管理服务和工具组件
  • SQL接口组件
  • 查询分析器组件
  • 优化器组件
  • 缓冲(Cache)组件
  • 插件式存储引擎
  • 物理文件
    MySQL区别于其他数据库的最重要的特点就是其插件式的存储引擎。MySQL插件式的存储引擎架构提供一系列标准的管理和服务支持。
  1、 Connection:不同语言与SQL的交互
技术分享
         max_connections 就是整个MySQL实例的最大连接数限制
         max_user_connections 是单个用户的最大连接数,这里未指明是哪个用户,是任意一个用户。
   2、Management Serveices &Utilities :系统管理和控制工具
        备份和恢复的安全性,复制,集群,管理,配置,迁移和元数据
   3、Connection Pool:连接池
        进行身份验证、线程重用,连接限制,检查内存,数据缓存;管理用户的连接,线程处理等需要缓存的需求。
   4、SQL Interface:SQL接口
        进行DML、DDL,存储过程、视图、触发器等操作和管理;用户通过SQL命令来查询所需结果。
   5、Parser:解析器
       查询翻译对象的特权;SQL命令传递到解析器的时候会被解析器验证和解析。
   6、Optimize:查询优化器
        访问路径的统计数据;
技术分享
          在MySQL优化语句过程中,可以通过设置optimize_switch控制优化行为。在生产环境上,某时间段mysql服务器压力特别大,load一度达到了100,查询发现数据 库中有大量的sql语句state 状态result sorting ,result sorting这种排序特别消耗cpu和内存资源。抽取其中的一条sql查看执行计划。
   7、Cache和Buffer:查询缓存      
        全局和引擎特定的缓存和缓冲区;
技术分享
 
  • have_query_cache 表示是否支持query cache;
  • query_cache_limit 表示query cache存放的单条query最大结果集,默认值为1M,结果集大小超过该值的query不会被cache;
  • query_cache_min_res_unit 表示query cache 每个结果集存放的最小内存大小,默认4k;
  • query_cache_size 表示系统中用于query cache的内存大小;
  • query_cache_type 系统是否打开了query cache功能;
  • query_cache_wlock_invalidate 针对myisam存储引擎,设置当有write lock在某个table上面的时候,读请求是要等待write lock释放资源之后再查询还是允许直接从query cache中读取结果,默认是OFF,可以直接从query cache中取得结果。

   8、Pluggable  Storage Engine:插件式存储引擎
技术分享
   MySQL5.6版本默认存储引擎为InnoDB,InnoDB支持事务,并且提供行级的锁定(行锁是通过索引来实现的如果没有索引,innodb还是会使用表锁)。
 
 
mysql体系结构有了大概了解,那么我们思考一下一个sql在mysql中是怎么执行的:
 
1.sql语句通过连接池中的连接传递至sql_interface
 
2、mysql查看query_cache中是否有此语句的缓存信息,如果有则直接读取缓存返回给用户,如果没有则进入解析器。
 
3、mysql解析器根据关键字对sql进行解析,并生成解析树,解析器将使用mysql的语法规则验证和解析查询。主要判断语法、关键字等是否正确。 
 
4、解析树传递至预处理器,进一步检查解析树是否合法,这里会验证表、字段是否存在,还会解析名字和别名看它们是否有歧义,下一步会验证权限。
 
5、解析树传递给查询优化器,优化器根据解析树生成执行计划,并找出最佳的执行计划发送给engine。(mysql优化器是基于成本的)
技术分享
该状态的值表示上次执行的语句需要的成本。越小越快。
 技术分享
 
6、按照执行计划调用engine的API接口获取数据。
 
7、将数据存储值query_cache并返回给用户。

MySQL体系结构

原文:http://www.cnblogs.com/hubo890224/p/4970666.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!