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

yizhihongxing

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日

相关文章

  • 分库分表之ShardingSphere

    为什么要分库分表 用户请求量太大 单服务器TPS、内存、IO都是有上限的,需要将请求打散分布到多个服务器 。 单库数据量太大 单个数据库处理能力有限;单库所在服务器的磁盘空间有限;单库上的操作IO有瓶颈 。 单表数据量太大 查询、插入、更新操作都会变慢,在加字段、加索引、机器迁移都会产生高负载,影响服务。 拆分方式 垂直拆分 垂直分库 微服务架构时,业务切割…

    MySQL 2023年4月17日
    00
  • MySQL数据库防止人为误操作的实例讲解

    针对MySQL数据库防止人为误操作,我可以提供以下完整攻略: 步骤一:创建新用户并限制权限 在MySQL中创建新用户并为其指定仅可访问所需数据库、表、列等的权限,从而避免了误操作导致的数据损坏。操作步骤如下: 登录MySQL主机,在命令行或图形界面中输入如下命令: sql CREATE USER ‘username’@’localhost’ IDENTIFI…

    MySQL 2023年5月18日
    00
  • Mysql 1864 主从错误解决方法

    Mysql 1864 主从错误解决方法 背景 在使用 MySQL 主从复制的过程中,可能会出现 1864 错误。具体错误信息如下: 1864: Transaction was rolled back or aborted due to out of log space when connecting to the upper level dispatcher…

    MySQL 2023年5月18日
    00
  • mysql处理添加外键时提示error 150 问题的解决方法

    首先我们需要了解一些概念: 外键:数据库中,一个表的外键可以关联到另一个表的主键。在使用外键时,若子表中的外键引用了主表中不存在的值,则会报错。 error 150:这是MySQL中“添加外键失败”的常见错误提示,通常是由于外键定义不当导致的。 解决方法如下: 确认外键关联的主表和子表均使用InnoDB存储引擎 首先,我们需要确认外键关联的主表和子表均使用I…

    MySQL 2023年5月18日
    00
  • MySQL 并行复制方案演进历史及原理分析

    预告: 《MySQL实战》即将出版,敬请关注! 有过线上 MySQL 维护经验的童鞋都知道,主从延迟往往是一个让人头疼不已的问题。 不仅仅是其造成的潜在问题比较严重,而且主从延迟原因的定位尤其考量 DBA 的综合能力:既要熟悉复制的内部原理,又能解读主机层面的资源使用情况,甚至还要会分析 binlog。 导致主从延迟的一个常见原因是,对于 binlog 中的…

    MySQL 2023年4月11日
    00
  • mysql服务启动不了解决方案

    这里提供一份基于Ubuntu 18.04操作系统的MySQL服务无法启动的解决方案攻略,可以尝试按照以下步骤解决问题。 1. 检查MySQL服务是否正在运行 首先,我们需要检查MySQL服务是否正在运行。可以通过运行以下命令来检查它: sudo systemctl status mysql 如果看到以下输出,说明MySQL正在运行: ● mysql.serv…

    MySQL 2023年5月18日
    00
  • 详解MySQL的字符串类型

    MySQL中常用的字符串类型有以下几种: CHAR 固定长度字符串类型。定义时需要指定长度,长度范围在1-255之间。如果定义的长度大于存储的实际数据长度,则会在字符串末尾添加空格来填充。例如,定义CHAR(10)类型的字符串,如果存储了“abc”,则实际存储的内容是“abc      ”。 VARCHAR 可变长度字符串类型。定义时需要指定最大长度,长度范…

    MySQL 2023年3月9日
    00
  • mysqld_safe启动脚本源码阅读、分析

    下面是关于“mysqld_safe启动脚本源码阅读、分析”的详细攻略。 1. 确定学习目标 首先需要明确学习目标,即了解mysqld_safe启动脚本的实现原理,学习mysqld_safe启动脚本的源代码以及如何进行分析和理解。同时,了解mysqld_safe启动脚本的配置参数以及使用方法。 2. 下载源码 首先需要从MySQL官方网站 [https://d…

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