1.初识MySQL

初识 MySQL

  • 1.服务器处理客户端请求
  • 2.常用存储引擎
  • 3.关于存储引擎的一些操作
    • 3.1 查看当前服务器程序支持的存储引擎
    • 3.2 设置表的存储引擎
      • 3.2.1 创建表时指定存储引擎
      • 3.2.2 修改表的存储引擎
  • 4.总结

MySQL 默认采用 TCP/IP 的方式来处理客户端与服务器连接过程。

1.服务器处理客户端请求

在这里插入图片描述

  1. 连接管理:使用连接池的思想,客户端往服务器发送请求,服务器接收到的请求只是一个文本消息
  2. 解析优化
    • 查询缓存
    • 语法解析:从文本中解析出要查询的表、各种查询条件放到 MySQL 服务器内部使用的一些数据结构上
    • 查询优化:生成查询计划,可以通过EXPLAIN 语句可以查看某个语句的执行计划
  3. 存储引擎
    • 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=存储引擎名称;

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

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

相关文章

Python 面向对象编程:类、对象、初始化和方法详解

Python 是一种面向对象的编程语言。在 Python 中,几乎所有东西都是对象,都具有其属性和方法。 类似于对象构造函数或用于创建对象的“蓝图”的类。 创建一个类 要创建一个类,请使用关键字 class: 示例,创建一个名为…

二进制部署k8s

常见的K8S安装部署方式 ●Minikube Minikube是一个工具,可以在本地快速运行一个单节点微型K8S,仅用于学习、预览K8S的一些特性使用。 部署地址:https://kubernetes.io/docs/setup/minikube ●Kubeadm Kubeadm也是一个工具,提供…

springcloud笔记 (8) -网关 Gateway

网关 出国需要过海关 网关:网络的关卡 网关的作用 1:路由转发 2:安全控制 保护每个服务,不需要将每个暴露出去 3:负载均衡 1.没有网关:客户端直接访问我们的微服务,会需要在客户端配置很多…

OpenCV官方教程中文版 —— 直方图均衡化

OpenCV官方教程中文版 —— 直方图均衡化 前言一、原理二、 OpenCV 中的直方图均衡化三、 CLAHE 有限对比适应性直方图均衡化 前言 本小节我们要学习直方图均衡化的概念,以及如何使用它来改善图片的对比。 一、原理 想象一下如果一副图像中的大多是像素点的像素值…

c++编译使用log4cplus

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、log4cplus是什么?二、使用步骤1.下载源代码2.开始配置1.配置介绍2.开始编译 3.cmake引用4.示例 总结 前言 C很强大,但是仍然有很多…

SOFAStack软件供应链安全产品解析——SCA软件成分分析

近年来,软件供应链安全相关攻击事件呈快速增长态势,造成的危害也越来越严重,为了保障软件供应链安全,各行业主管单位也出台了诸多政策及技术标准。基于内部多年的实践,蚂蚁数科金融级云原生PaaS平台SOFAStack发布完整的…

GEE案例——一个完整的火灾监测案例dNBR差异化归一化烧毁指数

差异化归一化烧毁指数 dNBR是"差异化归一化烧毁指数"的缩写。它是一种用于评估卫星图像中烧毁区域严重程度的遥感指数。dNBR值通过将火灾前的归一化烧毁指数(NBR)减去火灾后的NBR来计算得出。该指数常用于野火监测和评估。 dNBR(差异化归一化烧毁指数)是一种用…

linux安装node(含npm命令) 并配置淘宝镜像源

1. 下载压缩包 wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz # node14 https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz # 推荐将压缩包放置到/usr/local/node文件夹中安装 mv node-v16.14.0-linux-x64.tar.xz /usr/local/node …

maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories

前言 略 说明 新设备上安装了mvn 3.8.5,编译新项目出错: [ERROR] Non-resolvable parent POM for com.admin.project:1.0: Could not transfer artifact com.extend.parent:pom:1.6.9 from/to maven-default-http-blocker (http://0.0.0.0/): Bl…

【网安大模型专题10.19】※论文5:ChatGPT+漏洞定位+补丁生成+补丁验证+APR方法+ChatRepair+不同修复场景+修复效果(韦恩图展示)

Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT 写在最前面背景介绍自动程序修复流程Process of APR (automated program repair)1、漏洞程序2、漏洞定位模块3、补丁生成4、补丁验证 (可以学习的PPT设计)经典的…

回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测

回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入单输出回归预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-LSTM贝叶斯优化长短期神经网络多输入…

SOLIDWORKS 2024新功能 3D CAD三维机械设计10大新功能

SOLIDWORKS 2024新增功能 - 3D CAD三维机械设计 10大新增功能 1. 先前版本的兼容性 •利用您订阅的 SOLIDWORKS,可将您的 SOLIDWORKS 设计作品保存为旧版本,与使用旧版本 SOLIDWORKS 的供应商无缝协作。 •可将零件、装配体和工程图保存为最新版本…

ElasticSearch中关于Nasted嵌套查询的介绍:生动案例,通俗易懂,彻底吸收

题注:随着对ES接触的越来越深入,发现此前了解的ES知识点有点单薄,特此寻来ES知识点汇总成的一个思维导图,全面了解自己掌握了哪些,未掌握哪些。此外,作者斌并没有足够的精力学习ES全部的知识点,…

运行报错(三)git bash报错fatal: detected dubious ownership in repository at

报错现象 在运行git 命令时,出现报错 “fatal: detected dubious ownership in repository at” 报错原因 文件夹的所有者和现在的用户不一致 栗子: 文件夹的所有者是root,而当前用户是admin 解决方案 方法一、 将文件夹的所有者替换成ad…

网络原理之UDP协议

文章目录 前言应用层协议常见的几种数据格式1. xml2. JSON3. protobuffer 端口号传输层UDP 报文协议格式源端口号和目的端口号UDP 长度校验和 前言 前面我们学习了如何使用 UDP 数据报 和 TCP 流实现网络编程一个回显服务器,在知道了 UDP 和 TCP 协议的基本原理之后…

Unity性能优化一本通

文章目录 关于Unity性能优化一、资源部分:1、图片1.1、 图片尺寸越小越好1.2、使用2N次幂大小1.3、取消勾选Read/Write Enabled1.4、图片压缩1.5、禁用多余的Mip Map1.6、合并图集 2、模型2.1.限制模型面数2.2.限制贴图的大小2.3.禁用Read/Write Enables2.4.不勾选其…

行情分析——加密货币市场大盘走势(10.25)

目前大饼继续上涨,还没有看到震荡盘整的迹象。从MACD日线来看,连续绿色实心柱已经10天。现在有点上涨无力了,而现在入场做空性价比更高,看反弹到33000-32000。如果谨慎点,可以继续等待。 以太目前来看和大饼一样那个也…

深度学习使用Keras进行迁移学习提升网络性能

上一篇文章我们用自己定义的模型来解决了二分类问题,在20个回合的训练之后得到了大约74%的准确率,一方面是我们的epoch太小的原因,另外一方面也是由于模型太简单,结构简单,故而不能做太复杂的事情,那么怎么提升预测的准确率了?一个有效的方法就是迁移学习。 迁移学习其…

LeetCode88——合并两个有序数组

LeetCode88——合并两个有序数组 1.题目描述: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减…

关于c语言,你必须了解的运行流程

流程图 1.程序的翻译环境和执行环境 在ANSIC任何一种实现下,都存在两种环境,程序的翻译环境和执行环境 翻译环境:将源代码转换成机器指令 执行环境:用于执行代码 2.详解编译链接 简单的说一个代码从编写到看到控制台的结果分为编译链接两步即可,接下来我们将详细解释编译链接中…