1.初识MySQL
初识 MySQL
- 1.服务器处理客户端请求
- 2.常用存储引擎
- 3.关于存储引擎的一些操作
- 3.1 查看当前服务器程序支持的存储引擎
- 3.2 设置表的存储引擎
- 3.2.1 创建表时指定存储引擎
- 3.2.2 修改表的存储引擎
- 4.总结
MySQL 默认采用 TCP/IP 的方式来处理客户端与服务器连接过程。
1.服务器处理客户端请求

- 连接管理:使用连接池的思想,客户端往服务器发送请求,服务器接收到的请求只是一个文本消息
- 解析优化
- 查询缓存
- 语法解析:从文本中解析出要查询的表、各种查询条件放到 MySQL 服务器内部使用的一些数据结构上
- 查询优化:生成查询计划,可以通过EXPLAIN 语句可以查看某个语句的执行计划
- 存储引擎
- MySQL 服务器把数据的存储和提取操作都封装到了一个名为存储引擎的模块中。
- 表是由一行一行的记录组成的,但这只是一个逻辑上的概念。在物理上如何表示记录,怎么从表中读取数据,以及怎么把数据写入具体的物理存储器上,都是存储引擎负责的事情。
- 为了实现不同的功能,MySQL提供了各式各样的存储引擎,不同存储引擎管理的表可能有不同的存储结构,采用的存取算法也可能不同。
- 存储引擎的功能就是接收上层传下来的指令,然后对表中的数据进行读取或写入操作。
为了方便管理,人们把MySQL服务器处理请求的过程简单地划分为 server 层和存储引擎层。
- 连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存取的功能划分为 server 层的功能。
- 存取真实数据的功能划分为存储引擎层的功能。
- 各种不同的存储引擎为server 层提供统一的调用接口,其中包含了几十个不同用途的底层函数,比如“读取索引第一条记录”,“读取索引下一条记录”,“插入记录”等。
所以在 server 层完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的接口获取到数据后返回给客户端就好了。
不过需要注意的一点是,server 层和存储引擎层交互时,一般是以记录为单位的。
以SELECT 语句为例,server 层根据执行计划先向存储引擎层取一条记录,然后判断是否符合 WHERE 条件,如果符合,就发送给客户端,否则跳过该记录然后继续向存储引擎索要下一条记录;依此类推。
注:
server 层在判断某条记录符合要求之后,其实是先将其发送到一个缓冲区,待到该缓冲区满了,才向客户端发送真正的记录。该缓冲区大小由系统变量 net_buffer_length 控制。
2.常用存储引擎
MySQL 支持多种存储引擎。

我们最常用的就是 InnoDB 和 MyISAM,偶尔还会提一下 MEMORY。其中 InnoDB 是 MySQL 默认的存储引擎。
存储引擎对某些功能的支持情况如下:

InnoDB 从 MySQL 5.5.5 版本开始作为 MySQL 的默认存储引擎,之前版本的默认存储引擎是 MyISAM。
3.关于存储引擎的一些操作
3.1 查看当前服务器程序支持的存储引擎
SHOW ENGINES;

- Support 列表示该存储引擎是否可用,DEFAULT 值代表当前服务器程序的默认存储引擎
- Comment 列是对存储引擎的一个描述
- Transactions 列代表该存储引擎是否支持事务处理
- XA 列表示该存储引擎是否支持分布式事务
- Savepoints 列代表该存储引擎是否支持事务的部分回滚
3.2 设置表的存储引擎
存储引擎是负责对表中数据进行读取和写入工作的,我们可以为不同的表设置不同的存储引擎。也就是说:不同的表可以有不同的物理存储结构、不同的读取和写入方式。
3.2.1 创建表时指定存储引擎
如果创建表时没有指定表的存储引擎,就会使用默认的 InnoDB。
显示地指定表的存储引擎:
CREATE TABLE 表名 (建表语句;
) ENGINE = 存储引擎名称;eg:
mysql> CREATE TABLE engine_demo_table (-> i int-> ) ENGINE = MyISAM;
Query OK, 0 rows affected (0.02 sec)
3.2.2 修改表的存储引擎
ALTER TABLE 表名 ENGINE = 存储引擎名称;eg:
mysql> ALTER TABLE engine_demo_table ENGINE = InnoDB;
mysql> SHOW CREATE TABLE engine_demo_table\G
************************* 1.row *************************Table: engine_demo_table
Create Table: CREATE TABLE 'engine_demo_table' ('i' int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.01 sec)
4.总结
MySQL 采用客户端/服务端架构,用户通过客户端程序发送增删改查请求,服务器程序收到请求后处理,并且把处理结果返回给客户端。
MySQL 安装目录的 bin 目录下存放了需多可执行文件,其中有一些是服务端程序,有一些时客户端程序。
类 UNIX 系统上启动服务器程序的方式:
- mysqld
- mysqld_safe
- mysqld.server
- mysqld_multi
在 Windows 系统上启动服务器程序的方式:
- mysqld
- 将 muyqld 注册为 Windows 服务
- net start mysqld
- net stop mysqld
启动客户端程序常用语法:
mysql -h 主机名 -u 用户名 -p密码
客户端进程和服务器进程通信方式:
- TCP/IP
- 命名管道或共享内存
- UNIX 域套接字
以查询请求为例,服务器程序在处理客户端发送过来的请求时,大致分为以下几个部分。
- 连接管理:主要负责连接的建立与信息的认证
- 解析与优化:主要进行查询缓存、语法解析、查询优化
- 存储引擎:主要负责读取和写入底层表中的数据
MySQL 支持的存储引擎有好多种,它们的功能各有侧重,我们常用的就是 InnoDB 和 MyISAM,其中 InnoDB 是服务器程序的默认存储引擎。
存储引擎常用用法:
-
查看当前服务器程序支持的存储引擎:
SHOW ENGINE; -
创建表时指定表的存储引擎:
CREATE TABLE 表名 (建表语句 ) EGINE=存储引擎名称; -
修改表的存储引擎
ALTER TABLE 表名 ENGINE=存储引擎名称;
相关文章:
1.初识MySQL
初识 MySQL 1.服务器处理客户端请求2.常用存储引擎3.关于存储引擎的一些操作3.1 查看当前服务器程序支持的存储引擎3.2 设置表的存储引擎3.2.1 创建表时指定存储引擎3.2.2 修改表的存储引擎 4.总结 MySQL 默认采用 TCP/IP 的方式来处理客户端与服务器连接过程。 1.服务器处理客…...
【列存储学习总结】
在 OpenGauss 中,列存储是一种高效的数据存储方式,它在处理分析查询和数据仓库工作负载时具有很高的性能优势。列存储将表中的数据按列存储在磁盘上,而不是按行存储,这样可以极大地提高数据读取和分析操作的效率。当涉及大量数据的…...
小记java正则表达式中matcher.find() 和 matcher.matches() 的区别
matcher.find() 顾名思义,find为查找,其功能为查找字符串中是否有符合条件的字串(包含本身),当查找到时即返回true,更多地与matcher.group(int i) 配合使用,用于从字符串中取出特定字串。 mat…...
当中国走进全球化的“深水区”,亚马逊云科技解码云时代的中国式跃升
中国跨境贸易中支付金融与服务领域的综合创新型企业连连国际的联席CEO沈恩光发现,眼下,很多跨境电商的出海方式已发生了变化。几年前,它们还主要借助第三方电商平台,而现在,更多公司开始选择通过自主渠道进入海外市场&…...
零基础Linux_21(多线程)页表详解+轻量级进程+pthread_create
目录 1. 页表详解 1.1 权限条目页框 1.2 页目录页表项 2. 线程的概念 2.1 轻量级进程 2.2 Linux的线程 2.3 pthread_create 2.4 原生线程库LWP和PID 3. 线程的公有资源和私有资源 3.1 线程的公有资源 3.2 线程的私有资源 4. 线程的优缺点 4.1 线程的优点 4.2 线程…...
nodejs+wasm+rust debug及性能分析
文章目录 背景v8引擎自带的profilelinux的perf采集wasm三方库性能分析编译debug版本wasmrust程序debug调试异常模型正常模型结论优化 参考 Node使用火焰图优化CPU爆涨 - 掘金 【Node.js丨主题周】理解perf 与火焰图-腾讯云开发者社区-腾讯云 Easy profiling for Node.js Applic…...
IP证书针对公网IP签发
很多项目应用需要采用IP地址数据桥接访问,这种情况下需要确保数据安全性及信任不被劫持的情况下,需要使用给IP地址增加数字证书进行保护。针对这种情况下我们对公网IP地址申请SSL证书做了详细的介绍,让我们可以更快地了解如何用IP地址去申请S…...
SpringBoot-集成Minio
官方文档:Kubernetes 的 MinIO 对象存储 — MinIO Object Storage for Kubernetes 一、简介 Minio 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频…...
【ML】cheatsheet
LR 原理与面试题目DT, Adaboost, GBDT, xgboost 原理 细节 与 例子 https://www.cnblogs.com/createMoMo/p/12635709.html xgboost挺详细的算法原理与例子 https://zhuanlan.zhihu.com/p/660468945 着重lightgbm就xgboost的改善方向 https://zhuanlan.zhihu.com/p/366952043机器…...
【字符串】【将字符数组转为字符串】Leetcode 122 路径加密
【将字符数组转为字符串】Leetcode 122 路径加密 解法1 在Java中,char数组没有直接的toString()方法来将其转换为字符串。如果你想将char数组转换为字符串,可以使用String类的构造函数来实现: ⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐…...
网络基础知识100问
1.什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2.OSI 参考模型的层次是什么? 有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示…...
女孩子就是要打扮漂亮,让童年不留遗憾
好的衣服当然要分享给好看的人啦! 百搭圆领卫衣,经典版型不挑人穿 复合奥利绒面料,罗纹收口设计 时尚百搭怎么穿都好看 单穿内搭都可以 卡通鹅真的好可爱 宝贝穿上去真的元气满满哦...
实现目录数据的上移(up)、下移(down)、置顶(top)、置底(bottom)的操作
ApiOperation("8-15 交接班-标签设置排序")ApiImplicitParams({ApiImplicitParam(name "id", value "id", dataType "string", required true),ApiImplicitParam(name "orgnCode", value "机构代码", dataT…...
Ubuntu 常用命令
文章目录 Linux 目录结构常用命令ls:查看目录内容pwd:查看当前目录绝对路径cd:切换目录mkdir:创建目录rm:删除文件/目录touch:创建空文件mv:移动和重命名文件/目录cp:复制粘贴cat&am…...
如何空手套白狼?一口气省7K再抓住一个7K起步的工作?
今日话题,教你如何省七千再得到一个七千起步的技能!现在网络行业已经是全世界重点发展的目标,开发行业更是各个企业重点培养,但是在学校教的网络知识太基础太老掉牙?报班随便就是小一万该如何是好呢?解决方…...
电脑主机如何选择内存条
选择计算机主机的内存模块(内存条)通常需要考虑以下因素: 类型和代数(DDR3、DDR4、DDR5等):您的主板和处理器支持的内存类型非常重要。确保内存条的类型与您的主板和处理器兼容。 容量:内存容量…...
计算机考研自命题(5)
1、C语言–求和 1、展开式求和。输入一个实数x,计算并输出下式的和,直到最后一项的绝对值小于0.00001.计算结果保留2位小数,试编程。 S x x/2! x/3! … /* 算法思想:定义一个求阶乘的函数fact(), 头文件调…...
【原创】c语言4种字符串函数的代码测试
c语言4种字符串函数的代码测试 1.字符串拼接strcat [contact] 2.字符串复制strcpy 3.带参数的字符串复制strncpy 4.字符串比较strcmp:比第一个不同字母的ascii码,如acb>abc #include<stdio.h> #include<string.h>int main() {char s1[]&…...
扩散模型学习——代码学习
文章目录 引言正文UNet网络结构训练方法DDPM采样方法讲解Context上下文信息添加DDIM的方法详解 总结参考 引言 这是第一次接触扩散模型,为了学习,这里好好分析一下他的代码 正文 UNet网络结构 这部分主要是定义一下网络结构,以及相关的网…...
redis 数据结构
一、为什么要扒一下底层技术 首先我是一个解决方案工程师,为什么要看redis底层的设计呢?总结下来分几点: 1. 让系统跑起来更放心 2. 面试中可以对跟对面的牛马侃大山、吹🐮 3. 虚一点,举一反三,学习一下…...
Blender中ACES色彩空间的配置与优化指南
1. 为什么要在Blender中使用ACES色彩空间 第一次在Blender中渲染出图时,我总觉得色彩看起来怪怪的——明明在软件里看着很鲜艳的颜色,导出后却变得灰暗;不同设备上查看同一张图,色彩表现也各不相同。后来才发现,这其实…...
从Remix到Ganache:一次智能合约部署的完整“后台日志”解读
从Remix到Ganache:智能合约部署的"后台日志"深度解析 当你第一次成功部署智能合约时,看到Ganache和Remix控制台输出的那一大串信息,是不是感觉像在看天书?那些Block Hash、Gas Used、txIndex究竟在说什么?这…...
FISCO BCOS 2.0 安装部署WeBASE与区块链浏览器
FISCO BCOS 2.0 安装部署WeBASE与区块链浏览器-对应的官网地址: WeBASE平台:https://webasedoc.readthedocs.io/zh-cn/latest/docs/WeBASE/install.html 区块链浏览器:https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/br…...
如何使用 C# 创建、修改和删除 Excel 中的 VBA 宏(无需Microsoft Excel)
目录 为什么在 Excel 中使用 VBA 宏? 配置 C# 环境以操作 Excel VBA 宏 使用 C# 在 Excel 中创建 VBA 宏 使用 C# 读取 Excel 中的 VBA 宏 使用 C# 修改 Excel 中的 VBA 宏 使用 C# 删除 Excel 中的 VBA 宏 在 Excel 中创建和编辑 VBA 宏的实用建议 常见问题…...
大麦APP抢票协议分析:从‘掌密网络’代码看移动端API安全防护
大麦APP抢票协议安全防护体系深度解析 1. 移动端API安全防护的现状与挑战 在移动互联网时代,API作为应用与服务器通信的核心通道,其安全性直接关系到业务系统的稳定性和用户数据的安全。大麦APP作为国内领先的票务平台,面临着巨大的抢票压力和…...
Coze开发自能体的费用
Coze(扣子)的计费体系在 2026 年进行了全面升级,目前主要分为 国内版 (coze.cn) 和 国际版 (coze.com) 两套独立的定价逻辑。以下是具体的费用构成:1. 国内版 (coze.cn) 计费模式国内版目前采用的是订阅制 资源包的模式ÿ…...
DFS连通域统计:岛屿数量问题及其变形
0.前言 本文我们来学习一下算法题中颇为著名的岛屿数量问题,我将会从问题本身入手,详细分析解题思路,给出完整代码并进行解析,最后简单了解一下几个岛屿问题的变种题目。 1. 问题描述 题目给出一个只含有 0 和 1 矩阵,…...
为什么说Rust是对自闭症谱系人士友好的编程语言?
程序员圈子里,Rust常常以学习路线陡峭而闻名。就我自己的个人理解来说,之所以说它“学习路线陡峭”,很大程度上都来源于以下三点:Rust有很多语法糖,而且官方把这些语法糖给设置成了默认的最佳实现的语法,还…...
暗黑破坏神II终极存档编辑指南:Diablo Edit2让你的角色随心所欲
暗黑破坏神II终极存档编辑指南:Diablo Edit2让你的角色随心所欲 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神II中加点错误而烦恼吗?还在为刷不到心仪装…...
unner = unittest.TextTestRunner() 详细解释
Python 自带单元测试框架 unittest 的核心用法,作用是:创建一个「文本模式的测试运行器」,专门用来执行你的测试用例,并在控制台 / 终端输出测试结果。 1. 逐行拆解含义 python 运行 runner = unittest.TextTestRunner()unittest:Python 内置的单元测试标准库,不用额外…...
