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

MySQL处理引擎

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种都 使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的、不同的功能和能力。通过 选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体性能。

这些不同的技术以及配套的相关功能在 MySQL中被称作存储引擎(也称作表类型)。MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。选择适用于服务器、数据库和表格的存储引擎,可以在存储信息、检索数据时,提供最大的灵活性。

对于MySQL来说,它提供了很多种类型的存储引擎(或者说不同的表类型),根据对 数据处理的需求,可以选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。

在MySQL客户端中,使用以下命令可以查看 MySQL支持的引擎。

mysql>show engines;

MyISAM存储引擎

MyISAM存储引擎不支持事务,也不支持外键,特点是访问速度快,对事务完整性没有要求,以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。

每个MyISAM表在磁盘上存储成3 个文件,其中文件名和表名都相同,但是扩展名分别为:

frm(存储表定义)

MYD(MYData,存储数据) 

MYI(MYIndex, 存储索引)

数据文件和索引文件可以放置在不同的目录,平均分配IO,  获取更快的速度。要指定数据文件和索引文件的路径,需要在创建表的时候通过DATA DIRECTORY和INDEX DIRECTORY语句指定,文件路径需要使用绝对路径。

每个MyISAM表都有一个标志,服务器或myisamchk程序在检查MyISAM数据表时会对这个标志进行设置。MyISAM 表还有一个标志用来表明该数据表在上次使用后是不是被正常的关闭了。如果服务器意外宕机或崩溃,这个标志可以用来判断数据表是否需要检查和修复。如果想让这种检查自动进行,可以在启动服务器时使用-myisam-recover实现。这会让服务器在每次打开一个MyISAM数据表时自动检查数据表的标志并进行必要的修复处理。MyISAM类型的表可能会损坏,可以使用CHECK TABLE 语句来检查MyISAM表的健康,并用REPAIR TABLE语句修复一个损坏的MyIS AM表。MyISAM表还支持3种不同的存储格式:

静态(固定长度)表

动态表

压缩表

其中静态表是默认的存储格式。静态表中的字段都是非可变字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占 用的空间通常比动态表多。静态表在数据存储时会根据列定义的宽度定义补足空格,但是在访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉。同时需要注意:在某些情况下可能需要返回字段后的空格,而使用这种格式时后面的空格会被自动处理掉。

动态表包含可变字段,记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁的更新、删除记录会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk -r 命令来改善性能,并且出现故障的时候恢复相对比较困难。

压缩表由myisamchk工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支。

InnoDB   存储引擎

InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。MySQL 从5.5.5 版本开始,默认的存储引擎为InnoDB 。InnoDB存储引擎还引入了行级锁定和外键约束,在以下场景中使用InnoDB存储引擎是最理想的选择:

>更新密集的表:InnoDB存储引擎特别适合处理多重并发的更新请求。 

>事务:InnoDB存储引擎是支持事务的标准MySQL存储引擎。

>自动灾难恢复:与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。

>外键约束:MySQL支持外键的存储引擎只有InnoDB。 

>支持自动增加列AUTO_INCREMENT属性。

一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。而MyISAM和InnoDB两种存储引擎的区别主要表现在以下几个方面。

InnoDB

MyISAM

事务

支持事务,支持四个事务隔离级别

不支持事务,需要事务支持的系统不能使用 MyISAM 作为存储引擎

锁定

行级锁定,但是全表扫描仍然会是表级锁定

表级锁定形式,数据在更新时锁定整个表

读写阻塞

读写阻塞与事务隔离级别相关

数据库在读写过程中相互阻塞

在数据写入的过程中阻塞用户对数据的读取

在数据读取的过程中阻塞用户写入数据

缓存

具有非常高效的缓存特性,能缓存索引,也能缓存数据

可以通过 key_buffer_size 来设置缓存索引,提高访问的性能,减少磁盘 IO 的压力

写入和读取

写入和读取的速度较慢

采用 MyISAM 存储引擎进行数据单独写入或读取,速度较快且占用资源相对要少

外键

支持外键约束

MyISAM 存储引擎不支持外键约束,只支持全文索引

修改默认的存储引擎

修改默认的存储引擎有四种方法,分别如下。

(1)通过 alter table 修改。

MySQL>alter table user_info engine=MyISAM;

(2)通过修改my.cnf, 指定默认存储引擎并重启服务。

[root@Mysql ]#vim my.cnf 
default-storage-engine=InnoDB

( 3 ) 通 过create  table 创建表时指定存储引擎。

MySQL>create table engineTest(id int)engine=MyISAM;

(4) 通 过Mysql_convert_table_format    转化存储引擎。

[root@Mysql /#yum -y install perl-DBI perl-DBD-MySQL 
[root@Mysql]#/usr/local/mysql/bin/mysql_convert_table_format --user=root -password='123456'--sock=/tmp/mysql.sock auth

相关文章:

MySQL处理引擎

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种都 使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的、不同的功能和能力。通过 选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体性能。 这些不同的技…...

HTTP 方法详解:GET、POST 和 PUT

HTTP 方法详解:GET、POST 和 PUT HTTP 方法(GET、POST、PUT)用于客户端和服务器之间的通信。它们在输入、输出和传输内容上有显著区别。 1. GET 方法 – 获取资源 用途:从服务器获取资源。 输入: 请求行&#xff…...

被工信部认可的开源软件治理解决方案

近日,工信部网络安全产业发展中心正式发布了“2023年信息技术应用创新解决方案”,开源网安凭借“基于SCA技术开源软件治理解决方案”顺利入选,成为经工信部认可的优秀解决方案,这是开源网安连续两届荣获此荣誉。 工业和信息化部网…...

文件包含漏洞--pyload

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.PHP伪协议利用 php://协议 php://filter :用于在读取作用和写入文件时进行过滤和转换操作。 作用1:利用base64编码过滤器读取源码 通常利用文件包含执行php://filte…...

C++包管理之`vcpkg`简介

文章目录 工程文件安装vcpkg安装fmt库安装全局的库安装仅该工程使用的库 在CMake中使用vcpkg通过CMAKE_TOOLCHAIN_FILE使用vcpkg通过CMakePresets.json使用vcpkg 在C开发中,我们经常会使用一些第三方库,比如说Boost、fmt、spdlog等等。这些库的安装和使用…...

【机器学习】必会核函数之:高斯核函数

高斯核函数 1、引言2、高斯核函数2.1 定义2.2 核心原理2.3 应用场景2.4 代码示例3、总结1、引言 在机器学习和数据科学领域,核方法 ( K e r n e l M e t h o d s ) (Kernel Methods) (Kerne...

51单片机和STM32区别

51单片机和 STM32 区别 51单片机和 STM32 是两种常见的微控制器,它们在架构、性能、外设接口、功耗和开发环境等方面有所不同。 1. 架构差异 51单片机基于传统的哈佛总线结构,采用 CISC 架构,而 STM32 基于 ARM Cortex-M 系列的32位处理器核…...

Python 伪随机数生成器

random.sample() 函数原理 在 Python 中,随机数的生成通常依赖于伪随机数生成器(PRNG)。random 模块提供了一个易于使用的接口来生成伪随机数。以下是 random 模块中随机数生成的基本原理和方法: 伪随机数生成器(PRN…...

7.5 grafana上导入模板看图并讲解告警

本节重点介绍 : blackbox_exporter grafana大盘导入和查看告警配置讲解 grafana大盘 grafana 上导入 blackbox_exporter dashboard 地址 https://grafana.com/grafana/dashboards/13659举例图片http总览图value_mapping设置 展示设置阈值,展示不同背景色 告警配…...

BUG解决(vue3+echart报错):Cannot read properties of undefined (reading ‘type‘)

这是 vue3echart5 遇到的报错:Cannot read properties of undefined (reading ‘type‘) 这个问题需要搞清楚两个关键方法: toRaw: 作用:将一个由reactive生成的响应式对象转为普通对象。 使用场景: 用于读取响应式…...

VSCode+git的gitee仓库搭建

​ 在此之前你已经在gitee创建好了账号,并新建了一个仓库。 1. 安装 Visual Studio Code Visual Studio Code 是编辑 Markdown 和站点配置文件的基础,以下将其简称为 VSCode,你可以在它的 官方网站 下载到它。 如若不理解各个版本之间的区别…...

Golang | Leetcode Golang题解之第297题二叉树的序列化与反序列化

题目: 题解: type Codec struct{}func Constructor() (_ Codec) {return }func (c Codec) serialize(root *TreeNode) string {if root nil {return "X"}left : "(" c.serialize(root.Left) ")"right : "("…...

交叉熵和MSE的区别

交叉熵 交叉熵损失通常用于分类问题,尤其是二分类和多分类问题。它度量的是预测概率分布与真实标签概率分布之间的差异。 适用于分类问题。常用于神经网络中的Softmax层之后作为损失函数。适用于二分类、多分类中的模型优化(如图像分类、文本分类等&am…...

具身智能又进一步!卡内基梅隆Meta苏黎世联邦实现虚拟人超灵活抓取

论文链接:https://arxiv.org/pdf/2407.11385 github链接:https://www.zhengyiluo.com/Omnigrasp-Site/ 亮点直击 本文设计了一种灵巧且通用的人形机器人运动表示,这显著提高了样本效率,并使得通过简单而有效的状态和奖励设计来学习…...

嘉盛:货币政策走向与市场预期

在当前经济背景下,美联储的政策决策备受关注。尽管本周的会议可能不会带来实质性利率变动,但其后的走向可能对未来产生深远影响。市场预期与政策走向 随着近几个月大量通胀数据公布,市场普遍预计,美联储将为即将到来的降息措施奠定…...

[C#]基于wpf实现的一百多种音色的Midi键盘软件

键盘 音色库 源码地址:https://download.csdn.net/download/FL1623863129/89599322...

关于香橙派系统烧录,1.1.8或者1.1.10两个版本都无法启动Orangepi5

先执行 git clone https://github.com/orangepi-xunlong/orangepi-build.gitgit log 默认会显示较新的提交记录。如果你需要查看更多的提交记录,可以使用以下方法: git log --oneline --graph --all这会以简洁的方式显示所有分支的提交记录&#xff0c…...

深入解析Python `httpx`源码,探索现代HTTP客户端的秘密!

🔸 第一部分:httpx请求入口 我们从最常用的入口开始,看看如何使用httpx库发送HTTP请求。通常,我们会使用 httpx.get() 或 httpx.post() 方法: import httpxresponse httpx.get(https://example.com) print(response…...

python爬虫【3】—— 爬虫反反爬

一、常见的反爬手段和解决方法 二、splash 介绍与安装 三、验证码识别 图片验证码的处理方案 手动输入(input) 这种方法仅限于登录一次就可持续使用的情况图像识别引擎解析 使用光学识别引擎处理图片中的数据,目前常用于图片数据提取,较少用于验证码…...

LIS接入开发

"LIS" 实验室信息系统(Laboratory Information System)。这是一种用于管理和处理实验室产生的数据和信息的软件系统。LIS广泛应用于各种类型的实验室中,包括医院实验室、独立的参考实验室、病理学实验室以及研究实验室等。 LIS的功…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 (1)使用Uniapp 3.8版本支持ArkTS编译 (2)通过uni-harmony插件调用原生能力 (3)分层架构设计: graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...