当前位置: 首页 > news >正文

Mysql(一)架构、存储引擎、数据结构

目录

  • 一、mysql架构
  • 二、存储引擎
  • 三、数据类型

在这里插入图片描述

一、mysql架构

与其它数据库相比,MySQL的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离,可以根据业务的需求和实际需要选择合适的存储引擎。
在这里插入图片描述

  • 连接层:上层是客户端和连接服务。主要完成一些类似于连接处理、授权认证、及相关的安全方案
  • 服务层:主要完成大部分的核心服务功能, 包括查询解析、分析、优化、缓存、以及所有的内置函数,所有跨存储引擎的功能也都在这一层实现,包括触发器、存储过程、视图等。
  • 引擎层:存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信
  • 存储层:要是将数据存储在运行于该设备的文件系统之上,并完成与存储引擎的交互

二、存储引擎

  • 概念:存储引擎是MySQL的组件,用于处理不同表类型的SQL操作。
  • 区别:不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。
  • 用处:一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求
  • mysql:MySQL服务器使用可插拔的存储引擎体系结构,可以从运行中的 MySQL 服务器加载或卸载存储引擎 。
  • 常见引擎:InnoDB(MySQL默认)、MyISAM、Memory、NDB。
对比项MyISAMInnoDB
主外键不支持支持
事务不支持支持
行表锁表锁,不适合高并发操作行锁,适合高并发
缓存缓存索引,不缓存真实数据缓存索引和数据,对内存要求高,内存大小对性能有决定性影响
表空间
关注点性能事务
默认安装

三、数据类型

  • 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
  • 浮点数类型:FLOAT、DOUBLE、DECIMAL
  • 字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB
  • 日期类型:Date、DateTime、TimeStamp、Time、Year
  • 其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等

CHAR 和 VARCHAR 的区别?

  1. char是固定长度,varchar长度可变
  2. char不论实际存储的字符数都会占用n个字符的空间
  3. 而varchar只会占用实际字符应该占用的字节空间加1(实际长度length,0<=length<255)或加2(length>255).因为varchar保存数据时除了要保存字符串之外还会加一个字节来记录长度(如果列声明长度大于255则使用两个字节来保存长度)。
  4. 存储时,varchar回根据实际存储的数据分配最终的存储空间
  5. char(n),varchar(n)中的n都代表字符的个数
  6. 超过char,varchar最大长度n的限制后,字符串会被截断。
  7. 存储的最大空间限制不一样:char的存储上限为255字节。
  8. char在存储时会截断尾部的空格,而varchar不会。
  9. char是适合存储很短的、一般固定长度的字符串

列的字符串类型可以是什么?
字符串类型是:SET、BLOB、ENUM、CHAR、TEXT、VARCHAR

BLOB和TEXT有什么区别?

  1. BLOB是一个二进制对象,可以容纳可变数量的数据。有四种类型的BLOB:TINYBLOB、BLOB、MEDIUMBLO和 LONGBLOB
  2. TEXT是一个不区分大小写的BLOB。四种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。
  3. BLOB 保存二进制数据,TEXT 保存字符数据。

相关文章:

Mysql(一)架构、存储引擎、数据结构

目录一、mysql架构二、存储引擎三、数据类型一、mysql架构 与其它数据库相比&#xff0c;MySQL的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上&#xff0c;插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离&#xff0c;可…...

php 项目网站怎么实现负载均衡?

负载均衡是一种通过分担请求以保证系统可用性和稳定性的技术。在 PHP 项目网站中&#xff0c;可以使用以下几种方法实现负载均衡&#xff1a;软件负载均衡&#xff1a;使用软件如 HAProxy、Nginx 等实现负载均衡&#xff0c;将请求转发到多个后端服务器上。硬件负载均衡&#x…...

win11+pytorch1.7.0+python3.8(也可以是python3.7)+cuda11.0

win11pytorch1.7.0python3.8cuda11.0写在最前面一. 软件配备二. 创建虚拟环境2.1 创建环境名称&#xff0c;并选择‘y’2.2.进入虚拟环境三. 安装pytorch四. 安装虚拟环境下的notebook4.1 安装ipykernel&#xff0c;并选择‘y’&#xff0c;直至安装完成4.2 将环境名注册到note…...

基于jeecgboot的flowable流程设计器的几个bug修复

因为今天在用任务监听器的时候&#xff0c;出现几个bug&#xff0c;所以一并修复与处理。 一、建立任务监听器后&#xff0c;删除不了 主要有两个原因&#xff0c;一个是点击删除没反应&#xff0c;实际上是弹出框跑到后面去了&#xff0c;说明还是z-index问题&#xff0c;调整…...

SAP MM 配置变式物料

创建一个变式物料大概需要经过一下几个阶段&#xff1b; 1、创建物料主数据&#xff08;MM01&#xff09;&#xff1b; 2、创建特性值&#xff08;CT04&#xff09;&#xff1b; 3、创建变量类&#xff08;CL02&#xff09;&#xff1b; 4、创建配置文件&#xff08;CU41&a…...

Quartz与SpringBoot 搞定任务调度

一、Quartz简介 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目&#xff0c;它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个&#xff0c;百个&#xff0c;甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java…...

SciencePlots绘图

简介 使用Python作为核心开发工具的机器学习和深度学习研究者自然会希望使用Matplotlib进行科研图表的绘制&#xff0c;但是Matplotlib默认的样式并不适合科研论文的出版&#xff0c;而SciencePlots就是为此定制的一系列科研绘图样式库&#xff0c;可以绘制很合适科研图表。 …...

【Spark分布式内存计算框架——Spark SQL】12. External DataSource(下)rdbms 数据

6.7 rdbms 数据 回顾在SparkCore中读取MySQL表的数据通过JdbcRDD来读取的&#xff0c;在SparkSQL模块中提供对应接口&#xff0c;提供三种方式读取数据&#xff1a; 方式一&#xff1a;单分区模式 方式二&#xff1a;多分区模式&#xff0c;可以设置列的名称&#xff0c;作为…...

【React】React入门--更改状态、属性、表单的非受控组件和受控组件

&#x1f380;个人主页&#xff1a;努力学习前端知识的小羊 感谢你们的支持&#xff1a;收藏&#x1f384; 点赞&#x1f36c; 加关注&#x1fa90; 文章目录setState属性(props)属性vs状态非受控组件受控组件setState this.state是纯js对象&#xff0c;在vue中&#xff0c;dat…...

0216-0218复习:继承

目录 继承 一、基本介绍 二、示意图 三、基本语法 四、入门案例 父类 子类1 子类2 main方法 五、继承细节 第一条 第二条 第三条 第四条 ​编辑 第五条 第六条 第七条 第八条 第九条 第十条 六、继承本质 七、练习题 第三题 继承 一、基本介绍 继承可以…...

【数据库】HNU数据库系统期末考试复习重点

前言 今天刚结束考试&#xff0c;考的范围基本没有超过这套重点内容&#xff0c;觉得整理的这份资料还算比较有用&#xff0c;遂睡前整理了下分享给大家&#xff0c;希望能帮到要准备数据库期末又时间紧张的学弟学妹~ 文章参考&#xff1a; 1.课程老师发《数据库期末考试复习…...

SCI论文写作常见连词及适用情况

And&#xff1a;用于连接同类或相似的词、短语或句子&#xff0c;表达并列关系。Moreover&#xff1a;用于连接两个相似或相关的想法&#xff0c;表达附加的信息或思想。Furthermore&#xff1a;用于连接两个相似或相关的想法&#xff0c;表达更进一步的信息或思想。In additio…...

Spring中的数据校验--进阶

分组校验 场景描述 在实际开发中经常会遇到这种情况&#xff1a;添加用户时&#xff0c;id是由后端生成的&#xff0c;不需要校验id是否为空&#xff0c;但是修改用户时就需要校验id是否为空。如果在接收参数的User实体类的id属性上添加NotNull&#xff0c;显然无法实现。这时…...

多种方法解决谷歌(chrome)、edge、火狐等浏览器F12打不开调试页面或调试模式(面板)的问题。

文章目录1. 文章引言2. 解决问题3. 解决该问题的其他方法1. 文章引言 不论是前端开发者&#xff0c;还是后端开发者&#xff0c;我们在调试web项目时&#xff0c;偶尔弹出相关错误。 此时&#xff0c;我们需要打开浏览器的调试模式&#xff0c;如下图所示&#xff1a; 通过浏…...

默认生成的接口实现方法体的问题

随着集成开发环境越来越强大&#xff0c;编程开发工作也变得越来越高效&#xff0c;很多的代码都不需要逐字输入&#xff0c;可以利用代码生成和自动补全来辅助开发。但是这样的便利也可能引起一些疏忽&#xff0c;本文就Java开发中默认生成的接口实现方法来谈谈以前遇到的问题…...

【OJ】十级龙王间的决斗

&#x1f4da;Description: 在《驯龙高手2》&#xff0c;最精彩的高潮出现在两只阿尔法决斗的时候。 驯龙高手中的十星龙王又称喷冰龙&#xff0c;有且只有两只&#xff0c;是最大型的龙&#xff0c;所有其他龙都要膜拜它&#xff08;当然&#xff0c;幼龙除外&#xff09;&…...

java 自定义注解

文章目录前言Annotation包自定义注解自定义注解示例参考文章&#xff1a;java 自定义注解 用处_java注解和自定义注解的简单使用参考文章&#xff1a;java中自定义注解的作用和写法前言 在使用Spring Boot的时候&#xff0c;大量使用注解的语法去替代XML配置文件&#xff0c;十…...

产品经理知识体系:2.如何进行商业需求分析?

商业需求分析 思考 笔记 用户细分&#xff1a; 核心用户、用户分级 用户关系&#xff1a; 如何维护用户关系、维护等成本 关系和商业模式的整合 核心价值&#xff1a; 解决什么问题&#xff0c;满足什么需求&#xff0c;最终带给用户什么价值 渠道通道&#xff1a; 如何触达…...

EditPlus正则表达式替换字符串详解

正则表达式是一个查询的字符串&#xff0c;它包含一般的字符和一些特殊的字符&#xff0c;特殊字符可以扩展查找字符串的能力&#xff0c;正则表达式在查找和替换字符串的作用不可忽视&#xff0c;它能很好提高工作效率。EditPlus的查找&#xff0c;替换&#xff0c;文件中查找…...

Go基础-环境安装

文章目录1 Go?Golang?2 下载Go3 windows安装4 测试是否成功1 Go?Golang? Go也称为Golang&#xff0c;是Google开发的一个开源的编译型的静态语言。 Golang的主要关注点是高可用、高并发和高扩展性&#xff0c;Go语言定位是系统级编程语言&#xff0c;对web程序具有很好的支…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...