mysql哪个存储引擎有表空间

通用表空间先是出现在 MySQL Cluster 里,也就是 NDB 引擎。从 MySQL 5.7 引入到 InnoDB 引擎。通用表空间和系统表空间一样,也是共享表空间。每个表空间可以包含一张或者多张表,也就是说通用表空间和表之间是一对多的关系。
mysql哪个存储引擎有表空间
MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:

MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:

· MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认使用另外一个引擎。

· MEMORY存储引擎提供“内存中”表。MERGE存储引擎允许集合将被处理同样的MyISAM表作为一个单独的表。就像MyISAM一样,MEMORY和MERGE存储引擎处理非事务表,这两个引擎也都被默认包含在MySQL中。

注释:MEMORY存储引擎正式地被确定为HEAP引擎。

· InnoDB和BDB存储引擎提供事务安全表。BDB被包含在为支持它的操作系统发布的MySQL-Max二进制分发版里。InnoDB也默认被包括在所 有MySQL 5.1二进制分发版里,你可以按照喜好通过配置MySQL来允许或禁止任一引擎。

· EXAMPLE存储引擎是一个“存根”引擎,它不做什么。你可以用这个引擎创建表,但没有数据被存储于其中或从其中检索。这个引擎的目的是服务,在 MySQL源代码中的一个例子,它演示说明如何开始编写新存储引擎。同样,它的主要兴趣是对开发者。

· NDB Cluster是被MySQL Cluster用来实现分割到多台计算机上的表的存储引擎。它在MySQL-Max 5.1二进制分发版里提供。这个存储引擎当前只被Linux, Solaris, 和Mac OS X 支持。在未来的MySQL分发版中,我们想要添加其它平台对这个引擎的支持,包括Windows。

· ARCHIVE存储引擎被用来无索引地,非常小地覆盖存储的大量数据。

· CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。

· BLACKHOLE存储引擎接受但不存储数据,并且检索总是返回一个空集。

· FEDERATED存储引擎把数据存在远程数据库中。在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C Client API。在未来的分发版中,我们想要让它使用其它驱动器或客户端连接方法连接到另外的数据源。

比较常用的是MyISAM和InnoBD2016-07-05
一、系统表空间
在 MySQL 数据目录下有一个名为 ibdata1 的文件,可以保存一张或者多张表。
923275 12M -rw-r----- 1 mysql mysql 12M 3月 18 10:42 ibdata1
这个文件就是 MySQL 的系统表空间文件,默认为 1 个,可以有多个,只需要在配置文件 my.cnf 里面这样定义即可。
innodb_data_file_path=ibdata1:200M;ibdata2:200M:autoextend:max:800M系统表空间不仅可以是文件系统组成的文件,也可以是非文件系统组成的磁盘块,比如裸设备,定义也很简单innodb_data_file_path=/dev/nvme0n1p1:3Gnewraw;/dev/nvme0n1p2:2Gnewraw
系统表空间里都有些啥内容?
具体内容包括:double writer buffer、 change buffer、数据字典(MySQL 8.0 之前)、表数据、表索引。
那 MySQL 为什么现在主流版本默认都不是系统表空间?
究其原因,系统表空间有三个最大的缺点:原因 1:无法做到自动收缩磁盘空间,造成很大的空间浪费。即使它包含的表都被删掉,这部分空间也不会自动释放。
二、单表空间
单表空间不同于系统表空间,每个表空间和表是一一对应的关系,每张表都有自己的表空间。具体在磁盘上表现为后缀为 .ibd 的文件。比如表 t1,对应的表空间文件为 t1.ibd917107 96K -rw-r----- 1 mysql mysql 96K 3月 18 16:13 t1.ibd

单表空间如何应用到具体的表呢?
有两种方式:方式 1:在配置文件中开启。在配置文件中开启单表空间设置参数 innodb_filer_per_table,这样默认对当前库下所有表开启单表空间。innodb_file_per_table=1另外也可以直接建表时指定单表空间mysql> create table t1 (id int, r1 char(36)) tablespace innodb_file_per_table;
Query OK, 0 rows affected (0.04 sec)
单表空间除了解决之前说的系统表空间的几个缺点外,还有其他的优点,详细如下:
1. truncate table 操作比其他的任何表空间都快;
2. 可以把不同的表按照使用场景指定在不同的磁盘目录;
比如日志表放在慢点的磁盘,把需要经常随机读的表放在 SSD 上等。
mysql> create table ytt_dedicated (id int) data directory = '/var/lib/mysql-files';
Query OK, 0 rows affected (0.04 sec)3. 可以用 optimize table 来收缩或者重建经常增删改查的表。一般过程是这样的:建立和原来表一样的表结构和数据文件,把真实数据复制到临时文件,再删掉原始表定义和数据文件,最后把临时文件的名字改为和原始表一样的。
三、通用表空间
通用表空间先是出现在 MySQL Cluster 里,也就是 NDB 引擎。从 MySQL 5.7 引入到 InnoDB 引擎。通用表空间和系统表空间一样,也是共享表空间。每个表空间可以包含一张或者多张表,也就是说通用表空间和表之间是一对多的关系。2020-12-07
mengvlog 阅读 35 次 更新于 2025-09-10 00:35:26 我来答关注问题0
  •  翡希信息咨询 MySQL InnoDB 行记录存储结构

    InnoDB 是 MySQL 的默认存储引擎,其行记录的存储结构对于数据库的性能和存储效率至关重要。InnoDB 的行记录存储结构主要包括表空间、区、页和行等层次。一、表空间 InnoDB 的表空间是存储数据和索引的物理文件。表空间可以分为共享表空间和独立表空间。在共享表空间中,所有表的数据和索引都存储在同一...

  •  深空见闻 mysql 有表空间的概念吗

    MySQL确实有表空间的概念。MySQL的表空间是数据库存储管理中的一个重要概念,特别是在使用InnoDB存储引擎时。表空间是逻辑存储单位,用于存储数据库中的表、索引和其他对象。以下是关于MySQL表空间的详细解释:一、表空间的基本概念 定义:表空间是MySQL中用于存储数据的逻辑单位,它可以是文件系统中的文件或...

  •  翡希信息咨询 MySQL探秘(四):InnoDB的磁盘文件及落盘机制

    InnoDB是MySQL的默认存储引擎,它提供了高性能、高可靠性和可扩展性。InnoDB的磁盘文件和落盘机制是其关键技术之一,下面将详细探讨InnoDB的磁盘文件组成以及落盘机制。一、InnoDB的磁盘文件 InnoDB的磁盘文件主要分为三大块:系统表空间、用户表空间和重做日志文件及归档文件。系统表空间 定义:系统表空间包含...

  •  翡希信息咨询 MySQL是怎样存储数据的?

    独立表空间:用于存储用户数据。共享表空间:服务于元数据(管理用户数据),文件名为ibdata1。MySQL的InnoDB存储引擎通过精巧的数据结构设计和高效的索引算法来组织和管理数据。其存储结构自顶向下为:表空间->段(逻辑)->区->页->记录。非/叶子节点段构建索引B+树。表空间:是存储数据的逻辑单位。段...

  •  深空见闻 ibd文件样子

    ibd文件是MySQL InnoDB存储引擎使用的独立表空间文件,用于存储表的数据和索引。一、ibd文件的基本概述 ibd文件是MySQL数据库中InnoDB存储引擎特有的文件格式,它负责存储表的数据和索引信息。这种文件格式是MySQL内部使用的,用户通常无法直接查看或编辑其内部内容。ibd文件的存在使得InnoDB存储引擎能够支持更大...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部