通过前面几篇文章学会怎样安装 MySQL 以及底子知识后,我们还必要学习体系布局,MySQL 和 Oracle 体系布局雷同,假如学过 Oracle 可以类比影象,底子牢固才气学好数据库,才气做一个及格的 DBA,下面一起来看看。
MySQL 体系布局可分为两层,MySQL Server 层和 存储引擎层,而 MySQL Server 层又分为毗连层和 SQL 层,毗连层包罗通讯协议、线程处置惩罚、用户名暗码认证,SQL 层包罗权限判定、查询缓存、剖析器、预处置惩罚器、查询优化器、缓存和实行筹划。存储引擎重要有InnoDB、MyISAM、Memory、blackhole、TokuDB 和 MariaDB columnstore 等。具体的功能信息请看下文。
MySQL 体系布局
1、Connectors
指的是差别语言的应用步伐接口(如JDBC、ODBC、Python等)与 MySQL 的毗连交互层;
2、Management Serveices &Utilities
体系管理和控制工具,比方备份规复、MySQL 复制、集群等;
3、Connection Pool
毗连池,管理缓冲用户毗连、用户名、暗码、权限校验、线程处置惩罚等必要缓存的信息; MySQL 服务器对每一个毗连产生一个线程,而这个线程独自为该毗连服务。因此,MySQL 服务器中的并行是指并行实行很多个查询而非一次查询内的并行。也由此缘故原由致使 MySQL 对多核支持不敷好,MySQL 服务器是一组线程的聚集。
4、SQL Interface
SQL 接口,担当用户的 SQL 下令,而且返回用户必要查询的效果。好比 DML 就是调用 SQL Interface;
5、Parser
剖析器,SQL 下令通报到剖析器的时间会被剖析器验证息争析。剖析器是由 Lex 和 YACC 实现的,是一个很长的脚本;
重要功能:
l 将 SQL 语句分解成数据布局,并将这个布局通报到后续步调,以后 SQL 语句的通报和处置惩罚就是基于这个布局的;
l 假如在分解构成中碰到错误,那么就阐明这个 SQL 语句是不公道的 ;
l Lex:Lexical Analyzer 是一种天生扫描器的工具。扫描器是一种辨认文本中的词汇模式的步伐;
l Yacc:Yet Another Compiler Compiler 是一种工具,将任何一种编程语言的全部语法翻译成针对此种语言的 Yacc 语法剖析器;
6、Optimizer
查询优化器,SQL 语句在查询之前会利用查询优化器对查询举行优化。他利用的是“选取-投影-联接”计谋举行查询;
优化 select uid,name from user where gender = 1;
SQL语句实行的过程如下:
l 这个 select 查询先根据 where 语句举行记载选取,而不是先将表全部记载查询出来以后再举行 gender 过滤;
l 这个 select 查询先根据 uid 和 name 举行属性投影(字段选择),而不是将属性全部取出以后再举行过滤;
l 将这两个查询条件联接起来天生终极查询效果;
7、Cache&Buffer
高速缓存区,查询缓存,假如查询缓存有掷中的查询效果,查询语句就可以直接去查询缓存中取数据。通过 LRU 算法将数据的冷端溢出,将来得及革新到磁盘的数据页,叫脏页。这个缓存机制是由一系列小缓存构成的。好比表缓存,记载缓存,key 缓存,权限缓存等;
8、Engine
存储引擎,存储引擎是 MySQL 与文件打交道的子体系。也是 MySQL 最具有特色的一个地方。MySQL 的存储引擎是插件式的,它根据 MySQLAB 公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)如今有许多种存储引擎,各个存储引擎的上风各不一样。MySQL 也支持自界说制存储引擎,乃至一个库中差别的表利用差别的存储引擎,这些都是答应的。
数据库与数据库实例
数据库:物理操纵体系文件或其他情势文件范例的聚集;
数据库实例:数据库背景历程或线程及一个共享内存地区构成,数据库实例是用来操纵数据库文件的;
MySQL 是一个单历程多线程架构的数据库,与 SQL Server 雷同。Oracle 数据库在 Linux OS 下是多历程,在 Windows 下也是单历程多线程。MySQL 数据库实例在体系上的体现就是一个历程。
MySQL常用存储引擎
存储引擎实在就是怎样存储数据,如作甚存储的数据创建索引以及怎样更新、查询数据等技能实现的方法。
MySQL 中的数据用各种差别的技能存储在文件(或内存)中,这些技能中的每一种技能都利用差别的存储机制、索引本领、锁定程度,而且终极提供广泛的差别功能和本领。在 MySQL 中将这些差别的技能及配套的相干功能称为存储引擎。
1、存储引擎查询
检察 MySQL 服务器支持的存储引擎及默认的存储引擎。存储引擎是针对数据表的,不是针对数据库的,通过如下下令检察详细表指定的存储引擎。
root@db22:10: [(none)] show engines; #检察数据库存储引擎+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+|Engine | Support |Comment | Transactions | XA | Savepoints |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+|InnoDB | DEFAULT | Supportstransactions, row-level locking, and foreign keys | YES | YES | YES ||MRG_MYISAM | YES | Collection of identical MyISAMtables | NO | NO | NO ||MEMORY | YES | Hash based, stored in memory, useful fortemporary tables | NO | NO | NO ||BLACKHOLE | YES | /dev/null storage engine (anything youwrite to it disappears) | NO |NO | NO ||MyISAM | YES | MyISAM storage engine |NO | NO | NO ||CSV | YES | CSV storage engine |NO | NO | NO ||ARCHIVE | YES | Archive storage engine |NO | NO | NO ||PERFORMANCE_SCHEMA | YES |Performance Schema |NO | NO | NO ||FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+9 rowsin set (0.00 sec) root@db22:10: [(none)] show variables like'%engine%'; #检察数据库默认存储引擎+----------------------------------+--------+|Variable_name |Value |+----------------------------------+--------+|default_storage_engine | InnoDB||default_tmp_storage_engine | InnoDB||disabled_storage_engines | ||internal_tmp_disk_storage_engine | InnoDB |+----------------------------------+--------+4 rowsin set, 1 warning (0.18 sec)
2、常用存储引擎
下表是各大存储引擎特点与应用场景的比力。
InnoDB 和 MyISAM 是最主流的两个存储引擎,如今数据库默认的存储引擎就是 InnoDB,且 MySQL 8.0 公布 InnoDB 存储数据字典,MyISAM 彻底被废弃,离开了 MySQL。
可以看出 InnoDB 上风照旧很显着的。InnoDB 是 MySQL 数据库 5.5 版本后的默认存储引擎,默认所说的 MySQL 即指 InnoDB 存储引擎的 MySQL,那么关于 InnoDB 的体系布局下一次在一起来看看吧,本日就到这里啦。
参考资料
http://my.oschina.net/peakfang/blog/2240253
张甦 著 《MySQL王者晋级之路》
保举阅读:
模仿真实情况下超简朴超具体的 MySQL 5.7 安装
具有百度云会员功能的百度云盘下载器
关系型数据库 MySQL 表相干操纵
Linux 下 CentOS 7 安装教程
MySQL 底子知识学习
周末面基后的碎碎念
十大资源分享篇一
资源分享:
5T 技能资源大放送!包罗但不限于:Linux、Python、Oracle、MySQL、Java、前端、大数据、人工智能等,详细获取方式可关注本公众号大概添加我微信获取~~
添加微信,可参加资源技能交换群
长按 辨认二维码 即可关注!
走过途经,不要错过这个 悦目 哦!
|