MySql优化之体系结构及存储引擎(总结分享)


本篇文章给大家带来了关于mysql体系结构以及储存引擎总结的相关知识,希望对大家有帮助。

MySql优化之体系结构及存储引擎(总结分享)

一、MySQL结构体系

总体上, 我们可以把 MySQL 分成三层,分层再详细一点的话可以将存储引擎层再分为引擎层和存储层:

 连接层
最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

服务层
第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等, 最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。

引擎层
存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。

存储层
数据存储层, 主要是将数据存储在文件系统之上,并完成与存储引擎的交互。和其他数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎上,插件式的存储引擎架构,将查询处理和其他的系统任务以及数据的存储提取分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。

二、MySQL Server组成部分

MySQL结构各层又由一个或数个部分构成:

连接层组成部分

Connectors:交互接口

MySQL向外提供的交互组件,如j*a,.net,php等语言可以通过该组件来操作SQL语句,实现与SQL的交互

服务层组成部分

Connection Pool : 连接池组件
用于管理、缓冲用户的连接,线程处理等需要缓存的需求

Management Services & Utilities : 管理服务和工具组件
用于系统管理和控制工具,例如备份恢复、Mysql复制、集群、安全管理等

SQL Interface : SQL接口组件
用于接受用户的SQL命令,如DML,DDL和存储过程等,并将最终结果返回给用户

Parser : 查询分析器组件
SQL命令传递到解析器的时候会被解析器验证和解析,首先分析SQL命令语法的合法性,并尝试将SQL命令分解成数据结构,若分解失败,则提示SQL语句不合理

Optimizer : 优化器组件
SQL语句在查询之前会使用查询优化器对查询进行优化。
如:select id,name from user where age = 20;

  1. 这个select 查询先根据 where 语句进行选取,而不是先将表全部查询出来以后再进行age过滤
  2. 这个select查询先根据id和name进行属性投影,而不是将属性全部取出以后再进行过滤
  3. 将这两个查询条件联接起来生成最终查询结果

Caches & Buffers : 缓冲池组件
如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

引擎层组成部分

Pluggable Storage Engines : 存储引擎
存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。对于表的创建,数据的存储,检索,更新等都是由MySQL存储引擎完成的,这也是MySQL存储引擎在MySQL中扮演的重要角色。

MYSQL提供了插件式的存储引擎架构,所以用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎,或者编写存储引擎。甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。

存储层组成部分

File System : 文件系统

用于实际存储MySQL 数据库文件和一些日志文件等的系统。常见的如Linux、Windows等。

三、存储引擎

常用的存储引擎区别

SONIFY.io SONIFY.io

设计和开发音频优先的产品和数据驱动的解决方案

SONIFY.io 83 查看详情 SONIFY.io

在 MySQL 5.5 版本之前, 默认的存储引擎是 MyISAM, 它是 MySQL 自带的。 5.5 版本之后默认的存储引擎改成了InnoDB, 它是第三方公司为MySQL开发的。为什么要改呢?

最主要的原因还是InnoDB支持事务, 支持行级别的锁, 对于业务一致性要求高的场景来说更适合。

不同存储引擎建表语句:

CREATE TABLE `user_innodb` (
  `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user_myisam` (
  `id` int(11) PRIMARY KEY  AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user_memory` (
  `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user_archive` (
  `id` int(11) PRIMARY KEY AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `gender` tinyint(1) DEFAULT NULL,
  `phone` varchar(11) DEFAULT NULL
) ENGINE=Archive DEFAULT CHARSET=utf8mb4;

CREATE TABLE `user_csv` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `gender` tinyint(1) NOT NULL,
  `phone` varchar(11) NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8mb4;

InnoDB
InnoDB存储引擎是如今MySQL的默认存储引擎。InnoDB存储引擎提供了具有提交、回滚、崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。

InnoDB存储引擎不同于其他存储引擎的特点 :

  1. 事务控制
  2. 外键约束

InnoDB 存储表和索引有以下两种方式 :

  1. 使用共享表空间存储, 这种方式创建的表的表结构保存在.frm文件中, 数据和索引保存在 innodb_data_home_dir 和 innodb_data_file_path定义的表空间中,可以是多个文件。
  2. 使用多表空间存储, 这种方式创建的表的表结构仍然存在 .frm文件中,但是每个表的数据和索引单独保存在 .ibd 中。

InnoDB 适合的使用环境:
InnoDB 是MySQL的默认存储引擎,用于事务处理应用程序,支持外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询意外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。

InnoDB存储引擎除了有效的降低由于删除和更新导致的锁定, 还可以确保事务的完整提交和回滚,对于类似于计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB是最合适的选择。

MyISAM
MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务的完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以使用这个引擎来创建表 。

有以下两个比较重要的特点:

  • 不支持事务
  • 文件存储方式

每个MyISAM在磁盘上存储成3个文件,其文件名都和表名相同,但拓展名分别是:

  • .frm (存储表定义);
  • .MYD(MYData ,存储数据);
  • .MYI(MYIndex , 存储索引);

MyISAM 适合的使用环境:
如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。

MEMORY
Memory存储引擎将表的数据存放在内存中。每个MEMORY表实际对应一个磁盘文件,格式是.frm ,该文件中只存储表的结构,而其数据文件,都是存储在内存中,这样有利于数据的快速处理,提高整个表的效率。

MEMORY类型的表访问非常地快,因为他的数据是存放在内存中的,并且默认使用HASH索引 , 但是服务一旦关闭,表中的数据就会丢失。

MEMORY 适合的使用环境:
将所有数据保存在RAM中,在需要快速定位记录和其他类似数据环境下,可以提供几块的访问。

MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,其次是要确保表的数据可以恢复,数据库异常终止后表中的数据是可以恢复的。MEMORY表通常用于更新不太频繁的小表,用以快速得到访问结果。

MERGE
MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,MERGE表本身并没有存储数据,对MERGE类型的表可以进行查询、更新、删除操作,这些操作实际上是对内部的MyISAM表进行的。

对于MERGE类型表的插入操作,是通过INSERT_METHOD子句定义插入的表,可以有3个不同的值,使用FIRST 或 LAST 值使得插入操作被相应地作用在第一或者最后一个表上,不定义这个子句或者定义为NO,表示不能对这个MERGE表执行插入操作。

可以对MERGE表进行DROP操作,但是这个操作只是删除MERGE表的定义,对内部的表是没有任何影响的。


MERGE 适合的使用环境:
用于将一系列等同的MyISAM表以逻辑方式组合在一起,并作为一个对象引用他们。

MERGE表的优点在于可以突破对单个MyISAM表的大小限制,并且通过将不同的表分布在多个磁盘上,可以有效的改善MERGE表的访问效率。这对于存储诸如数据仓储等VLDB环境十分合适。

推荐学习:mysql视频教程

以上就是MySql优化之体系结构及存储引擎(总结分享)的详细内容,更多请关注其它相关文章!


# 镜像  # 自己的  # 组成部分  # 可以根据  # mysql  # seo团队有哪些人  # 百度推广网站 电脑版  # 周口关键词优化快速排名  # 亳州推广网站建设  # seo必看书籍推荐  # seo推广新手入门优化  # 大兴区正规网站建设推广  # seo流量推广网站  # seo学徒招聘运营  # 软件推广营销排名第一的是  # 较高  # 是由  # 多个  # 子句  # 类似于  # 客户端 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: Keras中Convolution2D层及其核心辅助层详解  cad怎么隐藏指定的图层_cad隐藏或冻结图层方法  C++ bind函数使用教程_C++参数绑定与函数适配器的应用  动漫岛汉化官网网 动漫岛官方动漫汉化地址  《爱笔思画x》魔棒工具抠图教程  小红书网页版首页入口 小红书网页版电脑端官方登录链接  斯宾塞称XGP云游戏“蒸蒸日上”:正在构建一个游戏从未如此唾手可得的未来  暴风影音官网正式版_暴风影音手机版官网下载安卓  mysql归档数据怎么导出为csv_mysql归档数据导出为csv文件的方法  Sublime怎么格式化HTML代码_Sublime前端代码美化插件使用指南  漫蛙manwa官网浏览入口_漫蛙漫画网页版访问链接  J*aScript:从子元素中批量移除特定CSS类  研招网官方网站正版登录网址_中国研究生招生信息网官网首页  C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用  太平年在哪个平台播出  Golang如何使用gRPC拦截器实现日志收集_Golang gRPC拦截器日志收集实践  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  windows server2019显卡驱动怎么安装_winserver2019显卡驱动安装与远程桌面优化  Flask 应用中图片动态更新与上传:实现客户端定时刷新与服务器端文件管理  抖音如何进行蓝V认证 抖音企业号申请所需资料与流程  PSD转AI文件的简单方法  漫蛙manwa2网页版书签同步链接_漫蛙manwa多设备登录入口  macosmonterey系统外接显示器驱动怎么安装_macosmonterey外接显示器驱动与分辨率调整  三角洲行动2025年9月10日摩斯密码分享  《深林》冬季章节图文攻略  POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩  win11关机几秒又自己开机 Win11关机自动重启问题修复  《kimi智能助手》制作ppt教程  Lar*el怎么实现全文搜索_Lar*el Scout集成Algolia教程  iPhone 13 Pro Max如何设置桌面小组件_iPhone 13 Pro Max小组件添加指南  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  百度浏览器无法安装扩展程序_百度浏览器插件安装失败原因解析  谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程  汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口  如何使用 Optional 类型并满足 Pylint 的类型检查  《淘票票》添加到苹果钱包教程  firefox火狐浏览器最新官网主页_ firefox火狐浏览器平台入口直达官方链接  外媒评《燕云十六声》DIY载具新玩法:很像《塞尔达传说王国之泪》!  AI图层蒙版怎么用_AI图层蒙版应用技巧与设计实例  天天漫画2025最新入口 天天漫画永久有效登录入口  抖音号显示企业机构号是什么意思?企业机构号申请条件是什么?  使用Python和GBGB API高效抓取指定日期范围和赛道比赛结果教程  家里的小飞虫总是不断,用什么方法可以彻底根除?  Microsoft Edge网页字体太淡看不清怎么办_Microsoft Edge字体渲染优化技巧  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  NumPy 高性能技巧:基于多列条件查找最近邻行索引的向量化实现  抖音视频如何添加标题?添加标题有哪些好处?  PHP使用DOMDocument与XPath精准追加XML元素教程  Final Cut Pro视频加EQ教程  店铺如何关联视频号推广?视频号推广有什么用? 

 2021-12-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.