MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎详解

MySQL高级学习笔记(三)包含了Mysql逻辑架构介绍和MySQL存储引擎详解两个部分,其中分别讲解了MySQL的重要特性和基础知识以及如何进行存储引擎的选择和操作。

Mysql逻辑架构介绍

MySQL的逻辑架构分为三层:连接层、服务层和存储引擎层。其中连接层负责处理客户端与服务器之间的连接和通信,服务层负责解析和执行SQL语句,存储引擎层负责数据存储和管理。以下是三层的详细介绍:

  1. 连接层

连接层是MySQL处理客户端连接和通信的主要位置。它负责接受客户端的连接请求,并从请求中获取客户端提供的用户信息、请求类型等信息,将请求转发给服务层,并返回服务层的响应给客户端。

示例:

客户端使用MySQL自带的命令行工具(或其他图形化客户端软件)连接MySQL服务器时,连接层接受该连接请求,并根据客户端提供的账户与密码进行验证。验证通过后,连接层将请求转发给服务层,并返回服务层的响应结果。

  1. 服务层

服务层接收连接层转发的请求,并进行SQL解析、优化和执行,然后将结果返回给连接层。服务层还负责进行事务管理,包括事务的开始、提交或回滚等操作。

示例:

当客户端执行一个查询语句时,该查询语句会由服务层进行解析和优化,然后转发给存储引擎层进行数据查询。查询结果再通过服务层返回给连接层,最终被显示在客户端中。

  1. 存储引擎层

存储引擎层为MySQL提供了不同的数据存储方式,每个存储引擎都有自己的特点和优势。MySQL中常用的存储引擎包括InnoDB、MyISAM、Memory等。存储引擎负责存储数据和读取数据,并提供数据的增删改查等操作。

示例:

如果一个数据库使用InnoDB作为存储引擎,那么当客户端执行一条更新语句时,服务层会将该操作转发给InnoDB进行数据存储、更新和删除操作,再将操作结果返回给服务层,最终通过服务层返回给客户端。

MySQL存储引擎详解

MySQL存储引擎是MySQL管理数据存储和检索的关键组件。MySQL支持多种存储引擎,每种存储引擎有各自的特点和优势,开发者在选择存储引擎时需要考虑不同的因素。

常用的存储引擎包括如下几种:

  1. InnoDB

InnoDB是MySQL默认的存储引擎,支持事务、行级锁、外键和崩溃恢复等特性,适合于高并发、高可靠性的数据库场景。

  1. MyISAM

MyISAM是MySQL最常用的存储引擎之一,支持全文本索引和表锁等特性,适合于静态数据的存储和查询,但不支持事务和行级锁。

  1. Memory

Memory是MySQL内存型存储引擎,所有的数据都存储在内存中,适合于一些读写比较频繁、数据不需要长期保存的场景,但断电、重启都会导致数据的丢失。

示例一:

当我们需要快速生成一些测试数据,并且不需要长期保存这些数据时,可以考虑使用Memory存储引擎。比如:

create table test(id int primary key, name varchar(20)) engine = memory;

insert into test(id,name) values(1,'test1'),(2,'test2'),(3,'test3');

select * from test;

示例二:

当我们需要在一个高并发的系统中运行事务,要求数据的一致性和可靠性时,可以考虑使用InnoDB存储引擎。比如:

create table user(id int primary key, name varchar(20)) engine = InnoDB;

begin;
insert into user(id, name) values(1, 'test1');
commit;

begin;
update user set name = 'test2' where id = 1;
rollback;

以上就是MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎详解的完整攻略,包括Mysql的逻辑架构分层以及常用的存储引擎的特点和使用场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • mysql 5.6.14主从复制(也称mysql AB复制)环境配置方法

    MySQL 5.6.14主从复制环境配置方法 一、前提条件 在进行MySQL主从复制环境配置前,请确保满足以下条件: 在主服务器和从服务器之间已经有网络通讯能力,可以相互访问; 主服务器和从服务器已经安装了MySQL 5.6.14版本,并且启动了MySQL服务; 主服务器的MySQL配置文件my.cnf中的server-id已经设置好。 二、配置主服务器 1…

    MySQL 2023年5月18日
    00
  • 小白的springboot之路(三)、集成mybatis与MySQL

    0、前言   mybatis属于半自动的ORM,相比hibernate这种全自动的ORM,兼顾了性能与易用;目前企业项目中,基本都是mybatis的天下;今天就来整合mybatis与MySQL; 1、整合   1.-1、添加依赖: <!– 集成mybatis –> <dependency> <groupId>org.m…

    MySQL 2023年4月13日
    00
  • 【必知必会的MySQL知识】⑤DQL语言

    目录 一、前言 二、基础查询 2.1 语法 2.2 实践操作 三、条件查询 3.1 语法 3.2 where 语句操作符 3.3 实践操作 四、排序查询 4.1 语法格式 4.2 实践操作 五、分组查询 5.1 语法 5.2 聚集函数 5.2.1 聚集函数简单使用 5.3 实践操作 5.4 规定与小结 六、连接查询(多表查询) 6.1 简介 6.2 笛卡儿积…

    MySQL 2023年5月4日
    00
  • mysql 事务隔离级别之可能出现的问题:同一事务中无法查询已插入但未提交的数据

    若要实现查询事务中已插入但是未提交的数据则需要设置MySQL事务隔离级别为 read-uncommitted 下面了解一下MySQL的事务隔离级别: 一、事务的基本要素(ACID)   1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一…

    MySQL 2023年4月13日
    00
  • MySQL存储过程

    基本构造 delimiter $$ #定义终止符,可据习惯更换 CREATE PROCEDURE method_name() #创建方法 BEGIN #方法体开始 SELECT ‘code’; #方法体,写SQL语句 END #方法体终止 $$ #存储过程终止 基本语法 1.定义终止符 delimiter $$ #$$为自定义符,可据习惯更换 2.创建方法 …

    MySQL 2023年4月18日
    00
  • MySql如何使用not in实现优化

    使用NOT IN关键字可以实现MySQL优化的关键,主要用于查询或过滤那些不在给定列表中的行。 NOT IN语法: SELECT column_name(s) FROM table_name WHERE column_name NOT IN (value1,value2,…); 假设我们有两个数据库表:students和scores。学生表student…

    MySQL 2023年5月19日
    00
  • 解决修改mysql的data_dir所引发的错误问题

    解决修改mysql的data_dir所引发的错误问题可以按照下面的步骤进行: 步骤一:停止MySQL服务 在修改MySQL的data_dir之前,需要先停止MySQL服务以避免丢失数据。可以通过以下命令停止MySQL服务: sudo systemctl stop mysql 步骤二:创建新的数据目录 可以通过以下命令创建新的数据目录: sudo mkdir …

    MySQL 2023年5月18日
    00
  • 清晰讲解SQL语句中的内连接,通用于Mysql和Oracle,全是干货哦

    本文章目的:力求清晰明了讲解SQL语句的内连接的各种应用,没有深奥的理解! 前奏:这篇文章和下篇文章会将内连接和外连接讲解清楚SQL语句的多表查询常用的有以下几种:两表联合查询(1)内连接(2)外连接(分左外连接、右外连接)(3)全外连接(4)自连接三表查询(1)三表查询本片讲解两表联合查询的内连接:第一步:准备表,员工表emp,部门表dept关联关系:员工…

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部