当前位置: 首页 > news >正文

深入学习Mysql引擎InnoDB、MylSAM

目录

一、什么是MySQL

二、什么是InnoDB

三、什么是MyISAM

四、MySQL不同引擎有什么区别


 

一、什么是MySQL

MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它是由瑞典MySQL AB公司开发并推广,后来被Sun Microsystems收购,现在属于Oracle公司旗下产品。MySQL是一种客户端-服务器模式的数据库管理系统,其服务器端实现了多线程、并发控制和事务处理等功能,而客户端可以通过多种编程语言来访问和操作MySQL数据库。

MySQL具有以下特点:

  1. 开源免费:MySQL的开源许可证使其可以免费使用,并且可以根据需要进行修改和定制。

  2. 高性能:MySQL采用了多线程、异步IO等技术,具有较高的读写性能和响应速度。

  3. 可扩展性:MySQL支持分布式部署和集群架构,可以通过水平扩展来应对大规模数据和访问量的需求。

  4. 跨平台:MySQL可以在多种操作系统上运行,包括Windows、Linux、macOS等。

  5. 支持广泛的编程语言:MySQL提供了多种编程语言的API和驱动程序,可以方便地与常用的编程语言(如Java、Python、PHP等)进行交互。

  6. 数据安全:MySQL通过支持事务处理、ACID特性、数据备份和恢复等机制来确保数据的安全性和一致性。

  7. 超大规模数据存储:MySQL支持亿级别的数据存储和处理,适用于各种规模的应用场景。

MySQL在Web应用开发、数据分析、企业信息管理等领域广泛应用,它提供了强大的数据存储和查询功能,并且易于使用和管理,成为最受欢迎的开源关系型数据库之一。

 

二、什么是InnoDB

InnoDB是MySQL中的一种存储引擎(Storage Engine),用于处理MySQL数据库中的数据存储和检索。它是由Innobase Oy公司开发的,后来被Oracle Corporation收购,并成为MySQL的默认存储引擎。

InnoDB存储引擎具有以下特点:

  1. 事务支持:InnoDB是一个事务性存储引擎,支持ACID(原子性、一致性、隔离性和持久性)特性。这意味着它可以确保数据的一致性和安全性,并提供了回滚、提交和锁定机制来保护数据的完整性。

  2. 行级锁定:InnoDB支持行级锁定,这意味着在处理并发读写操作时,只锁定必要的数据行,而不是整个表。这提高了并发性能和用户的响应速度。

  3. 外键约束:InnoDB支持外键约束,可以在数据库层面实现对数据的完整性和一致性的验证。外键约束可以确保数据的引用完整性,防止数据不一致的问题。

  4. 数据完整性:InnoDB支持主键、唯一键和非空约束等数据完整性约束,可以保证数据的完整性和一致性。

  5. 高性能:InnoDB通过使用缓冲池(Buffer Pool)来提高数据访问的性能。缓冲池可以将常用的数据和索引存储在内存中,减少磁盘I/O的开销。

  6. 支持崩溃恢复:InnoDB具有崩溃恢复的能力,当数据库发生异常崩溃时,可以通过日志和恢复机制来恢复数据的一致性。

  7. 支持热备份:InnoDB支持在线热备份,可以在数据库运行时对数据进行备份,而不需要停止数据库服务。

InnoDB存储引擎在大多数情况下是MySQL的首选存储引擎,尤其适用于需要事务支持和高并发读写操作的应用场景。

 

三、什么是MyISAM

MyISAM是MySQL中的一种存储引擎(Storage Engine),它是MySQL的默认存储引擎之一。MyISAM是一种非事务性的存储引擎,主要用于读密集型的应用,比如大部分只读的Web应用或者数据仓库。以下是MyISAM的一些特点:

  1. 高性能:MyISAM在处理查询操作时表现出色,特别是对于全文搜索的支持。它使用了基于索引的查询方式,可以快速定位和检索数据。

  2. 低存储和内存占用:MyISAM的数据文件和索引文件是独立的,可以对数据和索引进行单独的操作和管理,这样可以减少存储和内存的占用。

  3. 不支持事务和并发控制:MyISAM不支持事务,也没有行级锁定的机制。这意味着在并发读写的情况下,可能会出现数据不一致的问题,需要应用层自行处理。

  4. 表级锁定:MyISAM使用表级锁定,这意味着在进行写操作时,会锁定整个表,导致其他会话无法对同一表进行写操作,可能会影响并发性能。

  5. 不支持外键约束和崩溃恢复:MyISAM不支持外键约束的定义,也没有崩溃恢复的能力。当数据库发生异常崩溃时,可能会导致数据的不一致性。

尽管MyISAM在某些场景下具有一定的优势,但由于其不支持事务和并发控制的特性,以及较低的数据完整性保障,目前在生产环境中已经逐渐被InnoDB等支持事务和并发控制的存储引擎取代。因此,对于大多数应用来说,推荐使用InnoDB作为默认的存储引擎。

 

四、MySQL不同引擎有什么区别

MySQL支持多种存储引擎,每个存储引擎都有不同的特点和适用场景。以下是一些常见的存储引擎及其区别:

  1. InnoDB:InnoDB是MySQL的默认存储引擎,支持事务处理、行级锁定、外键约束、崩溃恢复等特性,适用于高并发的应用场景。

  2. MyISAM:MyISAM是一种非事务性存储引擎,适用于读密集型应用,具有较高的性能,但不支持事务、行级锁定和崩溃恢复等功能。

  3. Memory:Memory存储引擎将数据存储在内存中,具有快速的读写性能,但数据存在于内存中,数据库重启后数据会丢失。适用于临时表、缓存等场景。

  4. Archive:Archive存储引擎适用于大量历史数据的存储和查询,具有较高的压缩比和查询速度,但不支持索引和事务,适用于数据归档等场景。

  5. NDB Cluster:NDB Cluster是一种分布式存储引擎,可将数据分布在多个节点上,提供高可用性和容错性,适用于大规模分布式数据库和高可用性需求。

  6. CSV:CSV存储引擎将数据以纯文本格式存储,适用于导入和导出数据,但不支持索引和事务。

不同的存储引擎在性能、功能、并发控制、数据一致性和可用性等方面有所差异。选择合适的存储引擎应根据具体应用需求、数据特征和性能要求来决定。

 

相关文章:

深入学习Mysql引擎InnoDB、MylSAM

目录 一、什么是MySQL 二、什么是InnoDB 三、什么是MyISAM 四、MySQL不同引擎有什么区别 一、什么是MySQL MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它是由瑞典MySQL AB公司开发并推广,后来被Sun Microsystems收…...

第七章:SpringMVC中

第七章:SpringMVC中 7.1:SpringMVC的视图 ​ SpringMVC中的视图是View接口,视图的作用渲染数据,将模型Model中的数据展示给用户SpringMVC视图的种类很多,默认有转发视图和重定向视图。 ​ 当工程引入jstl的依赖&…...

MySQL数据库——DQL操作——基本查询

文章目录 前言事前准备——测试数据整表查询指定列查找别名查询MySQL运算符条件查询模糊查询排序查询聚合查询分组查询分组之后的条件筛选 分页查询将整张表的数据插入到另一张表中 前言 MySQL数据库常见的操作是增删查改,而其中数据的查询是使用最多,也…...

Electron 开发,报handshake failed; returned -1, SSL error code 1,错误

代码说明 在preload.js代码中,暴露参数给渲染线程renderer.js访问, renderer.js 报:ERROR:ssl_client_socket_impl.cc(978)] failed; returned -1, SSL error code 1,错误 问题原因 如题所说,跨进程传递消息,这意味…...

知识区博主转型——兼做知识区和改造区博主!!!!!

想脱单的进来,一起交流如何能脱单!!! 为什么——我太羡慕有对象的人了哭死!!!!!! 你是不是很羡慕别人怎么都有女朋友 别人家的女朋友怎么都那么好&#xff…...

Resnet与Pytorch花图像分类

1、介绍 1.1数据集介绍 flower_data├── train│ └── 1-102(102个文件夹)│ └── XXX.jpg(每个文件夹含若干张图像)├── valid│ └── 1-102(102个文件夹)└── ─── └── XXX.jp…...

【NLP概念源和流】 03-基于计数的嵌入,GloVe(第 3/20 部分)

接续上文 【NLP概念源和流】 02-稠密文档表示(第 2/20 部分)...

【React】关于组件之间的通讯

🌟组件化:把一个项目拆成一个一个的组件,为了便与开发与维护 组件之间互相独立且封闭,一般而言,每个组件只能使用自己的数据(组件状态私有)。 如果组件之间相互传参怎么办? 那么就要…...

item_get-小红薯-商品详情

一、接口参数说明: smallredbook.item_get,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/smallredbook/item_get 名称类型必须描述keyString是调用key(http://o0…...

网络安全进阶学习第十课——MySQL手工注入

文章目录 一、MYSQL数据库常用函数二、MYSQL默认的4个系统数据库以及重点库和表三、判断数据库类型四、联合查询注入1、具体步骤(靶场演示):1)首先判断注入点2)判断是数字型还是字符型3)要判断注入点的列数…...

2.3 网络安全协议

数据参考:CISP官方 目录 OSI七层模型TCP/IP体系架构TCP/IP安全架构 一、OSI七层模型 简介 开放系统互连模型(Open System Interconnection Reference Model,OSI)是国际标准化组织(ISO)于1977年发布的…...

Apache Flink概述

Flink 是构建在数据流之上的一款有状态的流计算框架,通常被人们称为第三代大数据分析方案 第一代大数据处理方案:基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 ,两套独立的计算引擎,难度大(2014年9月&#x…...

django使用mysql数据库

Django开 发操作数据库比使用pymysql操作更简单,内部提供了ORM框架。 下面是pymysql 和orm操作数据库的示意图,pymysql就是mysql的驱动,代码直接操作pymysql ,需要自己写增删改查的语句 django 就是也可以使用pymysql、mysqlclient作为驱动&a…...

MongoDB文档--基本概念

阿丹: 不断拓展自己的技术栈,不断学习新技术。 基本概念 MongoDB中文手册|官方文档中文版 - MongoDB-CN-Manual mongdb是文档数据库 MongoDB中的记录是一个文档,它是由字段和值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可以包…...

【TypeScript】TS入门及基础学习(一)

【TypeScript】TS入门及基础学习(一) 【TypeScript】TS入门及基础学习(一)一、前言二、基本概念1.强类型语言和弱类型语言2.动态语言和静态语言 三、TypeScript与JavaScript的区别四、环境搭建及演练准备4.1 安装到本地4.2 在线运…...

Dockerfile构建LNMP镜像(yum方式)

目录 Dockerfile构建LNMP镜像 1、建立工作目录 2、编写Dockerfile文件 3、构建镜像 4、测试容器 5、浏览器访问测试: Dockerfile构建LNMP镜像 1、建立工作目录 [roothuyang1 ~]# mkdir lnmp/ [roothuyang1 ~]# cd lnmp/ 2、编写Dockerfile文件 [roothuyang1 …...

Flink Windows(窗口)详解

Windows(窗口) Windows是流计算的核心。Windows将流分成有限大小的“buckets”,我们可以在其上应用聚合计算(ProcessWindowFunction,ReduceFunction,AggregateFunction或FoldFunction)等。在Fl…...

AssetBundle学习

官方文档:AssetBundle 工作流程 - Unity 手册 (unity3d.com) 之前写的博客:AssetBundle学习_zaizai1007的博客-CSDN博客 使用流程图: 1,指定资源的AssetBundle属性 (xxxa/xxx)这里xxxa会生成目录&…...

CompletableFuture原理与实践

文章目录 1 为何需要并行加载2 并行加载的实现方式2.1 同步模型2.2 NIO异步模型2.3 为什么会选择CompletableFuture? 3 CompletableFuture使用与原理3.1 CompletableFuture的背景和定义3.1.1 CompletableFuture解决的问题3.1.2 CompletableFuture的定义 3.2 Complet…...

8.3 作业

整理思维导图 2. 递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位 #include <myhead.h> void fun(int t) {if(t 0) return;fun(t/10);printf("%d\n",t%10); } int main(int argc,const char *argv[]) {int t1623809; fun(t);return 0; } 3.递…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...