IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mysql性能优化-架构介绍(1) -> 正文阅读

[大数据]Mysql性能优化-架构介绍(1)

Mysql架构介绍

Mysql 储存引擎

Mysql数据库以及其分支最重要的储存引擎有 Innodb, MyISAM, Memory 简单说 存储引擎就是表的存储类型和表的存储方式

存储引擎是概念是Mysql的特色, 是一个可插拔式的引擎架构.

我们可以通过SHOW ENGINES 语句查看

show engines

列名备注
engines存储引擎名称
SupportYES表示当前版本支持的储存引擎,DEFAULT表示默认使用
Comment备注介绍
Transactions是否支持事务
XA
Savepoints

我们主要关注 InnoDB, MyISAM, Memory 三个储存引擎

Innodb

  1. InnoDB是事务型数据库首选存储引擎, 支持ACID, 简单说就是支持事务完整性一致性
  2. InnoDB支持行级锁.行级锁可以在最大程度上支持并发,以及类似Oracle的一致性读,多用户并发
  3. InnoDB是为处理巨大数据的最大性能设计,InnoDB存储引擎完全与Mysql服务整合,InnoDB储存引擎为了在主内存中缓存数据和索引而维持他自己的缓存池
  4. InnoDB支持外键约束,存储表中的数据时,每张表的存储都按照主键顺序存放,如果没有显示定义主键,InnoDB会为表生成一个ROWID,并以此作为主键
  5. InnoDB支持崩溃数据恢复, InnoDB存储引擎中就是依靠redo log来保证的, 当数据库异常崩溃, 再次重启后会根据redo log进行数据恢复,来保证恢复到奔溃前状态

MyISAM

  1. MyISAM不支持事务,所以对事务有要求的场景不能使用
  2. 其锁定机制是表级锁,虽然让锁定的实现成本变小了, 但是大大降低的并发性能
  3. 不仅再写入的时候堵塞其他的读, 也会在读的时候堵塞其他的写, 单读本身不会堵塞其他的读
  4. 只会缓存索引,MyISAM可以通过KEY_BUFFER缓存, 以大大提高访问性能减少磁盘IO,但是这个缓冲区只会缓存索引不会缓存数据
  5. 适用不需要事务支持**(不支持),并发相对较低(锁问题),数据修改相对较少(堵塞问题)**,已读为主的场景

Memory

Memory 是一个特殊的存储引擎, 使用存储在内存中的内容创建表, 而且表的数据也在内存中

  1. 每个Memory存储引擎的表实际对应一个磁盘文件,该文件名与表名一直, 类型为frm, 该文件存储表的结构,数据则在内存中
  2. Memory默认使用哈希索引, 如果想使用B型索引, 需要再创建索引的时候指定
  3. Memory存储引擎因为数据在内存中, 如果内存出现异常重启或者关机数据就会丢失

Mysql逻辑架构

Mysql逻辑架构主要分为三层

  1. 第一层客户端层
    1. 所包含的并不是Mysql独有的技术,他们是服务于c/s程序, 或者是这些程序需要的, 诸如连接处理, 身份认证, 安全性等功能均在这一层处理
  2. 第二层SQL层(SQL Layer)
    1. 因为这是Mysql的核心部分,通常叫做核心服务层, 在Mysql数据库处理底层数据之前的所有工作都在这一层完成包括,权限判断,SQL解析,执行计划优化,Query cache的处理以及所有内置函数,存储过程,视图,触发器等等
  3. 第三层存储引擎层
    1. 是底层数据存取操作的实现,由多种存储引擎组成,他们负责存储和读取所有在Mysql的数据,每个存储引擎都有自己的优势和劣势, 通过存储引擎API来与他们交互,这些API隐藏了各个引擎不同的地方,对于查询出可以透明

SQL执行流程

这一块我认为是这样的, 有不正确的地方希望大家可以指出 学习进步

架构图

Connection Pool(连接池)

是为了解决资源的频繁分配, 释放所造成的问题而为数据库建立的一个缓存池. 原理是预先在缓存池中放入一定数量的链接, 当需要建立连接时从缓存池中那出一个, 使用完毕再放回去,

它的作用是进行身份验证,线程重用,连接限制,管理用户链接,线程处理等需要缓存的需求

SQL Interface(SQL接口)

接受用户的SQL命令.并且返回用户需要查询的结果,比如SELCT FROM就是调用SQL interface

parser(解析器)

解析器.验证和解析SQL命令,这个过程主要对语法规则进行解析和验证. 并生成一颗对应的解析树, 比如SQL中是否使用了错误的关键字或者关键字的顺序是否错误了

Optimizer(优化器)

SQL语句在查询之前,会使用查询优化器对插叙进行优化,得出一个最优策略,多数情况下一条查询有多种执行方式, 最后返回相同结果, 优化器的作用就是找出最好的执行计划

Cache & Buffer(查询缓存)

将查询结果缓存到内存中,与该查询语句的Hash值进行对应,当查询结果的基表发生任何变化,Mysql都将缓存进行失效,如果查询缓存命中了查询结果就可以直接去查询缓存中取结果,**这个查询缓存是由一系列小缓存组成比如表缓存,记录缓存,Key缓存,权限缓存**等

Pluggable Storage Engines(可插拔存储引擎)

Mysql中区别于其他数据库的最重要的特点就是 插件式的储存引擎接口模块,这个可以说是Mysql最有特色的一个特点, 这个模块实际上是一个抽象类, 根据Mysql AB公司提供的文件访问层的一个抽象接口来定制一中文件访问机制,这种访问机制就被成为储存引擎

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-12 13:14:07  更:2021-09-12 13:16:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:21:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码