zoukankan      html  css  js  c++  java
  • MySQL体系架构

    MySQL体系架构

    学习一门数据库系统首先得了解它的架构,明白它的架构原理对于后期的分析问题和性能调优都有很大的帮助,接下来就通过分析架构图来认识它。

    数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件可以是frm、myd、myi、ibd等结尾的文件,当使用NDB存储引擎时候,不是os文件,是存放于内存中的文件。

    数据库实例:由数据库后台进程/线程以及一个共享内存区组成,共享内存可以被运行的后台进程/线程所共享。

    连接者:不同语言的代码程序和mysql的交互(SQL交互)

    1、连接池 管理、缓冲用户的连接,线程处理等需要缓存的需求

       为解决资源的频繁分配﹑释放所造成的问题,为数据库连接建立一个“缓冲池”,预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。

       进行身份验证、线程重用,连接限制,检查内存,数据缓存;管理用户的连接,线程处理等需要缓存的需求

    2、管理服务和工具组件 系统管理和控制工具

       从备份和恢复的安全性、复制、集群、管理、配置、迁移和元数据等方面管理数据库

    3、sql接口 接受用户的SQL命令,并且返回用户需要查询的结果

       进行DML、DDL,存储过程、视图、触发器等操作和管理;用户SQL命令接口

    4、查询解析器 SQL命令传递到解析器的时候会被解析器验证和解析(权限、语法结构) 

       SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本, 主要功能: 
       a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的 
       b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的 

    5、查询优化器 SQL语句在查询之前会使用查询优化器对查询进行优化

       select id,name from user where age = 40; 
       a、这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行age过滤 
       b、这个select查询先根据id和name进行属性投影,而不是将属性全部取出以后再进行过滤 
       c、将这两个查询条件联接起来生成最终查询结果

    6、缓存 如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据

        由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

    7、插入式存储引擎 存储引擎说白了就是如何管理操作数据(存储数据、如何更新、查询数据等)的一种方法。因为在关系数据库 中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)

    说明: 

    在Oracle 和SQL Server等数据库中,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。

    甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。

  • 相关阅读:
    企业如何推行白盒测试
    Java命名规范
    MobileVLC for iphoneos4.3
    用Android NDK编译FFmpeg
    Linux 下Android 开发环境搭建 ---CentOS
    为什么要做白盒测试
    vlc的第三方库contrib的修改之一:live库的修改
    VC命名规范
    POJ 1470 Closest Common Ancestors (LCA入门题)
    HDU 4407 Sum 第37届ACM/ICPC 金华赛区 第1008题 (容斥原理)
  • 原文地址:https://www.cnblogs.com/jkin/p/10278284.html
Copyright © 2011-2022 走看看