1.初识MySQL

news2025/1/13 7:25:50

初识 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.coloradmin.cn/o/1127761.html

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

相关文章

2023高频前端面试题-vue

1. 什么是 M V VM Model-View-ViewModel 模式 Model 层: 数据模型层 通过 Ajax、fetch 等 API 完成客户端和服务端业务模型的同步。 View 层: 视图层 作为视图模板存在,其实 View 就是⼀个动态模板。 ViewModel 层: 视图模型层 负责暴露数据给 View 层&…

解决oracle12c安装失败【INS-30131】执行安装程序验证所需要的初始设置失败问题

最近看到很多公司都要求会使用Oracle数据库,所以我就在网上找了Oracle教程,打算学习一下,可人生就是喜欢捉弄我,Oracle安装竟然都出了问题,别提学习了,可真让我很难受,那么安装出现了什么问题呢? 看下图: 原因 - 无法访问临时位置。 操作 - 请确保当前用户具有访问临时位置所…

muduo源码学习base——Atomic(原子操作与原子整数)

Atomic(原子操作与原子整数) 前置知识AtomicIntegerTget()getAndAdd()getAndSet() 关于原子操作实现无锁队列(lock-free-queue) 前置知识 happens-before: 用来描述两个操作的内存可见性 如果操作 X happens-before 操作 Y,那么 X 的结果对于…

极智AI | 有趣的羊驼系列大模型

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来介绍一下 有趣的羊驼系列大模型。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq "羊驼模型" 在大模型的介绍中应…

CodeWhisperer proxy代理连不上(解决)

报错: 2023-10-24 14:15:50 [INFO]: selected AWS ID sign in 2023-10-24 14:15:50 [ERROR]: API response (oidc.us-east-1.amazonaws.com /device_authorization): {} 2023-10-24 14:15:50 [ERROR]: webviewId"authWebview": Error: Webview error->…

【外汇天眼】很多交易高手都容易忽视的问题:“路径依赖”!

一、“路径依赖”与“均值回归” 在过去五到十年内,如果你一直通过采用某一策略取得持续的超额收益,那么你很难认识到这种策略可能出现错误。 即使经历了一两年的失效,大多数人都会继续相信并采用这一策略。这受到沉没成本、个人声誉以及多种…

Android Apk一键打包上传至蒲公英平台的gradle脚本

一、背景 项目中每次手动打包后,生成的测试包,都需要手动打开蒲公英平台的网址,登录账号,手动上传apk。之前写过一键上传至fir平台的脚本,想着这次可以搞一下一键打包上传至蒲公英的gradle脚本,提高下工作…

Linux下QT打开文件选择对话框时,程序报错退出

系统:Ubuntu QString fileName QFileDialog::getOpenFileName(this, "open", "./", "document Files (*.pdf)"); 调用该语句弹出文件对话框时,程序崩溃退出 错误提示: (Widget:5272): Gtk-WARNING **: 14…

73 应急响应-WEB分析phpjavaweb自动化工具

目录 应急响应:必备知识点:准备工作:有明确信息网站被入侵:无明确信息网站被入侵:常见分析方法: 演示案例:WindowsIISSql-日志,搜索LinuxBT_Nginxtp5-日志,后门360星图日志自动分析工…

Spring Cloud之服务注册与发现(Eureka)

目录 Eureka 介绍 角色 实现流程 单机构建 注册中心 服务提供者 服务消费者 集群搭建 注册中心 服务提供者 自我保护机制 原理分析 Eureka 介绍 Eureka是spring cloud中的一个负责服务注册与发现的组件,本身是基于REST的服务,同时还提供了…

虚拟化 vs. 裸金属:K8s 部署环境架构与特性对比

伴随着 IT 云化转型的逐步推进,越来越多的用户加入应用容器化改造的行列,并使用 Kubernetes(K8s)进行容器部署管理。然而,令不少用户感到困惑的是,由于大部分应用此前都部署在虚拟化或超融合环境&#xff0…

批量处理图片,轻松转换JPG到TIFF,让你的图片管理更优化!

作为图片处理的专业人士,您可能经常需要处理大量的图片文件,其中包括各种不同的格式,如JPG、PNG、GIF等。然而,不同的格式有着不同的优缺点,有时候为了更好地保存和传输图片,您可能需要将其转换为其他格式。…

NEFU系统分析与设计

系统分析与设计概述 用户故事 用来描述用户希望得到的功能 三要素:角色、活动、商业价值 举例:作为一个“网站管理员”,我想要“统计每天有多少人访问了我的网站”,以便于“我的赞助商了解我的网站会给他们带来什么收益。 系统…

Jmeter(十二):线程组元件第三方插件的线程组压力和负载线程详解

线程组(thread group) 线程组元件是任何一个测试计划的开始点。在一个测试计划中的所有元件 都必须在某个线程下。所有的任务都是基于线程组。 一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一 个虚拟用户。多个用户同时去执行相同的一批次任…

升讯威在线客服系统的并发高性能数据处理技术:为多线程处理同步数据

我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户。对我来说,只要能获得用户的认可,就是我最大的动力。 最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可。 客户组织多名客服上线后&a…

uniapp跨域

配置 /manifest.json "devServer" : { "https" : false, "port" : 7101, "proxy": { "/api": { "target": "https://域名", "changeOrigin": t…

3D模型如何添加表面贴图?

1、模型表面贴图介绍 模型表面贴图(Texture Mapping)是一种将纹理映射到三维模型表面的技术,用于增加模型的细节和真实感。它通过在模型的每个表面点上应用纹理坐标,并将纹理像素与模型的对应点进行匹配,使得模型表面…

elasticSearch put全局更新和单个字段更新语法

1、如下:更新改类型未doc(文档)的全局字段数据 注意:如果你使用的是上面的语句,但是只写了id和title并赋值,图片上其他字段没有填写,执行命令后,则会把原文档中的其他字段都给删除了,你会发现查…

prosemirror 学习记录(二)创建 apple 节点

apple type 向 schema 中添加 apple type const nodes {apple: {inline: true,attrs: {name: { default: "unknown" },},group: "inline",draggable: true,parseDOM: [{tag: "span[custom-node-typeapple]",getAttrs(dom) {return {name: dom…

【高效开发工具系列】Apifox

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…