MySQL概述,架构原理

一.MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典的MySQL AB公司开发,后被oracle公司收购,MySQL是当下最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。

SQL语言

SQL语句主要分为:

DQL:数据查询语言,用于对数据进行查询 select

DML:数据操作语言,对数据进行增加、修改、删除 insert、udpate、delete

TPL:事务处理语言,对事务进行处理 begin transaction、commit、rollback

DCL:数据控制语言,进行授权与权限回收 grant、revoke

DDL:数据定义语言,进行数据库、表的管理 create、drop

CCL:指针控制语言,通过控制指针完成表的操作 declare cursor

对于web程序员来讲,重点是数据的(增)create,(删)delete,(改)update,(查)select,必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可

SQL:特殊的语言,专门用于关系型数据库

不区分大小写

二.MySQL优缺点

优点:

开源免费:MySQL是一款开源数据库,免费,由很大的用户社区支持

可扩展性:MySQL支持分布式架构和集群部署,可以方便的扩展存储空间和处理能力

可移植性:能够工作在众多不同的系统平台上,例如:Windows、Linux、Unix、MacOS

支持多种编程语言:C,C++,java等

丰富的接口:提供了用于C、C++、Eiffel、Java、Perl、PHP、Python、Rudy和TCL等语言的APl。

缺点:

不支持热备份

集群方面的支持较弱,不够灵活和高效。

缺乏标准的RI(Referential Integrity-RI)机制

安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变

三.MySQL的应用环境

与Oracle,DB2,SQL Server相比啊,确实由许多不足之处,但是丝毫没有减少他的受欢迎程度,对于个人和中小型企业来说,MySQL的功能绰绰有余,由于是开源软件,可以大大的降低成本

LAMP,LNMP:linux操作系统,Apache/Nginx作为WEB服务器,MySQL为数据库,PHP/perl作为服务器端脚本解释器,这几个由于都是免费或开源的,使用这种方式除去人工成本,不用花费额外的一分钱就可以搭建一个非常稳定的网站

四.MySQL的基本架构

MySQL从整体上来说是C/S架构,也就是客户端/服务器两部分构成

1.连接层

(1)提供连接协议:TCP/IP 、SOCKET

(2)提供验证:用户、密码,IP,SOCKET

(3)提供专用连接线程:接收用户SQL,返回结果

通过这条命令show processlist;以查看到连接线程基本情况

2.SQL层

(1)接收上层传送的SQL语句

(2)语法验证模块:验证语句语法,是否满足SQL_MODE

(3)语义检查:判断SQL语句的类型

(4)权限检查:用户对库表有没有权限

(5)解析器:对语句执行前,进行预处理,生成解析树(执行计划),说白了就是生成多种执行方案.

(6)优化器:根据解析器得出的多种执行计划,进行判断,选择最优的执行计划

代价模型:资源(CPU IO MEM)的耗损评估性能好坏

(7)执行器:根据最优执行计划,执行SQL语句,产生执行结果

执行结果:在磁盘的xxxx位置上

(8)提供查询缓存(默认是没开启的),会使用redis tair替代查询缓存功能

(9)提供日志记录(日志管理章节):binlog,默认是没开启的。

3.存储引擎层(类似于linux系统中的文件系统)

负责根据SQL层执行的结果,从磁盘上拿数据。

将16进制的磁盘数据,交由SQL结构化化成表,

连接层的专用线程返回给用户。

相关推荐
kfyty7255 分钟前
不依赖第三方,不销毁重建,loveqq 框架如何原生实现动态线程池?
java·架构
得物技术1 小时前
MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术
数据库·后端·mysql
刘立军2 小时前
本地大模型编程实战(33)用SSE实现大模型的流式输出
架构·langchain·全栈
xiaok2 小时前
mysql中怎么创建一个可控权限数据库账号密码给到开发者
mysql
一直_在路上2 小时前
Go 语言微服务演进路径:从小型项目到企业级架构
架构·go
可涵不会debug5 小时前
【IoTDB】时序数据库选型指南:工业大数据场景下的技术突围
数据库·时序数据库
ByteBlossom5 小时前
MySQL 面试场景题之如何处理 BLOB 和CLOB 数据类型?
数据库·mysql·面试
玉衡子5 小时前
九、MySQL配置参数优化总结
java·mysql
麦兜*5 小时前
MongoDB Atlas 云数据库实战:从零搭建全球多节点集群
java·数据库·spring boot·mongodb·spring·spring cloud
Slaughter信仰5 小时前
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第十章知识点问答(10题)
java·jvm·数据库