登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 814|回复: 0

关系型数据库MySQL体系布局详解

[复制链接]

156

主题

156

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-3-5 20:54:41 | 显示全部楼层 |阅读模式 来自 福建
AKI2ZKgeIGZc2l6k.jpg
通过前面几篇文章学会怎样安装 MySQL 以及底子知识后,我们还必要学习体系布局,MySQL 和 Oracle 体系布局雷同,假如学过 Oracle 可以类比影象,底子牢固才气学好数据库,才气做一个及格的 DBA,下面一起来看看。


dkytTTHsqZkGOzyb.jpg



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 实现的,是一个很长的脚本;
重要功能: 
将 SQL 语句分解成数据布局,并将这个布局通报到后续步调,以后 SQL 语句的通报和处置惩罚就是基于这个布局的;
假如在分解构成中碰到错误,那么就阐明这个 SQL 语句是不公道的 ;
Lex:Lexical Analyzer 是一种天生扫描器的工具。扫描器是一种辨认文本中的词汇模式的步伐;
Yacc:Yet Another Compiler Compiler 是一种工具,将任何一种编程语言的全部语法翻译成针对此种语言的 Yacc 语法剖析器;
6、Optimizer

查询优化器,SQL 语句在查询之前会利用查询优化器对查询举行优化。他利用的是“选取-投影-联接”计谋举行查询;
优化 select uid,name from user where gender = 1;  
SQL语句实行的过程如下:
这个 select 查询先根据 where 语句举行记载选取,而不是先将表全部记载查询出来以后再举行 gender 过滤;
这个 select 查询先根据 uid 和 name 举行属性投影(字段选择),而不是将属性全部取出以后再举行过滤;
将这两个查询条件联接起来天生终极查询效果;
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)


m1twwEt223x23Wtu.jpg

2、常用存储引擎


HcO80dho9o0IGXo4.jpg

下表是各大存储引擎特点与应用场景的比力。
OTiw2yTjkGXGIrJX.jpg

InnoDB 和 MyISAM 是最主流的两个存储引擎,如今数据库默认的存储引擎就是 InnoDB,且 MySQL 8.0 公布 InnoDB 存储数据字典,MyISAM 彻底被废弃,离开了 MySQL。
XuDCdZUJjRM78uy9.jpg

可以看出 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、前端、大数据、人工智能等,详细获取方式可关注本公众号大概添加我微信获取~~

wcmgxzhvnVbxXB1C.jpg W39wQ9d9Wsn9XAHa.jpg
添加微信,可参加资源技能交换群


Lz8D5GmZ8uC5dECZ.jpg
长按 辨认二维码 即可关注!
走过途经,不要错过这个 悦目 哦!

C5ruCb5K74TRUT8k.jpg




上一篇:好消息,开年会员特惠招募,时机难过万万不要错过! ...
下一篇:centos中用uWSGI和Nginx摆设Flask项目
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-8 03:57 , Processed in 0.066574 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表