MYSQL存储引擎InnoDB, MyISAM简介

MYSQL存储引擎

在开始谈到mysql存储引擎之前,我们应该知道或者了解存储引擎是什么,存储引擎是为了解决什么样的问题的。

        在mysql中,存储引擎是处理不同表类型SQL操作的MySQL组件,同时MySQL服务器采用可插拔的存储引擎架构,在服务器运行时不需要重启就可以加载和卸载。

那我们为何要使用存储引擎呢?

        在MySQL对数据进行处理的过程中,我们肯定需要数据进行不同的操作,比如排序, 查找,等等,所以在操作的过程中如何存储数据,也就是该采用什么样的数据结构,以及如何保证数据读写的安全和速度等等,因此我们在不同的数据处理的情况下,就会用到不同的存储引擎。

存储引擎的分类

mysql中不同版本支持的存储引擎肯定是不相同的,这里我们可以使用指令 show engines来查看当前服务器所支持的存储引擎。

show engines;

       

其中YES表示为支持,NO表示为不支持,Default当然就表示为默认了,可以看到InnoDB是Mysql默认使用也是用途最广的存储引擎,后面一篇文章会专门提到。 (MYSQL 5.5开始成为的)

当然如果InnoDB引擎不是默认的存储引擎,可以通过命令行指定选项

default-storage-engine=InnoDB;

或者在MySQL的配置文件中配置上述选项

当然也会存在在一些业务场景下,默认存储引擎不是InnoDB且不能修改的情况这里我们在建表语句后面加上engine=InnoDB就行了

create table name{......
}engine=InnoDB;

本文大概讲述一下每个存储引擎的优势,后面关于InnoDB引擎的每个特点后面会写文章详细讲述

InnoDB存储引擎

InnoDB存储引擎是一款高可靠性和高性能的存储引擎,如果建表的时候没有指定存储引擎,也会默认使用InnoDB引擎。 他的一些优势

  • 他是遵循ACID模型的,也就是支持事务功能,事务呢又是可以回滚,提交,崩溃恢复等来保护用户数据的安全性
  • 如果发生了意外导致服务器挂掉了,无论当时数据库发生了什么,都不需要在重启数据库后执行任何的特殊操作,InnoDB引擎崩溃修复功能会自动完成崩溃之前提交的更改,并撤销崩溃前正在进行但未提交的更改,从而允许我们从中断的地方继续执行。后面都会有专题详细讲述
  • 支持行级锁,提高了多用户的读取并发性和性能。这里的行级指的是锁的力度,后面都会详细讲到的
  • InnoDB引擎维护了一个自己的缓冲池,缓冲池是一个键值对结构的形式,以SQL语句作为Key,SQL语句的执行结果作为VALUE,对于经常执行的SQL语句,同时执行出来的结果都是相同的SQL语句,缓冲池会对这样的数据进行缓存,这样从硬盘操作的数据直接变成了从内存中操作,大幅提升了效率,在专用数据库服务器上,通常80%以上的物理内存会分配给缓存池
  • InnoDB引擎优化了关于主键的查询效率,每一个InnoDB表都有一个称为聚簇索引的主键索引实现通过最少的硬盘I/O来实现对主键的查找, 后面应该出单独讲一个索引的专题
  • 为了保持数据完整性,InnoDB引擎支持Foreign Key(外键约束),在进行CRUD的时候(增删改查)的时候确保了先关表之间的一致性。
  • 当从表中反复查询相同行时,自适应哈希索引会自动接管这些查询,此时查询效率和哈希表相同,InnoDB引擎本身不支持哈希索引,但是里面设计了一个自适应哈希,后面应该也会讲到

MyISAM存储引擎

MySQL5.5之前的默认存储引擎

既然可以作为之前的默认引擎,说明肯定还是有很多优点的,他的查询效率极高,底层也是b+树,同时他有自身数据压缩的功能,表的占用空间就非常的小。但是他锁的级别是一个表级锁,也就表明了 读/写的性能其实是不那么优秀的,通常运用于中小型web应用和数据仓库配置中的只读或者主要是读的场景

       下面是MyISAM中的一些优势

  • MyISAM表的最大行数为(2^32)^2及(1.844E + 19)行
  • MyISA引擎中每个表最多可以创建64个索引,每个索引最多可以包含16个列; 一般只会设置一点,因为设置索引后,更改数据会修改很多地方
  • 支持并发插入在建表时可以输入指令,将数据文件和索引文件放在不同设备的不同目录中,从而提高访问速度,创建MyISAM文件时会生成三个文件,一个是索引文件,一个是数据文件
  • BLOB和TEXT数据类型的列也可以被索引
  • 在索引列中允许使用NULL值
  • 在MySQL启动时设置了myisam_recover_options系统变量,那么MyISAM表在打开时会进行自查,如果上一次表没有正确关闭将会修复
  • 表中varchar和char列的长度总和最多可答64kb
  • unique约束的长度不受限制

MyISAM引擎存储格式

       在MyISAM引擎中支持三种不同的存储格式,其中FIXED 静态(固定)格式和DYNAMIC 动态格式,会根据使用的列类型来自动选择,第三种是压缩格式,只能使用myisampack 实用程序生成并且是只读格式,解压使用myisam工具进行解压

       当表中没有BLOB或TEXT数据类型的时候,在使用建表语句或者修改表语句的时候,可以结合ROW_FORMAT表选项将表格式设置为FIXED或者DYNAMIC

        我们可以使用myisam实用工具对已压缩的MyISAM进行解压操作

这里的压缩格式了解一下就好了 可以去百度搜一搜或者读一读官方文档

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

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

相关文章

XLua 原理分析 三

前面已经介绍了Lua与C#的基础通信原理,和Wrap中间文件的作用。有了前面2篇的基础,大概已经能搞清这块的原理。 为了加深对这块的印象,这里开始正式分析Xlua中的Lua和C#的通信。 一、Lua如何调用CS的过程 lua的初始化代码: pri…

乌班图下的vscode粘贴代码后一直在输入CTRLV命令

最近在VMware中使用vscode开发c程序中,拷贝一段代码后,代码界面一直输入CTRLV命令,导致乌班图桌面死掉,无法操作、 解决方法: 1、强制重启。长按电源按钮强制关机,然后再次开机。 2、使用命令行界面。同时…

1.ESP32-CAM 下使用 ESP-IDF 打开摄像头

主要资料: 乐鑫官方编程指南 ESP-IDF 编程指南安信可官方模块页 安信可-ESP32-CAM摄像头开发板官方使用教程 安信可ESP32-CAM摄像头开发demo–局域网拍照、实时视频、人脸识别 (开发环境是Linux) 本文目标是在 Windows 下跑通摄像头 hello …

快手电商Android一面凉经(2024)

快手电商Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《快手电商Android一面凉经(2024)》。 面试职位: Android工程师 技术一面 面试形式…

python count返回什么

描述 count() 方法用于统计字符串中某个子字符串出现的次数,可选参数为开始搜索与结束搜索的位置索引。 语法 count() 方法语法: S.count(sub[,start0[,endlen(S)]]) 参数 sub -- 搜索的子字符串。 S -- 父字符串。 start -- 可选参数,…

【数据结构】哈希表的模拟实现

文章目录 1. 哈希的概念2. 哈希表与哈希函数2.1 哈希冲突2.2 哈希函数2.3 哈希冲突的解决2.3.1 闭散列(线性探测)2.3.2 闭散列的实现2.3.3 开散列(哈希桶)2.3.4 开散列的实现 2.4 开散列与闭散列比较 1. 哈希的概念 在我们之前所接触到的所有的数据结构…

FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 推荐课程列表 逻辑很简单 点赞数 > 500 那么符合要求的课程是: def get_like_course(db: Session):"""获取推荐课程…

一番赏小程序搭建,线上一番赏市场

一番赏作为一个经久不衰的潮流市场,一直流行于消费者市场中。一番赏商品拥有不同系列,涵盖了热门动漫、漫画、影视等主题,商品包含了手办等周边商品,具有非常大的收藏价值。相比于其他潮玩模式,一番赏的性价比更高&…

Kylin 入门教程

Apache Kylin 是一个开源的分布式数据仓库和 OLAP(在线分析处理)引擎,旨在提供亚秒级查询响应时间,即使在处理超大规模数据集时也是如此。Kylin 可以有效地将原始数据预计算为多维数据立方体(Cube),并利用这些预计算结果来提供快速查询。本文将带你从基础知识到操作实践…

GC(垃圾收集)简析:为什么Java需要它?

GC(垃圾收集)简析:为什么Java需要它? 1、什么是GC?2、为什么Java需要GC?3、总结 💖The Begin💖点点关注,收藏不迷路💖 1、什么是GC? GC&#xff…

黄果树瀑布

早上我们按计划6点吃饭,可是酒店没水了,等我们吃完饭已经近七点 ,到景区已经7点多了。景区入口的人特别多,验过包裹,只刷脸就进去了。排队坐大巴,向左是陡坡塘和七星桥。 第一站陡坡塘,服务中心…

synergy Ubuntu 18 和Windows 配置

下载链接 Windows 版本 https://altushost-swe.dl.sourceforge.net/project/synergy-stable-builds/v1.8.8-stable/synergy-v1.8.8-stable-Windows-x64.msi?viasf1Ubuntu 18 版本 sudo apt-get install synergy配置方式 我这边配置需求是 笔记本电脑(Windows系统…

为什么用LeSS?

实现适应性 LeSS是一个产品开发的组织系统,旨在最大化一个组织的适应性。关于适应性(或者敏捷性,也就是敏捷开发的初衷)我们是指优化: 以相对低的成本改变方向的能力,主要是基于通过频繁交付产生的探索。从…

基于微信小程序的搬家服务系统(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 涉及技术栈:SpringBoot、Vue、SSM、H…

【PostgreSQL 16】专栏日常

本专栏从 3 个月前开始着手准备&#xff0c;利用周末及节假日的时间来整理。 ldczzDESKTOP-HVJOUVN MINGW64 ~/mypostgres (dev) $ git lg |tee * 7a7f468 - (HEAD -> dev, origin/main, origin/dev, main) 完成服务端编程的初步整理 (6 minutes ago) <Laven Liu> * …

将手机作为服务器运行docker服务

前言 目前手机的配置并不低&#xff0c;即使是2019年生产的一加七Pro&#xff0c;配置也有12256&#xff0c;CPU是骁龙855&#xff0c;作为服务器运行着配置绰绰有余了&#xff0c;二手的价格现在是400左右也能接受。相对于是自带ups电源的便携低耗docker服务器&#xff0c;还…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第六十一章 Linux内核定时器

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十二章 LED驱动实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

【python014】Python爬取并解析潮汐天气简报-潮历数据

1.欢迎点赞、关注、批评、指正&#xff0c;互三走起来&#xff0c;小手动起来&#xff01; 【python014】Python爬取并解析潮汐天气简报-潮历数据&#xff0c;源代码下载【python014】Python爬取并解析潮汐天气简报-潮历数据&#xff0c;源代码下载【python014】Python爬取并解…

EtherNet/IP转Profinet协议转化网关(功能与配置)

如何将EtherNet/IP和Profinet网络连接通讯起来呢?近来几天有几个朋友问到这个问题&#xff0c;那么作者在这里统一说明一下。其实有一个不错的设备产品可以很轻易地解决这个问题&#xff0c;名为捷米特JM-PN-EIP。接下来作者就从该设备的功能及配置详细说明一下。 一&#xf…