查询执行过程

执行查询过程概述

如图所示,客户端(Clients)发布查询的流程如下,首先连接MySql(connection Handing),然后发布查询,如果缓存(query cache)中有结果集,则直接返回结果集。如果缓存中没有,那么,MySql解析查询(Parser)将通过优化器(Optimizer)生成执行计划,然后运行执行计划通过API(Pluggable Storage Engine API)从存储引擎获取数据,并返回给客户端。

MySQL复制架构

假设有A,B,C三个MySQL实例,他们的复制模式如下:

  • 主从模式 A->B
  • 主主模式 A<-->B
  • 链式复制模式 A->B->C
    -环形复制模式 A->B->C->A
    生产中一般建议部署为主从模式,这也是最稳健的一种方式。
    为了方便切换,在一定程度上提高可用性,也可以选择主主模式。需要注意的是,主主模式必须保证任何时刻只有一个数据库是主动(Active)状态,也就是说同一时刻只能写入一个主(Master)节点,否则可能导致数据异常。
一些基础概念
  • 可扩展性
    可扩展性也称为伸缩性,指的是系统不断增长其承载能力的能力。它是能满足不断增长的负荷而自身性能仍然尚可的一种能力
  • 可用性
    可用性可以定义为系统保持正茬运行时间的百分比,比如一个系统一共运行了100分钟,有99分钟是正常运行的,那么可用性就是99%
  • 单点故障
    单点故障是指系统中的某个部分,一旦失败,将会导致整个系统无法工作。为了消除单点故障,一般需要增加冗余组件或冗余系统。比如冗余的服务器,备用的数据中心等。如果要设计高可用的服务,单点故障是需要尽量避免的。
  • 读写分离
    由于数据库只能接受有限的读请求。对于读请求较多的应用,数据库可能会成为瓶颈,为了增加读的能力,提高扩展性,因此引入了读写分离的技术。比如,利用复制技术配置多个从库,以承担更多的读请求,或者应用程序直接访问读库,或者通过一个负载均衡软件分发读请求。写入操作和一些读操作仍然访问主库。由于MySQL的复制是异步的,所以需要留意复制延时对读写分离的影响。

你可能感兴趣的:(查询执行过程)