首页 > 其他分享 >存储引擎

存储引擎

时间:2023-05-26 14:22:49浏览次数:40  
标签:文件 存储 ibd 引擎 InnoDB MyISAM

MySQL 中的数据用各种不同的技术存储在磁盘或内存中,这些技术会采用不同的存储机制、索引技巧、锁定水平,提供不同的功能和能力,提供这些技术能力的组件被称为存储引擎。通过选择不同的存储引擎,可以获得不同的速度或者功能,从而改善应用的整体功能。

MySQL 的存储引擎种类很多,例如 InnoDB,MyISAM,Memory 等,各存储引擎是以插件的形式运行。存储引擎是表维度的组件,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,MySQL 5.5.5 版本开始将 InnoDB 作为默认的存储引擎。

# 查看MySQL支持的所有存储引擎
show engines
# 查看表使用的存储引擎
SHOW CREATE TABLE table_name

InnoDB

Innodb的数据是存储在.ibd文件中,每张表都会生成一个.ibd文件,这个文件称为表空间。

在MySQL8.0之前,表结构信息(存储在.fmt文件中)和表存储的数据(存储在.ibd文件中)是存放到不同的文件中,而8.0之后,表结构信息也已经融入到.ibd文件中。

对于mac系统,MySQL的.ibd文件存储在/usr/local/mysql/data 文件中,如果data文件无法打开,可以使用如下命令

sudo chmod -R a+rwx /usr/local/mysql/data

进入ibd文件所在目录,使用如下指令可以查看ibd文件的内容

# 查看表的ibd文件
ibd2sdi table_name.ibd

上面提到每张表都会生成自己独有的.ibd文件,这个文件被称为独占表空间,除了独占表空间,InnoDB还提供了系统表空间,在系统表空间下,所有数据都存储在一个.ibd文件中。

# 通过下面的命令查看表空间状态
SHOW VARIABLES LIKE 'innodb_file_per_table'  
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_file_per_table | ON    |
+-----------------------+-------+

MyISAM

在MySQL 5.1及之前的版本,MylSAM是默认的存储引擎。MylSAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MylSAM不支持事务和行级锁,而且有一个毫无疑问的缺陷就是崩溃后无法安全恢复。

使用MyISAM作为存储引擎的表会生成三个文件,

.MYD:存储表的数据

.MYI:存储索引信息

.sdi:存储表结构信息

InnoDB和MyISAM的对比

InnoDB MyISAM
事务 支持 不支持
外键 支持 不支持
索引类型 聚集索引(B+树) 非聚集索引(B+树)
唯一索引 必须 非必须
全文索引 5.6以后支持 支持
锁级别 行锁、表锁 表锁
表的具体行数 不存储,使用count(*)查 存储

如何选择

1. 是否要支持事务,如果要就选择 InnoDB,如果不需要可以考虑MyISAM

2. 如果表中绝大多数都只是读操作或者插入操作,可以考虑 MyISAM,如果既有读也有写,使用 InnoDB

3. 系统奔溃后,MyISAM 恢复起来更困难,能否接受

MyISAM 的优势已逐渐被 MongoDB 取代。

标签:文件,存储,ibd,引擎,InnoDB,MyISAM
From: https://www.cnblogs.com/Zz-feng/p/17434517.html

相关文章

  • 修改docker默认存储路径
    docker消耗内存太严重!!必须申请一个大硬盘,然后修改默认存储路径  停止docker服务servicedockerstopcopy数据到新的存放路径cp-r/var/lib/docker/* /data/docker重命名/var/lib/docker  mv/var/lib/docker/var/lib/dockerbak创建软连接ln-......
  • mysql表类型和存储引擎和视图
    1. mysql表类型和存储引擎  8031.1 基本介绍1. MySQL的表类型由存储引擎(Storage Engines)决定,主要包括MyISAM、innoDB、Memory等。2. MySQL数据表主要支持六种类型,分别是: CSV、 Memory、ARCHIVE、MRG_MYISAM、MYISAM、 InnoBDB.3.这六种又分为两类,一类是”事务安全型”......
  • 使用MASA Stack+.Net 从零开始搭建IoT平台 第四章 4.3 使用规则引擎实现告警通知
    目录前言方案实施流程安装Node-RED配置一个告警处理流程编写代码测试总结前言数据的挑战:物联网的发展带来了海量的数据。这些数据来源多样,格式不一,处理起来十分复杂。同时,物联网中的设备数量庞大,需要设备间进行高效的协同和管理,这也对数据处理提出了更高的要求。如何从这些复......
  • 【转载】Sqlserver存储过程中使用Select和Set给变量赋值
    @@sqlserverselect赋值  Sqlserver存储过程是时常使用到的一个数据库对象,在存储过程中会使用到Declare来定义存储过程变量,定义的存储过程变量可以通过Set或者Select等关键字方法来进行赋值操作,使用Set对存储过程变量赋值为直接赋值,使用Select则一般从数据表中查找出符合条......
  • laytpl( Layui 的一款轻量 JavaScript 模板引擎)
    laytpl 是Layui的一款轻量JavaScript模板引擎,在字符解析上有着比较出色的表现。laytpl是一款颠覆性的JavaScript模板引擎文档说明一、模版语法输出一个普通字段,不转义html:{{d.field}}输出一个普通字段,并转义html:{{=d.field}}JavaScript脚本:{{#JavaScriptstate......
  • 使用腾讯云对象存储——图片
    选择需要使用的存储桶找到密匙引入依赖 <!--日期工具栏依赖--><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.9.9</version></depend......
  • RHEL8使用iSCSI部署网络存储-Linux就这么学17
        本章首先介绍计算机硬件存储设备的不同接口的优缺点,并由此切入iSCSI技术主题的讲解。iSCSI技术实现了物理硬盘设备与TCP/IP网络协议的相互结合,使得用户能够通过互联网方便地访问远程机房提供的共享存储资源。我们将学习在Linux系统上部署iSCSI服务端程序,并分别......
  • MySQL存储引擎精简版
    存储引擎简介概念:其是存储数据,建立索引,更新查询数据等操作的技术支持,引擎是基于表的,所以又称表结构常见分类InnoDBMySQL5.5之后默认引擎特点:1.操作遵循ACID原则,支持事务2.支持行锁3,支持外键约束MyISAMMySQL早期默认引擎特点:1.不支持事务和外键约束,支持表锁......
  • Esxi6.7 添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置 Group2 Raid5
     ESXI添加硬盘时提示无法创建VMFS数据存储-无法更改主机配置1.打开ESXI的SSH2.找到不能添加的硬盘路径3.用SSH操作 1.打开ESXI的SSH2.找到不能添加的硬盘路径我的是**个,找到你要添加但是不能添加的那个硬盘,点进去。完整的路劲为:比如我的:/vmfs/devices/disk......
  • Cisco Identity Services Engine (ISE) 3.2 Patch2 发布 - 思科身份服务引擎
    CiscoIdentityServicesEngine(ISE)3.2Patch2发布-思科身份服务引擎请访问原文链接:https://sysin.org/blog/cisco-ise-3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org工作场所零信任安全的核心所在任何零信任策略的一个关键组成部分是确保所有人和所有设......