MySQL数据库引擎详解

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

    作为经常使用MySQL数据库的人,不得不对MySQL的数据库引擎有一定的了解,在之前我也是只会使用MySQL,但两次的面试中都被面试官问及项目用到的数据库引擎(血与泪),因此,有必要写一篇文章,好好总结一下MySQL的数据库引擎。

1. 数据库引擎定义

    数据库引擎是数据库用于存储、处理和保护数据的核心服务,不同的数据库引擎有其各自的特点,如存储机制、索引技巧、主键的处理、锁的粒度等特点便随着引擎的不同而变化。因此,针对自己项目特点选择合适的数据库引擎可以改善服务器端存储性能。

    常见的MySQL数据库引擎有以下几个:InnoDB,MyIsam,Memory,Mrg_Myisam,Blackhole等。

2.如何查看及设置数据库引擎

在mysql(版本5.6)命令行中使用如下命令:

show engines;

可以看到如下结果:


可以看出,默认的数据库引擎是InnoDB。

2.1 如何更改默认数据库引擎

找到MySQL配置文件mysql.ini,首先将其备份(这是个好习惯,当需要更改Linux上配置文件时)即

cp mysql.ini mysql.ini.bak

在[mysqld]后面添加default-storage-engine=引擎名字 ,保存,重启MySQL服务。

2.2 如何在建表时设置引擎及建表后更改引擎

   建表时设置引擎:
create table 表名(...
)type=引擎名

  建表后更改表的引擎:

alter table 表名 type=引擎名;

2.3 如何查看引擎是否修改成功

该命令会列出数据库所有表的属性

show table status from 数据库名字;

3. 引擎详解

3.1 InnoDB引擎

    InnoDB是一个事务型存储引擎,提供了对数据库ACID事务的支持,并实现了SQL标准的四种隔离级别,具有行级锁定(这一点说明锁的粒度小,在写数据时,不需要锁住整个表,因此适用于高并发情形)及外键支持(所有数据库引擎中独一份,仅有它支持外键)

    该引擎的设计目标便是处理大容量数据的数据库系统,MySQL在运行时InnoDB会在内存中建立缓冲池,用于缓存数据及索引。

可能的缺点:

1. 该引擎不支持FULLTEXT类型的索引

2. 没有保存表的行数,在执行select count(*) from 表名 时,需要遍历扫描全表

适用场景:

1. 经常需要更新的表,适合处理多重并发的更新请求

2. 支持事务

3. 外键约束

4. 可以从灾难中恢复(通过bin-log日志等)

5. 支持自动增加列属性auto_increment

3.2 MyIsam引擎

MyIsam引擎是MySQL主流引擎之一,但它相比起InnoDB,没有提供对数据库事务的支持,不支持细粒度的锁(行锁)及外键,当表Insert与update时需要锁定整个表,因此效率会低一些,在高并发时可能会遇到瓶颈,但MyIsam引擎独立与操作系统,可以在windows及linux上使用。

可能的缺点:

不能在表损坏后恢复数据

适用场景:

1. MyIsam极度强调快速读取

2. MyIsam表中自动存储了表的行数,需要时直接获取即可

3. 适用于不需要事物支持、外键功能、及需要对整个表加锁的情形

3.3 Memory(Heap)引擎

    使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。 HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。在数据行被删除的时候,HEAP也不会浪费大量的空间。HEAP表格在你需要使用SELECT表达式来选择和操控数据的时候非常有用。

    Memory同时支持散列索引和B树索引,B树索引可以使用部分查询和通配查询,也可以使用<,>和>=等操作符方便数据挖掘,散列索引相等的比较快但是对于范围的比较慢很多

可能的缺点:

1. 要求存储的数据是数据长度不变的格式,Blob和Text类型数据不可用(长度不固定)

2. 用完表格后表格便被删除

适用场景:

1. 那些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地堆中间结果进行分析并得到最终的统计结果

2. 目标数据比较小,而且非常频繁的进行访问,在内存中存放数据,如果太大的数据会造成内存溢出。可以通过参数max_heap_table_size控制Memory表的大小,限制Memory表的最大的大小

3. 数据是临时的,而且必须立即能取出用到,于是可存放在内存中

4. 存储在Memory表中的数据如果突然间丢失的话也没有太大的关系

3.4 Mrg_MyIsam引擎

    是一个相同的可以被当作一个来用的MyISAM表的集合。“相同”意味着所有表同样的列和索引信息。也就是说,它将MyIsam引擎的多个表聚合起来,但是它的内部没有数据,真正的数据依然是MyIsam引擎的表中,但是可以直接进行查询、删除更新等操作。

比如:我们可能会遇到这样的问题,同一种类的数据会根据数据的时间分为多个表,如果这时候进行查询的话,就会比较麻烦,Merge可以直接将多个表聚合成一个表统一查询,然后再删除Merge表(删除的是定义),原来的数据不会影响。

3.5 Blackhole引擎

    任何写入到此引擎的数据均会被丢弃掉, 不做实际存储;Select语句的内容永远是空。他会丢弃所有的插入的数据,服务器会记录下Blackhole表的日志,所以可以用于复制数据到备份数据库。

适用场景:

1. 充当日志服务器

2. 验证dump file语法正确性

3. 以使用blackhole引擎来检测binlog功能所需要的额外负载


4. 小结

    关于数据库引擎的介绍就暂时介绍到这里,当然还有其它的引擎,在这里就不过多阐述了,有兴趣的话可自行谷歌,本文主要在于讲解了数据库引擎基础知识。



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

相关文章

数据库引擎

一&#xff1a;数据库引擎的定义 数据库引擎简单来说就是一个"数据库发动机"。当你访问数据库时&#xff0c;不管是手工访问&#xff0c;还是程序访问&#xff0c;都不是直接读写数据库文件&#xff0c;而是 通过数据库引擎去访问数据库文件。以关系型数据库为例&…

MySQL的数据库引擎介绍

1、什么是数据库引擎 数据库引擎就是操作数据库的一段程序或程序段&#xff0c;用于存储、处理和保护数据的核心服务。 利用数据库引擎可控制访问权限并快速处理事务&#xff0c;从而满足企业内大多数需要处理大量数据的应用程序的要求。数据库应用项目是通过数据库引擎与数据库…

CY7C68013 内存溢出问题

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

基于CY7C68013A usb转mdio win10 64bit

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

CY7C68013与FPGA接口的Verilog

USB(通用串行总线)是英特尔、微软、IBM、康柏等公司1994年联合制定的一种通用串行总线规范&#xff0c;它解决了与网络通信问题&#xff0c;而且端口扩展性能好、容易使用。最新的USB2.0支持3种速率&#xff1a;低速1.5 Mbit/s&#xff0c;全速12 Mbit/s&#xff0c;高速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&#xff0c;Lg E…

CY7C68013与FPGA接口的Verilog_HDL实现

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

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

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

FPGA----CY7C68013使用记录

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

数字图像介绍

一、什么是数字图像 数字图像就是将图像用数字表示。 二、数字图像的起源 三、常见的成像方式 电磁波&#xff0c;最基本的单元叫做光子。 光子具有能量。能量E h*f。h是常数&#xff0c;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;其中需要对别人现有算法的复现和调研&#xff0c;尽管其中很多算法都已经非常成熟&#xff0c…

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

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

数字图像和数字图像处理

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

数字图像基本处理算法

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

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

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

数字图像简介及表示

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

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

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

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

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

#DIC#数字图像相关

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