深入探索MySQL数据库结构设计:实战案例解析,打造高效、可扩展的数据存储方案

  •  作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注
  •  座右铭:   云端筑梦,数据为翼,探索无限可能,引领云计算新纪元
  •  个人主页:团儿.-CSDN博客

前言:

在数字化时代,数据管理已经成为了一项至关重要的任务。

随着大数据的不断涌现,我们面临着如何有效地存储、检索和分析这些海量数据的挑战。

在这个背景下,MySQL作为一个流行的关系型数据库管理系统,扮演着不可或缺的角色。

它以其高性能、高可靠性和易用性而广受青睐,成为了众多企业和开发者的首选数据库解决方案。

对于初学者来说,理解MySQL的数据库模型和数据库结构可能是一个复杂的过程。

这不仅仅是因为数据库的概念本身就很抽象,更因为MySQL提供了多种数据类型和存储引擎,使得其内部机制变得复杂多变。

因此,本文将带领读者走进MySQL的世界,通过问题-分析-解决方案的方式,深入浅出地介绍MySQL的数据库模型和数据库结构。

964e29502d98453c82f5debd946592af.png


1.C/S(客户端/服务端)模型

e6ecfcfc73d84e3390c4c3f4f72b400c.png

C/S模型是一种网络架构模式,其中系统被分为两个主要部分:客户端(Client)和服务端(Server)。

在这种模型中,客户端负责向用户提供界面和交互能力,而服务端则负责处理数据、逻辑运算和存储等任务。客户端和服务端之间通过网络协议(如TCP/IP)进行通信。

 

那么,数据库连接的基本方式及命令为:

TCP/IP方式(远程、本地):

mysql -uroot -p123.com -h 192.168.8.9 -P3306

d563df61a0b0482a8555705ccedf28a6.png


Socket方式(仅本地):

mysql -uroot -p password 123.com

68fda4c160ec43239feaa7520f368191.png


2.实例介绍

数据库实例

mysqld后台守护进程

Master Thread   主

worker Thread   工作

预分配的内存

36b2a82b397244ed89f800294757de38.png


3.mysqld程序结构

eed121b2076e4d178b717e0bffe0d97d.png

 

连接层:

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

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

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

 

SQL层

接收上层传送的SQL语句

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

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

DDL :数据定义语言 create drop alter

DCL :数据控制语言 grant  revoke

DML :数据操作语言 insert delete update

DQL: 数据查询语言 select

 

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

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

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

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

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

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

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

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

 

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

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

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

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


4 .逻辑结构

cd2ce9fcbe224392adc974a0df61ac6c.png

库:

在数据库系统中,“库”也被称为“数据库”,是存储数据的容器,用于组织和存储数据的集合。它包含了表、索引、视图、存储过程、触发器等数据库对象。

在数据库的逻辑结构中,“库”位于最顶层,其下可以包含多个表、视图等数据库对象。这些对象通过逻辑上的关联和约束,共同构成了数据库的完整结构。

 

表:

是数据库中存储数据的基本单位,由行和列组成    每一行代表一个数据记录,每一列代表一个数据字段。

列:列名(字段),列属性(数据类型,约束等)

数据行(记录)


5 .物理存储结构引入

379d38759f3a442bb64c442378f81811.png

 

库的物理存储结构

用文件系统的目录来存储

 

表的物理存储结构

表:

MyISAM(ext2)

 user.frm  : 存储的表结构(列,列属性)

 user.MYD  :  存储的数据记录

 user.MYI  : 存储索引

 

InnoDB(XFS)

 time_zone.frm : 存储的表结构(列,列属性)

 time_zone.ibd : 存储的数据记录和索引

 ibdata1       :   数据字典信息

 

表的段、区、页(16k)(了解)

一般情况下(非分区表)

一个表就是一个段

一个段由多个区构成

一个区,64个连续的页(16k)组成,1M大小


期待您的关注~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

noge-gyp构建项目踩坑记录

开发环境 系统: win11 node: 19.7.0 npm: 8.3.2 node-gyp: 10.0.2可以不使用windows-build-tools来安装构建工具,手动进行安装 我这边用windows-build-tools安装时候会提示 process.env only accepts a configurable, writable, and enumerable data descriptor. 查了资料后…

转换视频格式轻松搞定!3个小窍门助你轻松将mxf格式转mp4

你是否因为格式转换而烦恼?你是否经历过这样的情况:你想要在别的设备或平台上播放心仪的视频,但是你的视频文件是xmf格式的,很多设备都不支持这个格式,导致视频无法播放。现在,你需要把mxf格式转mp4格式。你…

【时间盒子】-【2.准备】HarmonyOS 开发前需要准备什么?

零基础新手或转行进入鸿蒙生态应用的开发者,请提前准备以下内容: 一、注册华为帐号 此帐号在华为官方各平台通用,比如:华为手机、华为商城、华为云、华为开发者联盟等等。 https://id1.cloud.huawei.com/CAS/portal/userRegist…

linux 下转化 ppk 文件 为openssh 文件(private,public)

1. 首先安装: puttygen ubuntu : apt install putty-tools 2. ppk 文件转化 openssh key private key : puttygen /path/to/puttykey.ppk -O private-openssh -o ~/.ssh/id_rsa public key: puttygen /path/to/puttykey.ppk -O public-openssh -o…

如何在Windows和Mac上免费提取RAR文件?这里有方法

序言 你有没有下载过一个文件,却发现它有一个奇怪的.rar文件扩展名?RAR是一种压缩文件格式,与ZIP文件非常相似,在本文中,我们将向你展示如何在Windows或macOS上打开RAR文件。 如何在Windows 11上打开RAR文件 Windows 11在2023年增加了对RAR文件的原生支持。从那时起,你…

问:说说内部类和静态内部类的区别?

示例 内部类(Non-static Inner Class): public class OuterClass {private String outerField "我是外部类字段";class InnerClass {public void display() {System.out.println(outerField); // 可以直接访问外部类的成员}}public void sh…

144. 腾讯云Redis数据库

文章目录 一、Redis 的主要功能特性二、Redis 的典型应用场景三、Redis 的演进过程四、Redis 的架构设计五、Redis 的数据类型及操作命令六、腾讯云数据库 Redis七、总结 Redis 是一种由 C 语言开发的 NoSQL 数据库,以其高性能的键值对存储和多种应用场景而闻名。本…

可重入VI,VI模板和动态VI之间的差异 转

可重入VI 当您想要同时运行同一VI的多个实例时,将使用可重入VI。当VI不可重入时,VI只有一个数据空间。因此,一次只能有一个调用者运行VI,因此调用者可能必须“等待轮到它”时才能使用VI。这是VI的默认选项,但您可以将V…

ARKTS数组和Map的常规操作

数组 Entry Component struct ArrayDemo {State message: string Hello World;// 创建一个数组State testList: Array<string> [测试1, 测试2, 测试3];build() {Row() {Column() {Button(新增元素).onClick(() > {// this.testList.push(测试4)//在数组末尾添加一个…

js基础速成-字符串方法

字符串方法 JavaScript 中的所有内容都是对象。字符串是一种基本数据类型&#xff0c;这意味着一旦创建就无法修改。字符串对象有许多字符串方法&#xff0c;有不同的字符串方法可以帮助我们处理字符串。 length 字符串的 length 方法返回字符串中字符的数量&#xff0c;包括…

Hibernate 批量插入速度慢的原因和解决方法

由于业务需要一次性连续写入超过10k条以上的新数据&#xff0c;当对象超过10个成员变量以后&#xff0c;整个写入过程居然需要长达35秒&#xff0c;这个速度是不能接受的&#xff0c;故此研究了一下怎么开启Hibernate批量写入的功能。 我这边使用的是Hibernate 5.6.15 在网上…

Spark MLlib模型训练—回归算法 Linear regression

Spark MLlib模型训练—回归算法 Linear regression 线性回归是回归分析中最基础且应用广泛的一种方法。它用于建模目标变量和一个或多个自变量之间的关系。随着大数据时代的到来,使用像 Spark 这样的分布式计算框架进行大规模数据处理和建模变得尤为重要。本文将全面解析 Spa…

Java 异常架构Exception(异常)

1. Exception 类的概述 在Java中&#xff0c;Exception类是Throwable类的直接子类之一。Throwable类是Java异常处理体系的根类&#xff0c;所有异常和错误都继承自它。Java的异常体系可以分为以下几个部分&#xff1a; Throwable&#xff1a;所有异常和错误的基类。 - Exce…

【Java|Stream流】不可变集合

文章目录 1.什么是不可变集合2.创建不可变集合的方式2.1 List类型2.2 Set2.3 Map 1.什么是不可变集合 不可变集合:不可以被修改的集合 不可变集合优点: 安全性 由于不可变集合不能被修改&#xff0c;所以可以安全地在多个线程之间共享&#xff0c;而不用担心被意外修改&#xf…

【kubernetes】Service 介绍和应用

一&#xff0c;Service介绍 四层代理是基于传输层&#xff08;第四层&#xff09;工作的代理&#xff0c;主要在传输层&#xff08;如TCP、UDP协议&#xff09;上转发和管理数据流 七层代理是基于应用层&#xff08;第七层&#xff09;工作的代理&#xff0c;能够对应用层协议…

# 利刃出鞘_Tomcat 核心原理解析(十)-- Tomcat 性能调优--2

利刃出鞘_Tomcat 核心原理解析&#xff08;十&#xff09;-- Tomcat 性能调优–2 二、Tomcat专题 - Tomcat性能调优 - 性能测试结果说明 1、压力性能测试 # 打开另一个终端&#xff0c;切换目录 [rootbogon ~]# cd /usr/local/tomcat# 进行压力性能测试[rootbogon tomcat]# …

JSON处理库 -- Fastjson

文章目录 一、json格式1.1 用途1.2 语法1.3 常见格式 二、fastjson常用类2.1 JSONObject2.2 JSONArray 三、序列化和反序列化3.1 默认序列化与反序列化3.2 序列化的扩展3.3 自定义序列化SerializeFilter3.4 JSONField 注解3.5 复习Jackson 一、json格式 1.1 用途 一种轻量级的…

浅谈SpringMvc的核心流程与组件

一、SpringMvc的核心流程 当发起请求时被前置的控制器(DispatcherServlet)拦截到请求&#xff0c;根据请求参数生成代理请求&#xff0c;找到请求对应的实际控制器&#xff0c;控制器处理请求&#xff0c;创建数据模型&#xff0c;访问数据库&#xff0c;将模型响应给中心控制…

threadLocal底层源码解析

分享链接&#xff1a; https://www.cnblogs.com/blissful/p/17929221.html

边缘计算与物联网中的深度学习应用

边缘计算与物联网中的深度学习应用 目录 一、引言 二、边缘计算基础 三、物联网基础 四、深度学习在物联网中的应用实例 五、总结 一、引言 随着物联网技术的不断发展&#xff0c;越来越多的设备和传感器被连接到互联网上&#xff0c;产生了海量的数据。这些数据需…