Mysql之存储引擎概述

文章目录

  • 存储引擎
    • MySQL体系结构
    • 存储引擎特点
      • InnoDB
      • MyISAM
      • Memory
      • 总结
    • 存储引擎选择

存储引擎

MySQL体系结构

  • 连接层:最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
  • 服务层:第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如过程、函数等。
  • 引擎层:存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。
  • 存储层:主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。

在创建表时,指定存储引擎

CREATE TABLE 表名(

字段1 字段1 类型 [COMMENT 字段1注释],

… …

字段n 字段n 类型 [COMMENT 字段n注释]

) ENGINE = INNODB [COMMENT 表注释];
查看当前数据库支持的存储引擎

SHOW ENGINES;

存储引擎特点

InnoDB

介绍:InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎。

特点:DML操作遵循ACID模型,支持事务;行级锁,提高并发访问性能支持外键FOREIGN KEY约束,保证数据的完整性和正确性

文件:

xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。

参数:innodb_file_per_table

在这里插入图片描述

MyISAM

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

特点

  1. 不支持事务,不支持外键
  2. 支持表锁,不支持行锁
  3. 访问速度快

文件:

​ xxx.sdi:存储表结构信息
​ xxx.MYD:存储数据
​ xxx.MYI:存储索引

Memory

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

特点:内存存放;hash索引(默认)

文件:xxx.sdi:存储表结构信息

总结

特点InnoDBMyISAMMemory
存储限制64TB
事务安全支持
锁机制行锁表锁表锁
B+tree索引支持支持支持
Hash索引支持
全文索引支持,5.6之后支持
空间使用N/A
内存使用中等
批量插入速度
支持外键支持

存储引擎选择

在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。

InnoDB:是Mysql的默认存储引擎,支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择

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

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

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

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

相关文章

Rust多线程编程概述

【图书介绍】《Rust编程与项目实战》-CSDN博客 《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com) Rust到底值不值得学,之一 -CSDN博客 Rust到底值不值得学,之二-CSDN博客 12.2.1 线程的基本概念 线程&…

随手记:小程序体积超出2M包大小如何优化

小程序的包体积限制是2M,超出包大小如何优化 先简单列出,最近比较忙,后续优化明细,有着急的先留言踢我 1.分包 留几个主要的页面体积小的,剩下的在page.json中拆到subpackages中,简单举个例子 "page…

58、Python之函数高级:不定参数的函数,写出更加通用的装饰器

引言 上一篇文章中,我们见到引入了Python中的装饰器,通过一个简单的案例实现了一个初步的装饰器,但是,这个装饰器其实是有些缺陷。这一篇文章中,我们对上一篇文章中的装饰器进行一个优化升级,从而写出更加…

【王树森】RNN模型与NLP应用(5/9):多层RNN、双向RNN、预训练(个人向笔记)

Stacked RNN(多层RNN) 1. 原理 多个全连接层可以堆叠,多个卷积层也可以堆叠。同理:RNN也可以堆叠形成多层RNN。 如下图所示:对于每一个时刻的输出 h t h_t ht​,它既会作为下一个时刻的输入,…

ElasticSearch学习笔记(三)RestClient操作文档、DSL查询文档、搜索结果排序

文章目录 前言5 RestClient操作文档5.4 删除文档5.4 修改文档5.5 批量导入文档 6 DSL查询文档6.1 准备工作6.2 全文检索查询6.3 精准查询6.4 地理坐标查询6.5 复合查询6.5.1 相关性算分6.5.2 布尔查询 7 搜索结果处理7.1 排序7.1.1 普通字段排序7.1.2 地理坐标排序 前言 Elast…

Git 下载安装使用基本教程

一、下载 Git,并安装 Git for Windows, 无脑安装。安装完,鼠标右键,会看到这两个东西。 二、Gitee操作 新建仓库 初始化 readme 文件 点击克隆 复制地址 右键 git clone 第一次会需要你输入账号密码 输入后拉取成功。 把想要上传…

【安全生产】叉车安全带报警器有哪些特点?

叉车安全带报警器是用于防止在叉车发生猛烈碰撞或紧急制动时,司机不与方向盘、挡风玻璃等发生二次碰撞或抛出车外,从而造成的严重伤害的一种叉车安全装置、配件。 很多司机在开叉车时经常有不系安全带的习惯,有很多不负责任的人会认为&#…

PHP一键发起灵活定制多功能投票小程序系统源码

​一键发起,灵活定制 —— 多功能投票小程序 🚀【开篇:告别繁琐,投票新体验】🚀 还在为组织投票活动而头疼不已吗?繁琐的流程、有限的选项、难以统计的结果...这些都将成为过去式!今天&#x…

MyPrint打印设计器(六)svg篇-直线

svg-二阶贝塞尔曲线 介绍一款强大的svg操作库,能够通过简单的代码,实现svg绘制与操纵,实现拖拽等功能 代码仓库 在线体验 代码仓库:github 代码仓库:gitee 实战项目:MyPrint 操作简单,组件丰富…

notepad++将换行替换成空

将多行里的换行置为一行,例如将下面的6行置为3行 crrlH打开替换框, 替换目标为【,\r\n】,替换成空,勾选循环查找和 正则表达式,全部替换即可。 替换后的效果

【AI】Pytorch_模型构建

建议点赞收藏关注!持续更新至pytorch大部分内容更完。 本文已达到10w字,故按模块拆开,详见目录导航。 整体框架如下 数据及预处理 模型及其构建 损失函数及优化器 本节目录 模型线性回归逻辑回归LeNetAlexNet 构建模块组织复杂网络初始化网络…

中国各地级市的海拔标准差

海拔标准差是衡量地理测量准确性的重要指标,它通过计算特定地点的海拔测量值与平均海拔之间的偏差来评估数据的可靠性。较小的标准差意味着测量结果较为一致,而较大的标准差则可能指出数据的波动性或测量误差。 计算方法 海拔标准差的计算遵循以下公式…

【pycharm-乱码】简单记录一下都有哪些涉及编码

控制台 路径:setting-》general-》console setting-》editor-》file encodings 路径:setting-》editor->file and code templates #!/user/bin/env python3 # -*- coding: utf-8 -*-setting->tools->ssh terminal

新款14 英寸和16英寸MacBook Pro开始组装生产

据 DigiTimes 报道,苹果的供应链已于 8 月开始批量生产搭载 M4 Pro 和 M4 Max 芯片的下一代 14 英寸和 16 英寸 MacBook Pro 机型。这意味着笔记本电脑的组装工作很可能已经开始。 此信息与显示行业分析师 Ross Young 的说法相符,他声称下一代 14 英寸和…

Edge资源占用优化:调整浏览器设置与关闭自动更新检查

最近,作者在学习过程中,打开任务管理器的时候注意到,即使没有打开浏览器,edge依然有着内存占用较高的情况: 于是就在网上收集了一些后台调优的方法,如果各位朋友有更多优化浏览器资源占用的方法&#xff0c…

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器)

智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序(KNN分类器) 文章目录 一、基本原理原理流程举个例子总结 二、实验结果三、核心代码四、代码获取五、总结 智能优化特征选择|基于鲸鱼WOA优化算法实现的特征选择研究Matlab程序&#x…

【Linux系统】线程的同步 生产消费模型

同步 同步概念 同步:在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步 竞态条件:因为时序问题,而导致程序异常,我们称之为竞态条件。在线程场…

[OpenCV] 数字图像处理 C++ 学习——13Canny边缘检测 附完整代码

文章目录 前言1.理论基础(1)高斯模糊平滑图像(GaussianBlur)(2)计算图像梯度(Sobel/Scharr)(3)非极大值抑制 (Non-maximum Suppression)(4)双阈值检测 (Double Threshold)(5)边缘跟踪(通过滞后处理) 2.代码实现3.完整代码 前言 Canny 边缘检测(高斯滤波…

django学习入门系列之第十点《django中数据库操作--创建与删除表》

文章目录 django创建与删除表开始创建表创建指令新增表删除表删除列新增列修改报错提示语言总结 往期回顾 django创建与删除表 删除表 创建表 修改表 操作目录 开始创建表 class text_into(models.Model):name models.CharField(max_length32)password models.CharField…

Electron快速上手

什么是Electron 一款应用广泛的跨平台的桌面应用开发框架。Electron的本质是结合了 Chromium 与Node.js。使用HTML、CSS、JS 等Web技术构建桌面应用程序。 .vue,.tsx,.less,.ts也可以使用 Electron 流程模型 主进程是纯node环境,可以访问__dirname,fs模块等&#…