【第七章 MySQL体系结构、存储引擎、InnoDB、MyISAM、Memory、存储引擎特点及选择】

news2024/9/22 23:16:56

第七章 MySQL体系结构、存储引擎、InnoDB、MyISAM、Memory、存储引擎特点及选择

1.MySQL体系结构:
①连接层:
最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。
②服务层:
主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。在该层,服务器会解析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等,最后生成相应的执行操作。
③引擎层:
存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。数据库中的索引是在存储引擎层实现的。
④存储层:
主要是将数据(如: redolog、undolog、数据、索引、二进制日志、错误日志、查询日志、慢查询日志等)存储在文件系统之上,并完成与存储引擎的交互。
2.存储引擎:
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。我们可以在创建表的时候,来指定选择的存储引擎,如果没有指定将自动选择默认的存储引擎。
①建表时指定存储引擎:

CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ] ,
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) ENGINE = INNODB [ COMMENT 表注释 ] ;

②查询当前数据库支持的存储引擎

show engines;

3.InnoDB存储引擎
①InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。
②特点:
DML操作遵循ACID模型,支持事务;
行级锁,提高并发访问性能;
支持外键FOREIGN KEY约束,保证数据的完整性和正确性。
③文件:
xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结
构(frm-早期的 、sdi-新版的)、数据和索引。
参数:innodb_file_per_table

show variables like 'innodb_file_per_table';

在这里插入图片描述
如果该参数开启,代表对于InnoDB引擎的表,每一张表都对应一个ibd文件。
④逻辑存储结构:
在这里插入图片描述

① 表空间 : InnoDB存储引擎逻辑结构的最高层,ibd文件其实就是表空间文件,在表空间中可以包含多个Segment段。
②段 : 表空间是由各个段组成的, 常见的段有数据段、索引段、回滚段等。InnoDB中对于段的管理,都是引擎自身完成,不需要人为对其控制,一个段中包含多个区。
③区 : 区是表空间的单元结构,每个区的大小为1M。 默认情况下, InnoDB存储引擎页大小为16K, 即一个区中一共有64个连续的页。
④页 : 页是组成区的最小单元,页也是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默认为 16KB。为了保证页的连续性,InnoDB 存储引擎每次从磁盘申请 4-5 个区。
⑤行 : InnoDB 存储引擎是面向行的,也就是说数据是按行进行存放的,在每一行中除了定义表时
所指定的字段以外,还包含两个隐藏字段。

4.MyISAM存储引擎
①MyISAM是MySQL早期的默认存储引擎。
②特点:
不支持事务,不支持外键;
支持表锁,不支持行锁;
访问速度快。
③文件
xxx.sdi:存储表结构信息;
xxx.MYD: 存储数据;
xxx.MYI: 存储索引。
5. Memory存储引擎:
①Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。
②特点
内存存放;
hash索引(默认)。
③文件
xxx.sdi:存储表结构信息。
6. 存储引擎特点:
在这里插入图片描述面试题:InnoDB引擎与MyISAM引擎的区别 ?
①InnoDB引擎, 支持事务, 而MyISAM不支持。
②InnoDB引擎, 支持行锁和表锁, 而MyISAM仅支持表锁, 不支持行锁。
③InnoDB引擎, 支持外键, 而MyISAM是不支持的。
7. 存储引擎选择:
①InnoDB: 是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要
求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操
作,那么InnoDB存储引擎是比较合适的选择。
②MyISAM : 如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。
③MEMORY:将所有数据保存在内存中,访问速度快,通常用于临时表及缓存。MEMORY的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

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

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

相关文章

[Power Query] 日期和时间处理

Power Query查询编辑器为日期和时间数据提供了强大而快捷的处理方式 例1: 从日期中提取年、月份、日、季度、周、天等信息 数据源 步骤1:将数据源导入到Power BI Desktop,单击【转换数据】选项,进入Power Query查询编辑器界面 步骤2:选中"日期&qu…

【概念】数据仓库和数仓建模

数据仓库 数仓主要特征 面向主题:每个需求和表都属于一个主题,可以用主题来对数仓的表分门别类集成性:将异构数据源,比如MySQL和服务器埋点日志,统一转换成结构化的hive表数据存储到ODS层非易失性:对历史…

Flink系列文档-(YY12)-窗口计算

1 窗口基本概念 1.1 概述 窗口,就是把无界的数据流,依据一定规则划分成一段一段的有界数据流来计算; 既然划分成有界数据段,通常都是为了"聚合"; Keyedwindow重要特性:任何一个窗口&#xff0…

游戏开发36课 cocoscreator scrollview优化

在cocoscreator内,ScrollView控件封装的挺完美的了,不过对于一些对性能要求比较高的场景,会存在问题,以top100排行榜排行榜举例子 1、应用卡顿甚至崩溃 按照官方用例使用ScrollView,插入100个玩家的item,理…

离线安装harbor容器镜像仓库(harbor-v2.3.5)

记录:354 场景:在CentOS 7.9操作系统上,离线部署harbor容器镜像仓库集群,使用Redis为外部缓存、使用PostgreSQL为外部数据库、使用Ceph为共享存储、使用nginx为harbor的负载均衡、使用Keepalived为集群高可用、使用docker-ce操作…

【专业术语】(计算机 / 深度学习与目标检测 / 轨道交通)

专业术语-计算机 / 深度学习与目标检测 / 轨道交通一、 计算机1 IDE2 API3 CUDA Driver API3.1 cuInit - 驱动初始化3.2 关于context,有两种:3.3 CUcontext4 RuntimeAPI5 Memory5.1 关于内存,有两大类:5.1.1 CPU内存,称…

[附源码]Python计算机毕业设计Django考试系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

FISCO BCOS(二十五)———多机部署

一、基础环境搭建 1、查看当前是否安装了ssh-server服务 dpkg -l | grep ssh2、安装ssh-server服务 sudo apt-get install openssh-server3、修改配置文件"/etc/ssh/sshd_config" 4、重启openssh-server root@FISCOBCOS01:~# sudo /etc/init.d/ssh restart5、查看…

高数 |【2020数一真题】部分错题及经典题自用思路整理

T1:积分限与被积函数都等价为无穷小 T2:不连续一定不可导 T3:可微的定义 T4:收敛半径 T6:空间直线与向量 法一:

WINDOWS7-11磁盘分区教程

首先,打开计算机管理界面 以windows11为例,在任务栏搜索框内,输入“计算机管理界面” 点击打开。 然后选择存储-》磁盘管理 到这里之后,我们需要选中一个磁盘,压缩卷分出来一部分空间。为新分区做准备。 以E盘为例&a…

MapStruct与lombok加载顺序问题与annotationProcessorPaths的关系?

MapStruct是什么? MapStruct is a code generator that greatly simplifies the implementation of mappings between Java bean types based on a convention over configuration approach.——https://mapstruct.org/ 从官方定义来看,MapStruct类似于我…

C语言Socket编程,实现两个程序间的通信

文章目录server和client通信流程图实现两个程序间的通信1.服务端server2.客户端client3.怎么运行呢?4.重写代码已剪辑自: https://www.cnblogs.com/fisherss/p/12085123.html server和client通信流程图 在mooc上找到的,使用Socket客户端client和服务端server通信的…

17-JavaSE基础巩固练习:Math类API两道数学算法水题

两道算法水题(一) 一、判断质数 判断一个数是否为一个质数。 1、以前的写法 package com.app.demo26_math_api;public class Test1 {public static void main(String[] args) {/*判断n(任意整数)是否为一个质数:以前的写法:是用n对2~n之间…

JavaWeb Filter 过滤器

参考:JavaWeb过滤器(Filter)详解 1、简介 顾名思义就是对事物进行过滤的,在Web中的过滤器,当然就是对请求进行过滤,我们使用过滤器,就可以对请求进行拦截,然后做相应的处理,实现许多特殊功能。…

阿里云部署应用

安装jdk 查看已安装版本 rpm -qa | grep java yum命令查找JDK1.8软件包 yum -y list java-1.8* 安装列表中的JDK1.8软件包 yum -y install java-1.8.0-openjdk-devel.x86_64 java -version 配置环境变量 vim /etc/profile JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.…

三、内存管理 (二)虚拟存储器

目录 2.1虚拟内存的基本概念 2.2内存分配策略 2.2.1驻留集大小 2.2.2固定分配局部置换 2.2.3可变分配全局置换 2.2.4可变分配局部置换 2.3地址变换机构 2.3.1页表机制 2.3.2预调页策略和请求调页策略 2.3.3缺页中断机构 2.3.4对换区与文件区 2.3.5页面置换算法 …

搭建springWeb保姆级教程

经过我们对mybatis和spring框架的学习,我们即将要用框架进行前后端数据交互,已经脱离了那种用servlet的方式进行数据传输,今天让我们来搭建最基本的springweb框架!!! 1.创建一个web项目 1. 2. 选择一个we…

自定义线程实现c++代码回调run方法

目录 pthread_create函数介绍 前面写过一篇文章《Thread类的start()方法创建线程的底层分析》,这次来自定义一个线程,并实现在底层创建内核线程来执行用户代码。 pthread_create函数介绍 在这之前,先熟悉下Linux中创建内核线程函数pthread…

【计算机视觉】 摄像机标定

摄像机标定 齐次坐标 齐次坐标,将欧氏空间的无穷远点,与投影空间中有实际意义的消失点,建立起映射关系。 把齐次坐标转化为笛卡尔坐标的方法:是前面n-1个坐标分量分别除以最后一个分量即可 一些解释和性质: 比较好的…

Linux最常用命令用法总结(精选)

1. su 普通用户切换root用户 ubuntuubuntu20:~$ su Password: rootubuntu20:/home/ubuntu# exit exit ubuntuubuntu20:~$ 2. clear 清除当前终端显示的输出快捷键ctrlL键 3. cd 改变目录 ubuntuubuntu20:~/workspace$ cd .. ubuntuubuntu20:~$ cd / ubuntuubuntu20:/$ c…