当前位置: 首页 > 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的功…...

OpenLayers 可视化之热力图

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...