(1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构)
目录
1、学习笔记之mysql体系结构(C/S架构)
2、mysql整体架构
3、存储引擎
4、sql语句处理--SQL层(内存层)
5、服务器内存结构
6、mysql如何使用磁盘空间
7、mysql物理存储结构
8、mysql逻辑存储结构
学习笔记之mysql体系结构(C/S架构)

一、客户端
常用命令都在mysql data根目录下的bin目录;
(1)最大用户连接数

一个连接数占512KB~64MB 内存
二、mysql整体架构(服务器进程架构)

简化如下图:

1、连接层

(1)一个用户连接表示一个会话,一个会话要用一个线程来服从os的调度,要做上下文切换,创建销毁会话开销比较大。。所以Mysql这里搞了一个连接池,也就是thread-pool ,也就是再上面那张图的connectors Pool。
2、SQL层
通过该接口客户端连接发DML过来;

它做语法语义等各种解析,如下图:

然后优化,把解析后的数据生成mysql可以识别的数据,根据统计信息等等各种信息,优化其执行方式,生成执行计划;

3、存储引擎
就是INNODB,详情可以参考上一篇文章。
4.sql语句处理--SQL层(内存层)

(1)检查告诉缓存查询;(查看查询缓存预设大小)
下面的query_cache_type目前是OFF,证明默认是关闭的,也就是没有启用查询缓存功能。

(2)解析查询
【1】硬解析:第一次执行 【2】软解析:如果以前有解析过同样的语句,这里就不再解析,直接拿以前的来用。
5、服务器内存结构

(1)连接/会话:这是每个线程私有的(相当于Oracle中的PGA),当内存不够的时候,才会用到临时表

(2)服务器/共享:
【1】查询高速缓存:就是我们查询结果的结果集要缓存起来 【2】线程高速缓存:就是连接信息缓存
(3)存储引擎/共享:
【1】日志缓冲区:redo/undo等日志缓冲 【2】缓冲池:数据缓冲(如index page/data dictionary/insert buffer/hash page)
内存参数如下:

(1) 连接/会话
【1】join_buffer_size :表连接内存 【2】sort_buffer_size:表排序内存 【3】temp_table_size:内存不够用了,用临时表存储(磁盘),临时表大小
(2)服务器/共享
【1】query_cache:结果集缓存 【2】table_cache:打开每个表的信息缓存起来,以后要用每个表就不用每次都重新打开了
(3)存储引擎/共享
【1】innodb_buffer_pool_size:innoDB存储引擎缓冲池大小,应该占内存的50%~80% 【2】innodb_log_buffer_size:日志缓冲大小
6.mysql如何使用磁盘空间

(1)查看数据存放目录
show variables like '%datadir%'; #查看数据存放目录
show variables like '%log%' #查看日志存放目录

7.mysql物理存储结构

(1)查看一下数据库
【1】查看数据目录 【2】退出mysql进入mysql数据目录 【3】找到数据库

在Mysql里面验证一下;

发现我们看到的3个数据库都有,但多了一个Information_schema,因为该数据库是内存里的东西,所以在数据目录里看不到。
(2)创建一个数据库
create database jfedu default character set utf8;

然后我们可以看到这里有我们新建数据库对应的文件了。
然后cd 进去看看有什么文件?文件内容是什么

原来就一个文件,文件内容只是字符集和排序规则;
(3)建一个表
我们切换数据库上下文到新建的数据库jfedu,然后创建一个名为teacher的表;

然后我们看看数据文件里面;

因为这里默认存储引擎是innoDb,所以和我们以前写的MYISAM文件体系不一样,这里把MYD和MYI合并成了ibd文件。

8、mysql逻辑存储结构

(1)1个实例对应一个数据库整体
1个实例对应的是一个基准数据库(注意这里说的是整体概念,而不是create database那种数据库),其实也可以理解成物理上对应一个mysql目录,指的是下图框出的这个:

(2)1个实例对应多个逻辑数据库,1个逻辑数据库对应1个schema
这里的逻辑数据库说的是这个,应该可以理解;

我们重点说一下逻辑数据库对应的schema,他们是1对1的关系。或者说完全是等价关系。(但在oracle中,schema是用户,在sql server中schema是一个逻辑分组架构。)
(1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构)的更多相关文章
- (1.1)学习笔记之mysql体系结构(内存、进程、线程)
关键词:mysql体系结构 参考:https://www.cnblogs.com/zhoubaojian/articles/7866292.html 一.mysql体系架构概述 1.mysql体系结构 ...
- (1.2)学习笔记之mysql体系结构(数据库文件)
InnoDB存储引擎体系结构图 1.InnoDB数据库的结构 (1)redo log:这里的redo log不是数据的redo log,InnoDB本也是一个数据库,身具有的redo log,所以这里 ...
- RocketMQ学习笔记(7)----RocketMQ的整体架构
1. RocketMQ主要的9个模块,如图: 2. 模块介绍 1. rocketmq-common:通用的常量枚举,基类方法或者数据结构,按描述的目标来分包,通俗易懂.报名有admin,consume ...
- 学习笔记:oracle学习一:oracle11g体系结构之物理存储结构
目录 1.物理存储结构 1.1 数据文件 1.2 控制文件 1.3 日志文件 1.3.1 重做日志文件 1.3.2 归档日志文件 1.4 服务器参数文件 1.4.1 查看服务器参数 1.4.2 修改服 ...
- SQLMAP学习笔记2 Mysql数据库注入
SQLMAP学习笔记2 Mysql数据库注入 注入流程 (如果网站需要登录,就要用到cookie信息,通过F12开发者工具获取cookie信息) sqlmap -u "URL" - ...
- ref:学习笔记 UpdateXml() MYSQL显错注入
ref:https://www.cnblogs.com/MiWhite/p/6228491.html 学习笔记 UpdateXml() MYSQL显错注入 在学习之前,需要先了解 UpdateXml( ...
- JUC源码学习笔记4——原子类,CAS,Volatile内存屏障,缓存伪共享与UnSafe相关方法
JUC源码学习笔记4--原子类,CAS,Volatile内存屏障,缓存伪共享与UnSafe相关方法 volatile的原理和内存屏障参考<Java并发编程的艺术> 原子类源码基于JDK8 ...
- MySQL笔记(1)---MySQL体系结构和存储引擎
1.前言 本系列记录MYSQL数据库的一些结构和实现特点,方便查询. 2.基本概念 数据库:物理操作系统文件或者其他形式文件类型的集合.MySQL中数据库文件可以是frm.MYD.MYI.ibd结尾的 ...
- 巨杉学习笔记 | SequoiaDB MySQL导入导出工具使用实战
本文来自社区用户投稿,感谢这位小伙伴的技术分享 巨杉数据库架构简介 巨杉数据库作为分布式数据库是计算和存储分离架构,由数据库实例层和存储引擎层组成的.存储引擎层负责数据库核心功能比如数据读写存储以及分 ...
随机推荐
- python使用消息队列RabbitMq(入门)
windows平台开发和使用 安装 安装Erlang:https://pan.baidu.com/s/1QcZDaI205uaue7mMWh5cSA 安装RabbitMQ:https://pan.ba ...
- python 类和对象上
面向对象 Object Oriented 面向对象的学习: 面向对象的语法(简单,记忆就可以搞定) 面向对象的思想(稍难,需要一定的理解) 面向过程和面向对象的区别 面向过程开发,以函数作为基本结构使 ...
- laravel打印查询的sql
public function __construct( ){ $log = DB :: listen( function( $sql ){ echo $sql; } ); }
- iphoneX的适配问题
iphoneX();function iphoneX(){ var oMeta = document.createElement('meta'); oMeta.setAttribute('name', ...
- Java原理领悟-线程池(Executor)
线程池全面解析 什么是线程池? 很简单,简单看名字就知道是装有线程的池子,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用. 线程池的好处 我 ...
- ORM:Chloe
ORM的一种:Chloe注意实体类模板特色:多表连接 利用chloe实现对各表的增删查改的管理,判断现有物料是否能够支持生产规模. 一开始报错: IQuery<ProductionPlans&g ...
- [Java 教程 04] Java基础语法
在上一篇文章中我们已经运行了个简单的java程序,但是没有给大家讲解代码部分的内容与含义.学习,我们要做到知其然而知其所以然,所以本篇文章我们就来讲解java程序的基本语法,学完这篇文章你再回头看上篇 ...
- jsonp详细原理之一
/*script标签是不存在跨域请求的,类似的还有img,background:url,link 你可以想象一下,平时的这些标签都是可以直接引入外部资源的,所以是不存在跨域问题的*/ function ...
- Sql 将A表数据插入到B表
A表和B表字段不同 --insert into B(Name,PersonalId,Education,IsDel) select Name, PersonId as PersonalId, ( ca ...
- 一、Json
一.Json遍历模糊查询 你没admin 所以这句话报错. //1.写法 dynamic query = from user in jsonObject where (user.ToString(). ...