系列十、存储引擎

news2024/11/27 15:26:54

一、存储引擎

1.1、概述

        大家可能没有听说过存储引擎,但是一定听过引擎这个词,引擎就是发动机,是一个机器的核心组件。 比如,对于舰载机、直升机、火箭来说,它们都有各自的引擎,引擎是它们最为核心的组件。而我们在选择引擎的时候,需要在合适的场景,选择合适的存储引擎,就像在直升机上,不能选择舰载机的引擎一样。 对于存储引擎也是一样,它是MySQL数据库的核心,我们也需要在合适的场景下选择合适的存储引 擎。
        存储引擎就是存储数据、建立索引、更新 / 查询数据等技术的实现方式 。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。我们可以在创建表的时候,来指定选择的存储引擎,如果创建表时没有指定存储引擎,那么系统将自动地选择默认的存储引擎。

1.2、分类

1.2.1、概述

        不同的数据库有不同的存储引擎,对于MySQL来说,共有11种不同类型的存储引擎,其中我们比较熟知的是InnoDB引擎和MyISAM引擎,可以使用如下sql脚本查看MySQL支持的存储引擎有哪些:

show engines;

1.2.2、InnoDB引擎

概述:

        InnoDB是一款兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后, InnoDB是MySQL默认的存储引擎。

特点:

        (1)DML 操作遵循 ACID 模型,支持事务;

        (2)行级锁,提高并发访问性能;

        (3)支持外键FOREIGN KEY约束,保证数据的完整性和正确性;

文件位置:

show variables like 'datadir';

innodb_file_per_table默认值:

show variables like 'innodb_file_per_table';

结论:通过上述指令的执行结果可以看出,默认情况下innodb_file_per_table的值是默认开启的,这就意味着对于使用InnoDB引擎的表,每一个表都对应着一个ibd文件,例如前边几个系列的文章中vhr库中使用的表,在/var/lib/mysql下的存储结构是什么样的,如下:

1.2.3、MyISAM引擎

概述:

        MyISAM是 MySQL 早期默认的存储引擎。

特点:

        (1)不支持事务,不支持外键;

        (2)不支持行锁,支持表锁;

        (3)访问速度快;

案例:创建my_isam_account表,建表时指定存储引擎为MyISAM,观察数据库中的文件信息;

DROP TABLE IF EXISTS `my_isam_account`;
CREATE TABLE `my_isam_account`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(10) DEFAULT NULL COMMENT '姓名',
  `money` double(10, 2) NULL DEFAULT NULL COMMENT '余额',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'MyISAM账户表' ROW_FORMAT = Dynamic;

MyISAM文件说明:

        xxx.MYD:存储数据

        xxx.MYI:存储索引

        xxx.sdi:存储表的结构信息

1.2.4、MEMORY引擎

概述:

      MEMORY引擎的表数据是存储在内存中的,由于受到硬件问题、断电问题的影响,只能将这些表作为临时表或缓存使用;  

特点:

        (1)内存存放,断电即失;

        (2)hash索引;

案例:创建memory_account表,建表时指定存储引擎为MEMORY,观察数据库中的文件信息;

DROP TABLE IF EXISTS `memory_account`;
CREATE TABLE `memory_account`  (
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `name` varchar(10) DEFAULT NULL COMMENT '姓名',
  `money` double(10, 2) NULL DEFAULT NULL COMMENT '余额',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = Memory CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'Memory账户表' ROW_FORMAT = Dynamic;

注意事项:引擎要写成Memory,否则报错!!!

1.2.5、InnoDB vs MyISAM vs Memory

1.3、如何选择

        在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。
        InnoDB是MySQL的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。

        如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择MyISAM存储引擎是非常合适的。

        使用Memory引擎创建的表会将所有数据保存在内存中,访问速度快,通常用于临时表及缓存,缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

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

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

相关文章

RHEL8_Linux_Ansible常用模块的使用

本章主要介绍Ansible中最常见模块的使用 shell模块文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下。 ansible 机器名 -m 模块x -a "模块的参数" 对被管理机器执行不同的操作,只需要调用不同的模块…

Pipelined-ADC设计一:序言

现在是2023年12月18日,准备开新帖,设计一个 流水线型 模数转换器( Pipelined-ADC )。记录帖,后续会放在咸鱼。同步记录,谨防盗用。 初定指标:12位50Mhz,采用2.5bit每级结构&#xff…

Goland如何进行Debug断点调试

1. 进入编辑 2. 进行编辑 3. 调试运行 将鼠标移到按钮上,即显示其功能与快捷键 4. 常用调试快捷键 按键说明F7单步执行(进入方法)F8单步执行(不进入方法)F9继续执行

如何实现TensorFlow自定义算子?

在上一篇文章中 Embedding压缩之基于二进制码的Hash Embedding,提供了二进制码的tensorflow算子源码,那就顺便来讲下tensorflow自定义算子的完整实现过程。 前言 制作过程基于tensorflow官方的custom-op仓库以及官网教程,并且在Ubuntu和Mac…

算法:单链表反转

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、问题描述 二、栈解法Stack 三、三指针法 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、问题描述 有个单链表,现…

【Qt之Quick模块】1. 概述及Quick应用程序创建流程

概述 Qt的Quick模块是用于创建现代化、动态和响应式用户界面的工具集。它是基于QML(Qt Meta-Object Language)和JavaScript的。 QML是一种声明性的语言,用于描述用户界面的结构和行为。它使用层叠样式表(CSS)的语法来…

创建型模式之简单工厂模式

一、概述 (1)简单工厂模式并不是一个标准的设计模式,但是它太常用了,简单而又神奇 (2)在简单工厂模式中用于创建实例的方法通常是静态方法,因此又被称为静态工厂方法模式 (3)要点:如果需要什么,只需传入一个正确的参…

鞋帽箱包品牌网站作用如何

鞋帽箱包是市场中很常见的产品,同时需求度又很高,是人们生活所需,除了个别高端品牌外,其它多数产品价格一般都比较低,因此很少有人会在意品牌,只要质量、价格、舒适度、美观好即可。 然而对企业来讲&#…

滑动窗口(一)

滑动窗口 什么是滑动窗口算法?通俗的来讲就是 “同向双指针” ,当一组数据的规律含有单调性的时候,就可以使用下面这套逻辑来优化暴力解法。 当两个指针同向移动的时候,类似于一个窗口在滑动。使用于在连续序列里找特殊的子串、…

计算机网络基础——网线认识与制作,线缆类型、线序、端接标准及注意事项

一、引言 网线制作是网络基础知识中不可或缺的。网络传输过程中,网线的质量和制作方法都会直接影响传输的速度和稳定性。本文将详细介绍网线制作的基础知识、线缆类型、线序、端接标准及注意事项。希望通过本文,读者能够更好地了解和掌握网线制作的方法…

PIG框架学习1——密码模式登录认证获取Token流程

文章目录 O、前言一、总流程概括:二、具体流程分析PIG提供的具体流程图:鉴权请求报文示例0、网关前置处理1、客户端认证处理2、正式接受登录请求3、组装认证对象4、认证管理器进行认证(授权认证调用)5、认证成功处理器 O、前言 对…

5G/4G工业无线通信模块:实现智能制造的关键利器

工业无线通信模块,作为实现智能制造的关键利器,正在推动着工业界的变革与创新。随着信息技术的快速发展和工业自动化的不断深入,工业无线通信模块正逐渐成为工业生产中不可或缺的重要组成部分。它不仅在工业自动化领域发挥着关键作用&#xf…

C# 使用FluentHttpClient请求WebApi

写在前面 FluentHttpClient 是一个REST API 异步调用 HTTP 客户端,调用过程非常便捷,采用流式编程,可以将所有请求所需的参数一次性发送,并直接获取序列化后的结果。 老规矩从NuGet上安装该类库: 这边一定要认准是 P…

科技云报道:至简至强,新一代服务器的算力美学

科技云报道原创。 在这个时代,数据和计算的边界正在迅速扩张。 随着云计算、物联网和人工智能的日益成熟,对算力的需求已经突破了传统的限制,进入了一个全新的阶段。在这个阶段,不仅是算力的量级发生了变化,其性质和…

计网02-计算机网络参考模型

一、OSI七层参考模型 1、分层的思想 分层模型用于网络协议的设计方法,本质是将网络节点间复杂的通信问题分成若干简单的问题逐一解决,通过网络的层次去找问题,将复杂问题简单化。 2、OSI参考模型 由于早期计算机厂商使用的是私有的网络模…

图书管理系统jsp + servlet+mysql

图书管理系统 项目使用jsp servletmysql实现; 登陆注册 首页 首页显示图书信息 图书管理 1添加书籍 2查询书籍 3预览书籍 4修改书籍 用户管理 1查询用户 2修改用户 3 删除用户 链接:https://pan.baidu.com/s/1QXK--ypb6OadbmKFlc0jUQ

c语言:[输出函数]与[输入函数]|要点简述

一、【输出函数】 printf() 与 puts()的不同点 1、printf()函数 printf()支持单个字符%c的输出,以及字符串%s的输出。 (1)如果是以%c的形式输出,是一个字符一个字符的输出。因此,要用一个循环语句,把字符逐个输出。 (2)而用%…

速学数据结构 | 树 森林 二叉树 的概念详讲篇

🎬 鸽芷咕:个人主页 🔥 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 📋 前言 🌈hello! 各位宝子们大家好啊,关于线性表我们已经在前面更新完了…

详细解析“由于找不到msvcp140.dll无法继续执行代码”的原因及解决方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是找不到某个动态链接库文件,比如msvcp140.dll。这个问题可能会影响到我们的正常使用,因此了解其原因并找到解决方法是非常重要的。本文将从多个方面分析找不到msvcp140…

买显卡别再只看N、A两家了,这些高性价比I卡也很香

谈起独立显卡,相信不少朋友都会第一时间想起NVIDIA与AMD这两家巨头。然而,除了这两家巨头以外,凭借集显占据全球最高显卡市场份额的英特尔在2021年正式入局了独显市场,并在去年9月的时候公布了Arc A系列显卡阵容,型号从…