MySQL的数据库引擎介绍

article/2025/11/7 20:50:52

1、什么是数据库引擎

    数据库引擎就是操作数据库的一段程序或程序段,用于存储、处理和保护数据的核心服务。

    利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。数据库应用项目是通过数据库引擎与数据库链接的。

    何为数据库引擎?简而言之,数据库引擎就是驱动各种数据库的程序,它负责处理数据库相关工作的整个核心部份。同样的,数据库应用项目的操作指令,均会通过数据库引擎的处理作用到数据库上。

    MySQL是常用的数据库软件。它有诸多的优点,如开源的,免费的等。其实它还有一个很好的特点,那就是有多种引擎可以供你选择。MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。MYSQL常用2个引擎分别是MyISAMInnoDB

2、MyISAM

    在MySQL 5.5.8版本之前,MyIASM是默认存储引擎,但它没有提供对数据库事务的支持,也不支持行锁和外键,因此当INSERT或UPDATE数据时即写操作需要锁定整个表,效率便会低些,MyISAM主要面向一些OLAP(On-Line Analytical Processing)应用。

    不过和Innodb不同,MyIASM中存储了表的行数,于是SELECT COUNT(*) FROM TABLE时只需要直接读取已保存好的值而不用全表扫描。如果表的读操作远远多于写操作且不需要数据库事务支持,那么MyIASM也是很好的选择。

    此外,MyISAM另外一个与众不同的地方在于,它的缓冲只缓冲索引文件,而不缓冲数据文件,这点和大多数数据库都非常不同。

    MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。MyISAM的索引方式也叫“非聚集”的,这么称呼是为与InnoDB的聚集索引区分。下图是MyISAM主键索引的原理图:

3、InnoDB

    MySQL 5.5.8开始,默认的存储引擎为InnoDB。Innodb引擎提供对数据库ACID事务的支持,且实现了SQL标准的四种隔离级别,其设计目标主要面向OLTP(On-Line Transaction Processing)的应用。

    该引擎还提供了行锁和外键约束,支持一致性的非锁定读,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但该引擎不支持FULLTEXT类型的索引,且没有保存表的行数,当SELECT COUNT(*) FROM TABLE时要扫描全表。

    当要使用数据库事务时,该引擎是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。

    但使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。

    Innodb引擎的索引结构同样也是B+Tree,但Innodb的索引文件本身就是数据文件,即B+Tree的数据域存储的就是实际的数据,这种索引就是聚集索引。这个索引的key就是数据表的主键,因此InnoDB表数据文件本身就是主索引。

    因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。

    并且和MyISAM不同,InnoDB的辅助索引数据域存储的也是相应记录主键的值而不是地址,所以当以辅助索引查找时,会先根据辅助索引找到主键,再根据主键索引找到实际的数据。

    所以Innodb不建议使用过长的主键,否则会使辅助索引变得过大。建议使用自增的字段作为主键,这样B+ Tree的每一个结点都会被顺序的填满,而不会频繁的分裂调整,可以有效的提升插入数据的效率。Innodb的主键索引和辅助索引如下图所示:

 

 

    InnoDB 表是基于聚簇索引建立的。因此InnoDB 的索引能提供一种非常快速的主键查找性能。不过,它的辅助索引(Secondary Index, 也就是非主键索引)也会包含主键列,所以,如果主键定义的比较大,其他索引也将很大。如果想在表上定义 、很多索引,则争取尽量把主键定义得小一些。InnoDB 不会压缩索引。 

4、MyISAM与InnoDB的区别

    InnoDB和MyISAM是使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。

    基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

以下是一些细节和具体实现的差别:

(1)InnoDB不支持FULLTEXT类型的索引;
(2)InnoDB 中不保存表的具体行数,也就是说,执行select count(*) fromtable时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时,两种表的操作是一样的;
(3)对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
(4)DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除;
(5)LOAD TABLE FROMMASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但对于使用的额外的InnoDB特性(例如外键)的表不适用。
(5)主索引的区别,InnoDB的数据文件本身就是索引文件,而MyISAM的索引和数据是分开的。
(6)辅助索引的区别:InnoDB的辅助索引data域存储相应记录主键的值而不是地址。而MyISAM的辅助索引和主索引没有多大区别。

    

  • MyISAM适合:

(1)做很多count 的计算;
(2)插入不频繁,查询非常频繁;
(3)没有事务。

  • InnoDB适合:

(1)要求事务;
(2)表更新和查询频繁
(3)大尺寸的数据集趋向于选择InnoDB引擎,因为它支持事务处理和故障恢复。数据库的大小决定了故障恢复的时间长短,InnoDB可以利用事务日志进行数据恢复,这比较快。


http://chatgpt.dhexx.cn/article/xX46VWnw.shtml

相关文章

CY7C68013 内存溢出问题

最近在开发CY68013 USB芯片的时候,开发环境(keil C51),开始的时候都编译正常,但是在我增加了一些变量和操作后,出现了很多的报错,提示内存溢出 *** ERROR L107: ADDRESS SPACE OVERFLOW 之前的…

基于CY7C68013A usb转mdio win10 64bit

基于CY7C68013A usb转mdio win10 64bit 1、芯片简介: 目前市场上主流的实现USB通信的方案主要是基于stm32(基于目前比较流行的DAPLink方案)/ft232/ch341等,CY7C68013A芯片历史较久,价格也相对偏高但USB通信设计的方法应该都是一致的。 手上…

CY7C68013与FPGA接口的Verilog

USB(通用串行总线)是英特尔、微软、IBM、康柏等公司1994年联合制定的一种通用串行总线规范,它解决了与网络通信问题,而且端口扩展性能好、容易使用。最新的USB2.0支持3种速率:低速1.5 Mbit/s,全速12 Mbit/s,高速480 Mb…

CY7C68013A之LED闪烁

#include "fx2.h" #include "fx2regs.h"sbit LED_PIN IOD ^ 3;main() {unsigned long i 0;OED | 0x08; //PD3 Output Enable;while(TRUE){if( i > 50000 ){i 0;LED_PIN ~LED_PIN;}} } 程序下载 Download是将程序下载到RAM,Lg E…

CY7C68013与FPGA接口的Verilog_HDL实现

USB(通用串行总线)是英特尔、微软、IBM、康柏等公司1994年联合制定的一种通用串行总线规范,它解决了与网络通信问题,而且端口扩展性能好、容易使用。最新的USB2.0支持3种速率:低速1.5 Mbit/s,全速12 Mbit/s,高速480 Mb…

cy7c68013linux驱动,CY7C68013A USB Board教程2:CY7C68013A USB Board驱动安装

2、我们打开软件,看看可以怎么加载驱动: 3、这里面涉及到模块的VID和PID,具体怎么看呢,详见下图: 4、接着就是修改驱动文件上的VID和PID了,我们打开安装路径下的驱动目录,如下: 5、找…

FPGA----CY7C68013使用记录

一、CY7C68013简介 CY7C68013是Cypress公司的FX2系列芯片,是一款USB2.0芯片,最大传输速度60MByte/S ,半双工通信方式。 功能引脚说明FD0~FD718~25数据线低字节FD8~FD1545~52数据线高字节 FIFOADDR0 FIFOADDR1 37 38 地址线,接收…

数字图像介绍

一、什么是数字图像 数字图像就是将图像用数字表示。 二、数字图像的起源 三、常见的成像方式 电磁波,最基本的单元叫做光子。 光子具有能量。能量E h*f。h是常数,f是频率。 又频率与波长成反比。 3.1 gama射线成像 在核聚变…

数字图像处理(1)——认识数字图像

目录 1、数字图像的构成 2、不同环境图像的存储方式 2.1、计算机中的颜色是离散的 2.2、MATLAB、OpenCV、Python中的图像都是什么 3、图像中的信息 4、数字图像处理的基本步骤 5、预备知识 5.1、邻接性、连通性、区域和边界 5.1.1 邻接性 5.1.2、连通性 5.1.3、区域…

数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法IC-GN的数值解计算

目录 前言内容回顾一.IC-GN中增量 Δ P \Delta \boldsymbol P ΔP的数值解二.写在最后参考引用 前言 由于本人近期正在展开数字图像相关技术用于测量材料形变方向的研究,其中需要对别人现有算法的复现和调研,尽管其中很多算法都已经非常成熟&#xff0c…

数字图像处理:像素间的一些基本关系

图像分析的主要目的之一在于获取图像中感兴趣的目标并对目标之间的关系进行分析;目标是由图像中相关像素联合组成的;相关像素在空间的位置和属性都有密切关系,它们一半构成图像中连通组元;所以要分析像素之间的关系,不…

数字图像和数字图像处理

Digital Image Processing[数字图像和数字图像处理] 数字图像就是指代表图像的矩阵。 数字图像处理就是对图像矩阵进行各种数学运算。 在进行图像处理时需要一些数学基础,主要包括线性系统、傅立叶变换、沃尔什变换和小波变换等。 1. 景象:人眼所看到的外部世界。…

数字图像基本处理算法

数字图像基本处理算法 xizero00 常熟理工学院(CIT) 计算机科学与工程学院 下一代互联网实验室(NGIL Lab) Email:xizero00163.com 由于SIFT算法需要用到很多算法,所以这段时间研究了一下一些最基本的图像处理算法, 好了&…

图像理论知识_什么是数字图像处理?

数字图像处理,即数字,将图像转化为数字的形式,对图像做处理,我们平时所见到的图像,在计算机中都是一组数字,当通过相机捕获现实世界的景物时,相机会捕获现实世界的光源信号,并转化为…

数字图像简介及表示

数字图像处理 数字图像处理(Digital Image Processing)又称为计算机图像处理,是一种将图像信号数字化后利用计算进行处理的过程。图像 图像是三维世界在二维平面的表示,具体来说就是用光学器件对一个物体,一个人或是…

数字图像处理(入门篇)一 图像的数字化与表示

目录 1 人眼图像是如何形成的? 2 图像的感知与获取? 3 图像的数字化 4 数字图像的表示 1 人眼图像是如何形成的? 人眼近似为一个球体,物体的光线经过角膜和晶状体的折射,在视网膜上形成“倒立缩小”的实像。 视网膜…

数字图像处理——相关检测

原理:利用模板与图像做相关运算得到相关值矩阵,相关值最大的位置即检测出的目标位置。相关值计算公式: Matlab代码: clear,clc; car imread(car.png); mask imread(wheel.png); [h1,w1] size(car); [h2,w2] size(mask);car_e…

#DIC#数字图像相关

1.1DIC基本原理 在实验中DIC特指一种种光学测量技术,⽤于在整个⼒学试验过程中测量试样表⾯上不断变化的全场⼆维或三维坐标。测量出的坐标场可⽤于进⼀步导出位移、应变、应变率、速度和曲率等感兴趣量(Quantities-of-Interest,QOI&#xff…

二维数字图像相关算法软件Ncorr的使用心得

二维数字图像相关(2D Digital Image Correlation)是一种非接触式的光学测量方法,常应用于图像分析处理上,它可以根据变形前后的2张或多张图像,求解出规定区域 近似的位移与应变情况。 Ncorr使用流程 Ncorr下载与编译1.下载2.编译 Ncorr通用DI…

数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法(FA-GN与IC-GN)

目录 前言内容回顾一. 非线性优化数学模型二. 前向累加高斯-牛顿法——FA-GN(Forward Additive Gauss-Newton method)三. 逆合成高斯-牛顿法——IC-GN(Inverse compositional Gauss-Newton method)1.非线性优化数学模型变形2.数学…