MySQL简介


MySQL架构与其他数据库服务器大不相同,它能够适应广泛的应用。足够灵活,能够适应高要求环境,例如Web应用。同时MySQL还适用于嵌入式应用、数据仓库、内容索引和分发软件、高可用的冗余系统联机事务处理系统(OLTP)及其他应用类型。

MySQL开源,当前已经被ORACLE收购,其命运是个未知数,不过MySQL的原作者已经研发出一款更强的

MariaDB,依然开源。

MySQL属于关系型数据库。


为了能够顺畅的使用它,我们必须理解它的设计,下面让我们一起来慢慢的了解它吧。


1、MySQL的逻辑架构


 更形象直观的理解mysql各组件间的协同工作情况,请参阅下图


MySQL基础讲解(一)_MySQL基础讲解


上图解析
#第1层为客户端层,他们是许多基于网络的客户端/服务器工具或服务器都需要的服务,比如连接处理,授权认证,安全等。
#第2层为查询层(很重要),它包括了MySQL的大多数核心:查询解析、分析、优化、缓存及所有内建函数的代码(比如日期、时间、加密等函数的代码)。各种存储引擎提供的功能也集中在此:存储过程、触发器、视图
#第3层包含了存储引擎,存储引擎负责和提取所有存放在Mysql中的数据。存储引擎类似于linux的文件系统,各有优势。服务器通存储引擎API与引擎通信,该接口隐藏了存储引擎之间的区别,使其在查询层上是透明地。存储引擎不会进行SQL解析,SQL解析式在第二层,它只是相应服务器的请求



2、C/S架构


#MySQL属于客户端/服务器(C/S)架构,客户端和服务器之间依靠mysql协议通信与交互


   MySQL基础讲解(一)_MySQL基础讲解_02


3、MySQL的连接方式

 

Mysql 两种连接方式:
#(1)程序员直接使用API接口,书写sql语句操作数据库
#(2)普通用户使用客户端,调用可用客户端API 和数据库交互


     

4、结构化查询语言

   

#MySQL使用的也是结构化查询语言-SQL,如下三种
DDL:  数据定义语言   create(创建),alter(修改),drop(删除)
DML: 数据操作语言   select(查),insert(增),uptate(改),delete(删)即我们常常说到的增删改查四个操作语言
DCL: 数据控制语言   grant(用户授权),revoke(取消授权)
###以上所有的语言都可以成为查询语言,因为每个操作前都必须要先查询

   

5、事务

 

#事务:一次或者多次操作的组合,符合ACID特性。
A:原子性
C:一致性
I:隔离性
D:持久性

   

6、隔离级别

 

#事务要符合ACID四大特性,其中隔离性存在隔离级别
read uncommited 读未提交
read commited   读提交
repeatable read 可重读
serializable    可串行化

 

7、存储引擎

 

#MySQL常用的两类存储引擎MyISAM、InnoDB
两者区别
MyISAM:无事务,非聚集的分离的索引
InnoDB:聚集索引


8、机械式硬盘


#如图一所示,第三层为存储引擎和存储提取数据的硬盘。
机械式硬盘读写方式
①随机读写
②顺序读写

   

 

#上述的事务日志属于顺序I/O,当第一个存储事务日志的设备满了之后,会换一下个日志设备,最后再提交写入硬盘中如下图:

 

   MySQL基础讲解(一)_MySQL基础讲解_03



9、关系型数据库设计规范

 

#第一范式 (1NF):字段的原子性
#第二范式(2NF):必须要有主键
#第三范式(3NF):非主属性不允许重复


 

SQL规范----由ANSI(美国国家安全委员会)指定
#SQL-86,SQL-89,SQL-92,SQL-99,SQL-03


 

SQL约束
#主键约束,外键约束,唯一键约束,检查约束;

 

10、MySQL家族产品

 

授权分类:
#商业授权(收费),APL授权(开源)
其他产品:
#MySQL Cluster 集群
#MySQL Proxy   代理
#MySQL Driver and Connectors 驱动和连接


11、MySQL特性

 

#Speed 速度
 完全多线程
 查询缓存
#Reliability 可靠性
#Scalability 伸缩性
#Portability and Standarts Compliance 可移植性和合格性
#Multiuser Support  支持多用户
#Internationalization 国际化
#Wide Appliacation Support 广泛的应用支持
 如C,C++,Java,Perl,PHP,Python,Ruby,JDBC,ODBC,.NET
#Open Source (开源)



12、DBA

   

数据库管理员DBA(DataBase Administrator)分为开发DBA和管理DBA
#开发DBA工作内容:数据库设计,代码设计(存储过程、存储函数、触发器)
#管理DBA工作内容:连接管理及优化、备份及还原、数据库设计、基本语句优化、用户及权限管理、安全管理、配置优化

   

 

13、MySQL Arch(架构图)


   MySQL基础讲解(一)_MySQL基础讲解_04

     

ps:以上内容让大家先对MySQL有一个初步认识,深入讲解马上推出,让我们一起来编译安装一个MySQL