【Mysql】MySQL体系结构,InnoDB、MyISAM存储引擎,索引结构、分类、语法、性能分析

2023-11-08

1. MySQL体系结构

  1. 连接层

    主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

  2. 服务层

    第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等, 最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。

  3. 引擎层 [存储引擎]

    存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。 在MySQL5.5之后,MySQL默认的存储引擎就是InnoDB,InnoDB默认使用的索引结构就是B+树,上面的服务层就是通过API接口与存储引擎层进行交互的

  4. 存储层

    数据存储层, 主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

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

在这里插入图片描述

2. 存储引擎

和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎

存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的。

Oracle,SqlServer 等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎。

可以通过指定 show engines , 来查询当前数据库支持的存储引擎 :

show engines;

在这里插入图片描述
创建新表时如果不指定存储引擎,那么系统就会使用默认的存储引擎,MySQL5.5之前的默认存储引擎是MyISAM,5.5之后就改为了InnoDB。

查看Mysql数据库默认的存储引擎 , 指令 :

show variables like '%storage_engine%';

在这里插入图片描述

2.1. InnoDB

InnoDB存储引擎是Mysql的默认存储引擎。InnoDB存储引擎提供了具有提交、回滚、崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。

InnoDB存储引擎不同于其他存储引擎的特点 : 事务控制外键约束存储方式

外键约束:MySQL支持外键的存储引擎只有InnoDB, 在创建外键的时候, 要求父表必须有对应的索引 , 子表在创建外键的时候,也会自动的创建对应的索引。

存储方式
InnoDB 存储表和索引有以下两种方式 :

①. 使用共享表空间存储, 这种方式创建的表的表结构保存在.frm文件中, 数据和索引保存在 innodb_data_home_dir 和 innodb_data_file_path定义的表空间中,可以是多个文件。

②. 使用多表空间存储, 这种方式创建的表的表结构仍然存在 .frm 文件中,但是每个表的数据和索引单独保存在 .ibd 中。
/var/lib/mysql/demo01
在这里插入图片描述

2.2. MyISAM

MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务的完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以使用这个引擎来创建表 。有以下两个比较重要的特点:不支持事务不支持外键

文件存储方式

每个MyISAM在磁盘上存储成3个文件,其文件名都和表名相同,但拓展名分别是 :

.frm (存储表定义);

.MYD(MYData , 存储数据);

.MYI(MYIndex , 存储索引);
在这里插入图片描述

2.3. 存储引擎选择

在选择存储引警时,应该根据应用系统的特点选择合适的存储引警。对于复杂的应用系统,还可以根据实际情况选择多种存储引警进行组合。

lnnoDB:是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作, 那么InnoDB存储引擎是比较合适的选择。

MyISAM: 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高, 那么选择这个存储引擎是非常合适的。

3. 索引

3.1 索引概述

MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示 :
在这里插入图片描述
左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找快速获取到相应数据。

一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。索引是数据库中用来提高性能的最常用的工具

3.2. 索引优势劣势

优势:

  1. 提高数据检索的效率,降低数据库的IO成本。
  2. 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。

劣势:

  1. 索引列也是要占用空间的。
  2. 索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行INSERT、UPDATE、DELETE时,效率降低。

3.3. 索引结构

索引是在MySQL的存储引擎层中实现的,而不是在服务层实现的。所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型的。MySQL目前提供了以下4种索引类型:

  • B+TREE 索引 : 最常见的索引类型,大部分索引都支持 B 树索引。
  • HASH 索引:只有Memory引擎支持 , 使用场景简单 。
  • R-tree 索引(空间索引):空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少,不做特别介绍。
  • Full-text (全文索引 倒排索引–ES) :全文索引也是MyISAM的一个特殊索引类型,主要用于全文索引,InnoDB从Mysql5.6版本开始支持全文索引。
MyISAM、InnoDB、Memory三种存储引擎对各种索引类型的支持
索引 InnoDB引擎 MyISAM引擎 Memory引擎
B+TREE索引 支持 支持 支持
HASH 索引 不支持 不支持 支持
R-tree 索引 不支持 支持 不支持
Full-text 5.6版本之后支持 支持 不支持

我们平常所说的索引,如果没有特别指明,都是指B+树(多路搜索树,并不一定是二叉的)结构组织的索引。其中聚集索引、复合索引、前缀索引、唯一索引默认都是使用 B+tree 索引,统称为索引。

3.3.0. 二叉树

在这里插入图片描述

3.3.1. B-TREE 结构

在这里插入图片描述
动态演示:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

漫画理解B-Tree: https://zhuanlan.zhihu.com/p/54084335

3.3.2. B+Tree结构

在这里插入图片描述
在这里插入图片描述
漫画理解B+Tree:https://zhuanlan.zhihu.com/p/54102723

3.3.3. 数据库中的B+Tree

在这里插入图片描述

为什么InnoDB存储引擎选择使用B+tree索引结构?

  1. 相对于二叉树,层级更少,搜索效率高
  2. 对于B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低:
  3. 相对Hash索引,B+tree支持范围匹配及排序操作

3.4. 索引分类

索引分类
分类 含义 特点 关键字
主键索引 针对于表中主键创建的索引 默认自动创建,只能有一个 PRIMARY
唯一索引 避免同一个表中某数据列中的值重复 可以有多个 UNIQUE
常规索引 快速定位特定数据 可以有多个
全文索引 全文索引查找的是文本中的关键词,而不是比较索引中的值 可以有多个 FULLTEXT
在InnoDB存储引警中,根据索引的存储形式,又可以分为以下两种
分类 含义 特点
聚集索引(Clustered Index) 将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据 必须有,而且只有一个
二级索引(Secondary Index) 将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键 可以存在多个

3.5. 索引的语法

  1. 创建索引
CREATE [UNIOUE|FULLTEXT] INDEX index_name ON table_name ( index_col_name,... );
  1. 查看索引
SHOW INDEX FROM table_name;
  1. 删除索引
DROP INDEX index_name ON table_name;

下面是学生表的创建语句,请根据需求创建相关索引

create table student(
id int primary key,
	 name varchar(20),
	 phone varchar(11),
	 email varchar(50),
	 profession varchar(30),
	 age int,
	 gender TINYINT,
	 status TINYINT,
	 createtime datetime
);
  1. name字段为姓名字段,该字段的值可能会重复,为该字段创建索引。
  2. phone手机号字段的值,是非空,且唯一的,为该字段创建唯一索引。
  3. 为profession、age、status创建联合索引。
  4. 为email建立合适的索引来提升查询效率。

  1. 为name字段创建索引:
CREATE INDEX idx_name ON student(name);
  1. 为phone字段创建唯一索引:
CREATE UNIQUE INDEX idx_phone ON student(phone);
  1. 为profession、age和status创建联合索引:
CREATE INDEX idx_profession_age_status ON student(profession, age, status);
  1. 为email字段创建适当的索引:
CREATE INDEX idx_email ON student(email);

3.6. 性能分析

3.6.1. SQL执行频率

MVSOL客户端连接成功后,通过 show sessionloloball status 命今可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次:

SHOW GLOBAL STATUS LIKE 'Com___';

3.6.2. 慢查询日志

慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位: 秒,默认10秒)的所有SQL语句的日志MySQL的慢查询日志默认没有开启,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

# 开启MySQL慢日志查询开关
slow_query_log=1
# 设置慢日志的时间为2秒,SOL语句执行时间超过2秒,就会视为慢查询,记录慢查询日志
long_query_time=2

在这里插入图片描述
在这里插入图片描述

3.6.3. profiles详情

show profiles 能够在做SL优化时帮助我们了解时间都耗费到哪里去了。通过have profiling参数,能够看到当前MySQL是否支持profile操作:

SELECT @@have_profiling ;

在这里插入图片描述
默认profiling是关闭的,可以通过set语句在session/global级别开启profiling:

SET profiling = 1;

执行一系列的业务SQL的操作,然后通过如下指令查看指令的执行耗时:

#查看每一条SOL的耗时基本情况

show profiles;

#查看指定query id的SQL语句各个阶段的耗时情况

show profile for query query_id;

#查看指定query id的SQL语句CPU的使用情况

show profile cpu for query query_id;

3.6.4. explain执行计划
EXPLAIN 或者 DESC命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序。语法:

# 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件

在这里插入图片描述

  • id
    select查询的序列号,表示查询中执行select子句或者是操作表的顺序(id相同,执行顺序从上到下;id不同,值越大,越先执行)。
  • select_type
    表示 SELECT 的类型,常见的取值有 SIMPLE(简单表,即不使用表连接或者子查询)、PRIMARY(主查询,即外层的查询)、UNION(UNION 中的第二个或者后面的查询语句)、SUBQUERY(SELECT/WHERE之后包含了子查询)等
  • type
    表示连接类型,性能由好到差的连接类型为NULL、System、const、eq_ref、ref、range、index、all。
  • possible_keys
    显示可能应用在这张表上的索引,一个或多个。
    一般来说, 我们需要保证查询至少达到 range 级别, 最好达到ref 。
  • key
    实际使用的索引,如果为NULL,则没有使用索引。
  • key_len
    表示索引中使用的字节数,该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下,长度越短越好。
  • rows
    MySQL认为必须要执行查询的行数,在innodb引警的表中,是一个估计值,可能并不总是准确的
  • filtered
    表示返回结果的行数占需读取行数的百分比,filtered 的值越大越好
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Mysql】MySQL体系结构,InnoDB、MyISAM存储引擎,索引结构、分类、语法、性能分析 的相关文章

  • MySQL - 从另一个表插入与常量合并的数据

    我有一个包含一些数据的临时表 products temp 并且我有另一个需要将数据插入其中的表 产品 我需要在新记录上手动设置一些常量 例如vendor id 1等 是否可以在一次请求中插入临时表数据和常量 临时产品 product nam
  • 如何绑定值 INSERT INTO mysql perl

    我有下面的代码可以工作 但我需要知道如何绑定它们以确保安全 如果我只是将 new row 替换为 并将其放入执行中我收到错误 感谢您的帮助 foreach my field account field order new row param
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • MySQL如何从多个表中获取数据

    我正在寻找 php MySQL jquery 的帮助 我有2张桌子 table1表 1 有 4 列 id 标题 desc thumb img tabel2表 2 有 3 列 id 表 id img 我只想将 2 个表与 get QS 的值进
  • Yii2:无法将列值更新+1

    创建新记录时 我需要将列值更新 1 public function actionCreate model new CreateBookings if model gt load Yii app gt request gt post Yii
  • Unicode(希腊语)字符存储在数据库中,例如“??????”

    数据库中的希腊字符就像问号 我找不到解决办法 我使用 Java Swing 开发了一个应用程序 但是当我在 MySQL 中插入希腊字母时 就像问号一样 我将数据库排序规则更改为 utf8 并将列也更改为 utf8 我的项目编码设置为UTF
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的
  • 从两个表中搜索然后删除

    我有两个包含成员数据的表 与 member id 列链接 我需要搜索所有记录email列以 pl 结尾 然后 我需要为此删除两个表中的所有记录 基于 member id 是否可以通过一条 SQL 语句完成此操作 SELECT member
  • 在 PHP 中比较字符串的方式与 MySQL 相同

    我将 varchar 存储在 utf8 MySQL 表中并使用 utf8 general ci 排序规则 我在 varchar 上有一个唯一索引 我想在 PHP 中进行字符串比较 这相当于 MySQL 对索引所做的操作 一个具体的例子是 我
  • 使用 Ruby on Rails 索引多列

    我在 Mysql 数据库中有一个表 我想在其上使用多列索引 如何在不使用 mysql 控制台的情况下在 Rails 中执行此操作 在迁移定义中 您可以这样做 add index table name column1 column2
  • mysql_fetch_array while 循环。它是如何工作的?

    我已经阅读了 php net 上的该函数 但这仍然没有回答我的问题 我对 C 语言有一定的了解 并且刚刚开始使用 php 通常在 C 中 如果要执行 while 循环 则需要有一些条件来将循环推进到不再有效的点 如下所示 while x g
  • 从多个表中选择 - 一对多关系

    我有这样的表 表产品 身份证 姓名 表格图像 产品 ID 网址 订单号 表价 产品 ID 组合 货币 价格 表数量 产品 ID 组合 数量 表 Product 与其他表是一对多关系 我需要查询表并得到类似这样的结果 伪数组 ProductI
  • UNIX时间记录时区吗?

    我想问一下UNIX时间 UNIX时间是否记录时区 我将托管从美国芝加哥移至 JST 问题是我的整个 MySQL 数据库都有 UNIX 时间 芝加哥 美国时区 的记录 我有一个 PHP 代码来显示之前的时间 例如 3 天前 昨天等 当我搬到新
  • PDO::commit 之后使用 PDOStatement::rowCount 结果?

    在 MySQL 文档中 有一个关于使用的注释mysql affected rows事务提交后 http php net manual en function mysql affected rows php http php net manu
  • ER_ACCESS_DENIED_ERROR:用户 ''@'localhost' 的访问被拒绝(使用密码:NO)

    我有这个问题 我已经研究过但无法解决它 我想它与数据库权限有关 但我无法修复它 if error throw error Error ER ACCESS DENIED ERROR Access denied for user localho
  • 使用 PHP 代码和 HTML 表单将 Excel (.csv) 导入 MySQL

    我知道还有其他类似的帖子 但每个人都建议直接在 PHPMyAdmin 中将其导入 MySQL 这工作完美 但我需要通过 HTML 表单导入 PHP 到 MySQL 我想要一个收集文件的 HTML 表单 然后将该文件传递给 PHP 脚本 我想
  • 是否可以使用“WHERE”子句来选择SQL语句中的所有记录?

    晚上好 我很好奇是否可以在 SQL 语句中创建一个 WHERE 子句来显示所有记录 下面一些解释 随机 SQL 语句 Java JSP示例 正常情况 String SqlStatement SELECT FROM table example
  • 在mysql中搜索“SanF”时获取旧金山的记录

    当我搜索 SanF 时获得 San Francisco 记录 SELECT FROM table WHERE col LIKE san Works SELECT FROM table WHERE col LIKE san F Works S
  • php 崩溃后 mysql 表被锁定

    我有一个 MySQL DB 和一个 innoDB 表 我有一个 php 页面 用于连接 锁定表 进行一些更新 然后解锁表 PHP 页面通过 wamp 与 apache 一起提供 php页面将文件上传到数据库 我决定通过上传一个大小大于分配给
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin

随机推荐

  • 观察者模式(Observer)

    一 观察者模式定义 对象间的一种一对多的依赖关系 当一个对象的状态发生改变时 所有依赖它的对象都得到通知并自动更新 二 观察者模式的结构说明 1 Subject 目标对象 a 一个目标可以被多个观察者观察 b 目标可以提供添加和删除观察者
  • Linux usb gadget框架概述

    大大小小开发了四个与gadget相关的驱动 字符驱动 g multi g ether g zero 在这里把自己对gadget的开发中自己的感悟记录之 想要了解gadget 必须了解其框架 知道composite gadget udc三者之
  • Vue+百度统计 实现网页的PV和UV统计

    目录 什么是PV和UV 百度统计 VUE 验证安装 查看统计 拓展 什么是PV和UV 这里我懒得打字了 直接百度扒过来吧 这个了解知道是啥就行 百度统计 首先你要有个百度账号 自己测试的时候可以用自己的百度个人账户 项目里向公司申请企业商业
  • JAVA byte类型转String类型

    问题 RSA加密 byte类型转String类型 格式转换之后内容变了 解密解不出来 第一种方式 使用 ISO 8859 1 编码 使用此方式编码返回结果会乱码 例如 public static void main String args
  • 超详细Shell学习教程第四篇shell脚本参数化

    目录 1 1参数化实例 1 2参数处理说明 1 3带返回值的参数 书写带参数的shell脚本 1 1参数化实例 创建bash1 sh bin bash echo Shell 传递参数实例 echo 第一个参数为 1 echo 参数个数为 e
  • 学习swoole框架需要杀掉9501进程,强制的解决办法

    1 查看进程 我们运行一下命令 netstat anp grep 9501 2 看出进程29698占用的9501端口 3 强制杀死进程 kill 9 29698 强制
  • python自动化(三):selenium微博抢票(含抢票程序设计思路)

    缘起 这个故事起源于女票是一个bjd娃圈爱好者 我才知道在娃圈里经常通过微博私信的方式进行一些商品的交易 例如娃娃的面妆 衣服和娃娃本身 这就引发了抢票需求 流程 在某一个整的时间点进行微信的私信发送 排名靠前者获得 人工操作反应慢 只能提
  • 不卸载重装,直接升级TeX Live的方法(Win11)

    不卸载重装 直接升级TeX Live的方法 Win11 1 前言 前两天想要用LaTeX写中文文档 更新ctex宏包的时候想起来已经好久没有更新TeX Live版本 上网查了下 TeX Live的2022版本已经可以使用 觉得可以在写文档的
  • JVM知识总结

    第一章 书籍推荐与JVM相关面试题 1 面试题 https blog csdn net Y0Q2T57s article details 80682013 commentBox https blog csdn net Javazhoumou
  • Unity 使用VRTK获取射线检测碰触的物体信息

    steam VR 版本 SteamVR plugin for Unity v1 2 3 VRTK版本 VRTK Virtual Reality Toolkit VR Toolkit 3 3 0 检测三维物体 1 创建脚本 并获取VRTK P
  • 【100%通过率 】【华为OD机试 c++/python】查找单入口空闲区域【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 给定一个 m x n 的矩阵 由若干字符 X 和 O 构成 X 表示该处已被占据 O 表示该处空闲 请找到最大的单入口空闲区域 解释 空闲区域是
  • [技术经理]01 程序员最优的成长之路是什么?

    00前言 谈起程序员的职业规划 针对大部分的职场人士 最优的成长之路应该是走技术管理路线 而不是走技术专家路线 01关键的一步 中国自古就有 学而优则仕 的传统 发展到今天 在我们的现代企业里面 尤其是在我们的软件企业里面 就演变成了 技而
  • awk 正则表达式、正则运算符详细介绍

    前言 使用awk作为文本处理工具 正则表达式是少不了的 要掌握这个工具的正则表达式使用 其实 我们不必单独去学习它的正则表达式 正则表达式就像一门程序语言 有自己语法规则已经表示意思 对于不同工具 其实大部分表示意思相同的 在linux众多
  • numpy取值大全

    记录numpy取值的所有方法 欢迎 切片操作 整数数组索引 布尔数组索引 布尔数组索引 花式索引 数据结构化取值 欢迎 在NumPy中 可以使用切片 整数数组索引和布尔数组索引来进行取值操作 切片操作 可以使用类似于Python中的切片操作
  • c#之哈希表(Hashtable)

    using System using System Collections Generic using System Collections 哈希表的using引用 using System Linq using System Text u
  • HttpServletRequest request 获取form参数的两种方式

    java view plain copy RequestMapping value pay method RequestMethod POST public String buildRequest HttpServletRequest re
  • 计算机毕业设计ssm基于SSM+Vue的法律咨询信息系统的设计与实现5m1le9 (附源码)轻松不求人

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 ssm mybatis Ma
  • PHP之hash函数进行SHA256加密的方法

    SHA256加密的方法 function encrypt sha256 str return hash sha256 str SHA256Hex加密 function SHA256Hex str re hash sha256 str tru
  • 阿里实习offer成功上岸,这几点至关重要

    Hello 大家好 欢迎大家来到CSDN云原生计划 考生说 栏目 本期采访的是近期成功获得阿里巴巴暑假实习offer的CSDN云原生专业工程师计划学员的中南大学大三电子信息工程专业的刘贝同学和大家分享成功申请阿里巴巴暑假实习的经验以及面试经
  • 【Mysql】MySQL体系结构,InnoDB、MyISAM存储引擎,索引结构、分类、语法、性能分析

    1 MySQL体系结构 连接层 主要完成一些类似于连接处理 授权认证 及相关的安全方案 在该层上引入了线程池的概念 为通过认证安全接入的客户端提供线程 同样在该层上可以实现基于SSL的安全链接 服务器也会为安全接入的每个客户端验证它所具有的