mysql -> 简介&体系结构_01
数据库简介
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。
所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
关系型数据库的特点

二维表
典型产品 Oracle传统企业,MySQL是互联网企业
数据存取是通过SQL(结构化查询语句)
最大特点,数据安全性方面强(ACID)
数据库使用排名

数据来源: https://db-engines.com/en/ranking
MySQL数据库版本介绍
5.0--5.1--5.5--5.6--5.7--8.0
MySQL的市场应用
a) 中、大型互联网公司
b) 市场空间:互联网领域第一
c) 趋势明显
d) 同源产品:MariaDB、perconaDB
mysql发展史
1979年,报表工具Unireg出现。
1985 年,以瑞典David Axmark 为首,成立了一家公司(AB前身),IASM引擎出现。
1990年,提供SQL支持。
1999-2000年,MySQL AB公司成立,并公布源码,开源化。
2000年4月BDB引擎出现,支持事务。
2008年1月16日,Sun(太阳微系统)正式收购MySQL。
2009年4月20日,甲骨文公司宣布以每股9.50美元,74亿美元的总额收购Sun电脑公司,MySQL 转入Oracle 门下。
2013年6月18日,甲骨文公司修改MySQL授权协议,移除了GPL。但随后有消息称这是一个bug。
MySQL的特点简介
开源、社区版免费、简单,使用方便,可靠、稳定、安全、社区活跃
Mysql体系结构
mysql是一个典型的c/s模式,服务端与客户端两部分组成
服务端程序 mysqld
客户端程序 mysql自带客户端(mysql、mysqladmin、mysqldump等)
第三方客户端 API接口(php-mysql)

MySQL在启动过程
1、启动后台守护进程,并生成工作线程
2、预分配内存结构供MySQL处理数据使用
# 实例就是MySQL的后台进程+线程+预分配的内存结构 --> 完整的数据库管理系统
# 多实例==完整的数据库管理系统*n
mysql连接方式
TCP/IP 连接 网络连接串(通过用户名 密码 IP 端口进行连接)
mysql -uroot -p123 -h 127.0.0.1 -P 3306
socket 连接 网络套接字(用户名 密码 socket文件)
mysql -uroot -p123 -S /application/mysql/tmp/mysql.sock
在linux中使用mysql命令不加其他的参数连接方式即
mysql -uroot -p123 //使用的是套接字文件方式登录的
Mysqld服务的构成

1、连接层

(1)提供连接协议(TCPIP,socket)
(2)用户与密码的验证模块
(3)针对每个连接提供一个连接线程(接收用户命令,返回结果给用户)
2、SQL层

sql即结构化的查询语句(数据库内部逻辑语言)sql92 sql99
DDL 数据库定义语言
DCL 数据库控制语言
DML 数据库操作语言
DQL 数据查询语言
sql层处理流程
select * from wordpress.user;
、语法检查模块
、对象权限及存在性检查模块
、语义检查模块(看看SQL是什么类型的DDL?DCL? DML? DQL?),交给对应类型的解析器继续处理
、解析器模块处理对应语句,解析成执行计划。
、优化器(.7优化可以选择性使用他提供的多种代价模型),选择《他觉得》代价最小的执行计划,交由下一个模块继续处理
、执行器:按照优化器选择,执行语句,得到结果(目标数据行在哪个文件上(t1.ibd)。的哪个位置(1000页))。
将执行结果,交给下一层继续处理
、提供查询缓存 query_cache(需要手工开启才能使用)
()每次运行一条语句的时候,首先做个hash运算,得出一串值(SQL ID),拿着SQL_ID缓存中找,如果匹配上,直接返回结果
()生成缓存时,拿着SQL_ID+结果存到缓存中
、查询日志记录(binlog)
我们还可以使用 Redis替代query_cache .

3、存储引擎层
负责和底层磁盘打交道,根据上层提供的获取数据的方法,得到数据(16进制)后,再转给上层,结构化成表模式
查看数据库当前运行的进程

存储引擎层功能:
存数据、取数据
数据的不同存储方式
不同的管理方式:
事务(增、删、改)
备份恢复
高级功能(高可用的架构、读写分离架构)
mysql的逻辑结构
逻辑构成是为了用户能够读懂数据出现的,让你更好的理解数据。
管理数据的一种方式。
库(database)----> 目录
表(table) ----> 目录下的文件
表的内容 ----> 文件的内容
表的属性(元数据) ----> 文件的Inode
//切换库
mysql> use mysql;
//查看表
mysql> show tables;
//查看列的信息(记录)
mysql> desc user;
mysql物理结构
对于Linux操作系统来讲,他的物理层是“柱面”
对于MySQL来讲,他是Linux系统之上的应用软件,他的物理层就是文件系统上的特定格式的文件
什么的格式是由MySQL<存储引擎>决定的
" tim [(none)]>show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write 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 rows in set (0.00 sec)
存储引擎简介
InnoDB: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。
MEMORY: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
注意:同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。
MySQL体系结构小结
sql 优化相关的理念
解析器 : 执行计划 数据库执行sql的一种方式
优化器 : 知道基本规则,直接影响将来选择哪个执行计划
查询缓存 : 生产环境中,一般会用redis memcached 来代替
逻辑结构
库 就是一个目录,为了存放多张表
表 在相应的库中,用多个文件来表示
myisam表 3个文件:(.myd数据文件 .myi索引文件 frm表 结构定义文件)
innodb: 2个或者一个,共享表空间(ibdata1 基表 元数据)、独立表空间(5.6以后默认的表存储方式)
mysql -> 简介&体系结构_01的更多相关文章
- 数据库介绍(MySQL安装 体系结构、基本管理)
第1章 数据库介绍及mysql安装 1.1 数据库简介 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作. 所谓“数据库”系以一定方式 ...
- 【转】数据库介绍(MySQL安装 体系结构、基本管理)
[转]数据库介绍(MySQL安装 体系结构.基本管理) 第1章 数据库介绍及mysql安装 1.1 数据库简介 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新 ...
- 第一章 Mysql 简介及安装和配置
Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一. ...
- mysql基础篇-----mysql简介
2017-04-19 一.mysql简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 ...
- MySQL(一)之MySQL简介与安装
大家可能都在用MySQL,其实我也是在用MySQL的,但是你知道吗?大部分人都是在windows中使用,这里将介绍一下在windows中的安装分为安装包安装与MSI包安装,以及在linux中的在线安装 ...
- PHP MySQL 简介
PHP MySQL 简介 通过 PHP,您可以连接和操作数据库. MySQL 是跟 PHP 配套使用的最流行的开源数据库系统. 如果想学习更多 MySQL 知识可以查看本站MySQL 教程. MySQ ...
- MySQL简介及安装
一.DBA工作内容及课程体系 二.MySQL课程体系介绍 三.DBA的职业素养 四.MySQL简介及安装 01 什么是数据? 02 什么是数据库管理系统 03 数据库管理系统种类 04 MySQL发展 ...
- 6.MySQL简介
MySQL简介 ·点击查看MySQL官方网站 ·MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于facle旗下 ...
- (一) Mysql 简介及安装和配置
第一节:Mysql 简介 百度百科 第二节:Mysql 安装及配置 1,Mysql5.1 下载及安装 2,Mysql 数据库编码配置 utf-8 3,Mysql 图形界面 Sqlyog 下载及安装
随机推荐
- 【刷题】洛谷 P1501 [国家集训队]Tree II
题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 v2:将树中原有的 ...
- C++模板源代码的三种组织方式
模板代码和非模板代码是有区别的,如果像非模板代码那样把模板的声明放在头文件.h中,把模板的定义放在源文件.cpp中,那么使用这个模板时会得到一个链接错误.这个错误的原因在于,模板的定义还没有被实例化. ...
- %1$s %1$d Android string (java & Android 格式化字符串)
1$s // String%1$d // int //R.string.old:<string name="old">我今年%1$d岁了</string> ...
- Python之旅:列表
Python列表脚本操作符 列表对 + 和 * 的操作符与字符串相似.+ 号用于组合列表,* 号用于重复列表. 如下所示: Python 表达式 结果 描述 len([1, 2, 3]) 3 长度 [ ...
- mac 安装 pecl
下载 pear curl -O http://pear.php.net/go-pear.phar sudo php -d detect_unicode= go-pear.phar 配置和安装 pear ...
- java反射获取class
- Kubernetes 1.5集成heapster
Heapster是kubernetes集群监控工具.在1.2的时候,kubernetes的监控需要在node节点上运行cAdvisor作为agent收集本机和容器的资源数据,包括cpu.内存.网络.文 ...
- ActiveMQ队列消息过期时间设置和自动清除解决方案
版本 apache-activemq-5.15.3 1.消息过期设置 参数详情 1)message过期则客户端不能接收 2)ttlCeiling:表示过期时间上限(程序写的过期时间不能超过此时间,超过 ...
- CSS3 实现的一个简单的"动态主菜单" 示例[转]
其实这个示例蛮无聊的 很简单 也没什么实际的用处. 主要是展示了 CSS3 如何实现动画效果. 写这个主要是想看一看 完成这样的效果 我到底要写多少代码. 同时和我熟悉的java做个比较. 比较结果不 ...
- Presto通过RESTful接口新增Connector
在实际使用Presto的过程中,经常会有以下的一些需求. 添加一个新的Catalog 对不再使用的Catalog希望把它删除 修改某个Catalog的参数 但在Presto中如果进行上述的修改,需要重 ...