`
elliotann
  • 浏览: 13024 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

mysql深入理解(一)逻辑架构

阅读更多

1、概述

    我们对某技术的学习,目的很简单,一是为了学习技术的使用;二是进行思想的学习。学习技术时,先理解思想,对于技术的掌握是大有益处的,一般理解技术思想的途径,从他的架构设计和源码是最直接的。

    mysql是一个开源的关系型数据库产品, 采用处理与存储分离的设计,灵活性高,这些年已成为互联网应用上常用的关系型数据库。互联网系统特点是高并发,大数据量,一般瓶颈最终还是会落到数据库,所以优化mysql是必不可少的。想对mysql理解,我们先理解它架构设计思想。

安装mysql后主要有下面几个组件:

mysql服务器:

    • 也称为mysqld;

    • 管理内存和碰盘上实际的数据库访问;

    • 多线程的;

    • 支持多客户端连接;

    • 支持多种存储引擎;

    • 单机上可以安装多个实例。

 

客户端程序:

    bin目录下实用的程序

非客户端面程序:

    独立于服务器的客户端程序

2、mysql逻辑结构

    mysql采用分层架构,并分成了多个子系统,每个子系统都有相互独立又互相协助,共同完成数据库服务器功能。下图为mysql逻辑架构图

公共服务层:

    为整个系统提供基础、公用的服务;

服务层:

    分为有API,Query Parsing,Optimization,Execution,Query Cache等子系统。

    API:用于接收SQL命令,如我们通过客户端直接select * from table;

    Query Parsing:解释查询,对传入的SQL语句进行解释、验证,并生成SQL_ID与SQL语句关联;

    Optimization:对Query Parsing传入的SQL,根据不同的存储引擎生成优化后的执行计划,并重写查询。

    Execution:执行根据Query Parsing和Optimization处理过的数据。

    Query Cache:基于内存的缓存,根据SQL_ID.SELECT来判断是否已经处理过相同的查询语句,如果处理过,直接从Query Cache中返回结果集,加快读速度。

存储引擎层:

    Mysql中特性之一,用于进行数据处理和文件管理,采用的是处理与存储分离,可以根据应用需要进行相应灵活的选择。mysql中存储引擎有事务型和非事务型的,我们可以通过命令show engines来查看当前mysql数据库版本支持的存储引擎。

当前用的是MYSQL5.6.

InnoDB,默认的存储引擎,支持事务,采用行锁;

MyISAM:读数据很快,不支持事务,采用表锁机制;

MEMORY:基于内存的数据库,不支持事务,采用表锁.

其它的数据引擎用的很少,暂时不介绍,但图中有一种存储引擎是没有显示出来的,即NDB,我们暂时可以把它当做是InnoDB的集群版本。

 

 

来,坐来下

品位这一杯茶

让我们一起并肩成长

成长会让我们看的更远

走的更长

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics