MySQL简介
MySQL架构与其他数据库服务器大不相同,它能够适应广泛的应用。足够灵活,能够适应高要求环境,例如Web应用。同时MySQL还适用于嵌入式应用、数据仓库、内容索引和分发软件、高可用的冗余系统联机事务处理系统(OLTP)及其他应用类型。
MySQL开源,当前已经被ORACLE收购,其命运是个未知数,不过MySQL的原作者已经研发出一款更强的
MariaDB,依然开源。
MySQL属于关系型数据库。
为了能够顺畅的使用它,我们必须理解它的设计,下面让我们一起来慢慢的了解它吧。
1、MySQL的逻辑架构
更形象直观的理解mysql各组件间的协同工作情况,请参阅下图
上图解析 #第1层为客户端层,他们是许多基于网络的客户端/服务器工具或服务器都需要的服务,比如连接处理,授权认证,安全等。 #第2层为查询层(很重要),它包括了MySQL的大多数核心:查询解析、分析、优化、缓存及所有内建函数的代码(比如日期、时间、加密等函数的代码)。各种存储引擎提供的功能也集中在此:存储过程、触发器、视图 #第3层包含了存储引擎,存储引擎负责和提取所有存放在Mysql中的数据。存储引擎类似于linux的文件系统,各有优势。服务器通存储引擎API与引擎通信,该接口隐藏了存储引擎之间的区别,使其在查询层上是透明地。存储引擎不会进行SQL解析,SQL解析式在第二层,它只是相应服务器的请求
2、C/S架构
#MySQL属于客户端/服务器(C/S)架构,客户端和服务器之间依靠mysql协议通信与交互
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,当第一个存储事务日志的设备满了之后,会换一下个日志设备,最后再提交写入硬盘中如下图:
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(架构图)
ps:以上内容让大家先对MySQL有一个初步认识,深入讲解马上推出,让我们一起来编译安装一个MySQL
本文出自 “西风瘦猪” 博客,请务必保留此出处http://jungege.blog.51cto.com/4102814/1394809
原文:http://jungege.blog.51cto.com/4102814/1394809