mysql 8.0 的 建表 和八种 建表引擎实例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: mysql 8.0 的 建表 和八种 建表引擎实例

一、InnoDB 引擎建表

特点:

支持事务处理,具有 ACID(原子性、一致性、隔离性、持久性)特性。这对于确保数据的完整性和一致性非常重要,特别是在多用户并发访问的情况下。

行级锁定机制,提高了并发性能,允许多个用户同时对表进行读写操作,而不会相互阻塞。

支持外键约束,可以在不同表之间建立关联关系,保证数据的一致性和完整性。

具有良好的故障恢复能力,在数据库发生故障时能够快速恢复数据。


适用场景:

对数据完整性和一致性要求较高的应用,如企业级应用、金融系统等。

高并发的读写操作场景,如电商平台、社交网络等。

注意点

如果有自增长字段需要加 key ,否则会报错

建表

CREATE TABLE `Dim_map_world` (                                                         
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '序号',                                       
  `country` varchar(50) DEFAULT NULL COMMENT '国家',                                     
  `Continent` varchar(50) DEFAULT NULL COMMENT '所属大州',                                 
  PRIMARY KEY(id)                                                                      
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT '世界名称维度表'   

知识点

数据类型为INT,表示整数类型。

NOT NULL表示该字段不能为空值。

AUTO_INCREMENT表示该字段是自增的,每当插入一条新记录时,该字段的值会自动递增。

COMMENT '序号’是对该字段的注释,说明这个字段用于存储序号。

DEFAULT NULL表示如果在插入数据时没有为该字段指定值,则默认为空值。


PRIMARY KEY(id)将id字段设置为主键。主键用于唯一标识表中的每一行记录,确保数据的完整性和一致性。在这个表中,id作为序号字段,被选为主键是一种常见的设计选择。

存储引擎和字符集:


ENGINE=InnoDB 指定了表的存储引擎为 InnoDB。InnoDB 是一种支持事务、行级锁定和外键约束的存储引擎,被广泛应用于 MySQL 数据库中。


DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci指定了表的字符集为utf8mb4,并使用utf8mb4_0900_ai_ci排序规则。utf8mb4是一种支持更多字符的字符集,可以存储包括emoji 等特殊字符。排序规则决定了字符的比较和排序方式。

二、MyISAM 引擎建表

特点:

不支持事务处理和外键约束。

表级锁定机制,在写入操作时会锁定整个表,导致并发性能相对较低。

占用空间较小,对于一些只读或者以查询为主的应用,可以节省存储空间。

支持全文索引,对于需要进行文本搜索的应用非常有用。

适用场景:

以查询为主的应用,数据写入操作较少的情况。,

对存储空间要求较高的应用。

需要全文搜索功能的应用。

CREATE TABLE `Dim_map_world_1` (                                                         
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '序号',                                       
  `country` varchar(50) DEFAULT NULL COMMENT '国家',                                     
  `Continent` varchar(50) DEFAULT NULL COMMENT '所属大州',                                 
   PRIMARY KEY(id)                                          
) ENGINE='MyISAM' DEFAULT CHARSET='utf8mb4' COLLATE='utf8mb4_0900_ai_ci' COMMENT '世界名称维度表'   

使用场景

mysql 数据库 如果表 使用=MyISAM,一般 会用于 数据可视化的数据源,他以查询为主的应用,数据写入操作较少的情况,前端开发人员可能用的比较少。但是如果是数仓这个一定不陌生。

一、数据仓库和报表系统

特点:

对于数据仓库和报表系统,通常需要快速的查询性能来生成各种报表和分析结果。MyISAM 引擎的表级锁定虽然在并发写入时性能较低,但对于以读为主的场景影响较小。

占用空间较小,对于存储大量历史数据的数据仓库来说,可以节省存储成本。

示例:

假设一个电商企业的数据仓库,需要存储多年的销售订单数据以供生成月度、季度和年度销售报表。这些数据主要用于查询和分析,写入操作相对较少。使用 MyISAM 引擎可以在保证查询性能的同时,降低存储成本。

二、只读数据库或静态内容存储

特点:

如果数据库中的数据是静态的,不需要频繁修改,MyISAM 引擎是一个不错的选择。它不支持事务处理和外键约束,这在只读场景下不是问题。

对于存储静态网页内容、配置文件等只读数据,MyISAM 可以提供快速的读取性能。

示例:

一个企业的内部文档管理系统,存储了大量的 PDF、Word 文档等静态文件的元数据。这些元数据在系统运行过程中很少被修改,主要用于查询和检索。使用 MyISAM 引擎可以快速响应查询请求,提高系统性能。

三、日志记录和监控系统

特点:

日志记录和监控系统通常需要快速写入大量数据,并且对数据的完整性要求相对较低。MyISAM 引擎在写入性能方面表现较好,尤其是在大量顺序写入的情况下。

可以利用 MyISAM 的全文索引功能,对日志内容进行快速搜索和分析。

示例:

一个网络监控系统,需要记录大量的网络流量数据和设备状态信息。这些数据主要用于事后分析和故障排查,对实时性要求不高。使用 MyISAM 引擎可以快速记录数据,并在需要时进行查询和分析。

四、数据备份和恢复

特点:

在进行数据备份时,MyISAM 引擎的表可以直接复制文件,而不需要像 InnoDB 那样进行复杂的事务处理和日志管理。这使得备份过程更加简单和快速。

恢复数据时也相对容易,只需要将备份的文件复制回数据库目录即可。

示例:

对于一些小型企业或个人用户,可能没有复杂的备份和恢复工具。使用 MyISAM 引擎可以通过简单的文件复制来进行数据备份和恢复,降低了管理成本

三、Memory 引擎

特点:

将数据存储在内存中,读写速度非常快。

不支持事务处理和外键约束。

数据在数据库关闭时会丢失,因此只适用于临时数据或者缓存数据的存储。

适用场景:

临时表或者缓存表,用于存储临时数据或者提高查询性能。

需要快速读写操作的场景,如数据分析、报表生成等。

CREATE TABLE `Dim_map_world_2` (                                                         
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '序号',                                       
  `country` varchar(50) DEFAULT NULL COMMENT '国家',                                     
  `Continent` varchar(50) DEFAULT NULL COMMENT '所属大州',                                 
   PRIMARY KEY(id)                                          
) ENGINE='Memory' DEFAULT CHARSET='utf8mb4' COLLATE='utf8mb4_0900_ai_ci' COMMENT '世界名称维度表'   
   
insert into Dim_map_world_2 (country,Continent) values ('中国','亚洲')


使用场景

在 MySQL 8.0 中,Memory 引擎有以下应用场景:

一、临时数据存储

特点:

Memory 引擎将数据存储在内存中,读写速度极快。对于需要快速处理和临时存储的数据非常适合。

数据库关闭时,数据会丢失,所以适合存储那些不需要长期保存的临时结果集。

示例:

在数据仓库的 ETL(Extract, Transform, Load)过程中,可能需要对大量数据进行中间处理,生成一些临时的结果集。这些结果集只在 ETL 过程中使用,一旦处理完成,就不再需要。使用 Memory 引擎存储这些临时结果集,可以大大提高处理速度。

二、缓存数据

特点:

可以作为缓存层,存储经常被访问的数据,以减少对磁盘存储的访问次数,提高查询性能。

由于数据存储在内存中,读取速度远远快于从磁盘读取数据。

示例:

一个电商网站的商品搜索功能,经常需要查询商品的基本信息和库存数量等。可以将这些频繁访问的数据存储在 Memory 引擎的表中,当用户进行搜索时,直接从内存中读取数据,大大提高响应速度。

三、快速计算和分析

特点:

对于一些需要快速计算和分析的场景,Memory 引擎可以提供高效的内存操作。

可以在内存中进行复杂的计算和聚合操作,避免了频繁的磁盘 I/O。

示例:

金融领域的实时风险评估系统,需要对大量的交易数据进行快速分析和计算。将交易数据加载到 Memory 引擎的表中,可以在内存中进行实时计算,及时评估风险并做出决策。

四、测试和开发环境

特点:

在测试和开发环境中,数据的持久性要求相对较低。使用 Memory 引擎可以快速创建和修改表结构,方便进行测试和调试。

由于数据存储在内存中,不会对磁盘造成过多的读写压力,也不会影响生产环境的数据。

示例:

软件开发团队在进行新功能开发时,可以使用 Memory 引擎创建测试数据,进行快速的功能测试和验证。一旦测试完成,可以轻松地删除测试数据,不会对数据库造成持久影响。

四、Archive 引擎

特点:

主要用于存储大量的历史数据,占用空间非常小。

只支持插入和查询操作,不支持更新和删除操作。

适合存储不需要经常修改的数据,如日志数据、历史记录等。

适用场景:

数据仓库中的历史数据存储。

日志记录和审计跟踪等应用。

CREATE TABLE `Dim_map_world_3` (                                                         
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '序号',                                       
  `country` varchar(50) DEFAULT NULL COMMENT '国家',                                     
  `Continent` varchar(50) DEFAULT NULL COMMENT '所属大州',                                 
   PRIMARY KEY(id)                                          
) ENGINE='Archive' DEFAULT CHARSET='utf8mb4' COLLATE='utf8mb4_0900_ai_ci' COMMENT '世界名称维度表'   
   
insert into Dim_map_world_3 (country,Continent) values ('中国','亚洲')

五、BLACKHOLE 引擎

BLACKHOLE(黑洞)表引擎是 MySQL 中的一种特殊存储引擎。以下是关于 BLACKHOLE 表引擎的详细介绍:

一、特点

数据 “黑洞”:

写入到 BLACKHOLE 表的数据会被 “丢弃”,就像被吸入黑洞一样,不会真正存储在磁盘上。这意味着对 BLACKHOLE 表的写入操作看似成功,但实际上数据并不会被持久化保存。

复制功能:

BLACKHOLE 表在复制环境中非常有用。当设置了主从复制时,主服务器上对 BLACKHOLE 表的写入操作会被记录在二进制日志中,并传输到从服务器。从服务器会执行相同的写入操作,即使从服务器上的 BLACKHOLE 表也不会存储数据,但这个过程可以确保主从服务器之间的操作一致性。


二、适用场景

测试复制配置:

在设置和测试 MySQL 复制架构时,BLACKHOLE 表可以用来模拟实际的数据写入操作,而无需担心数据的存储和管理。通过观察主从服务器之间对 BLACKHOLE 表的复制行为,可以验证复制配置是否正确。

性能测试:

可以使用 BLACKHOLE 表来测试数据库的写入性能,而不会占用实际的磁盘空间。这对于评估数据库在高负载写入情况下的性能表现非常有用。

日志记录的中间层:

在某些情况下,可以将 BLACKHOLE 表用作日志记录的中间层。例如,一个应用程序可能需要记录一些操作,但并不关心这些日志数据的长期存储。可以将日志写入到 BLACKHOLE 表,然后使用其他工具或机制来处理和分析这些日志。


三、注意事项

数据丢失风险:

由于 BLACKHOLE 表不存储数据,所以在使用时要特别小心,避免误将重要数据写入到 BLACKHOLE 表中而导致数据丢失。

性能影响:

虽然写入到 BLACKHOLE 表的操作不会涉及实际的磁盘 I/O,但在某些情况下,仍然可能会对数据库性能产生一定的影响。例如,如果大量的并发写入操作都针对 BLACKHOLE 表,可能会消耗数据库服务器的资源,影响其他正常的数据库操作。

与其他存储引擎的区别:

BLACKHOLE 表引擎与其他存储引擎(如 InnoDB、MyISAM 等)有很大的不同,它不提供数据的持久化存储和检索功能。在选择存储引擎时,要根据具体的应用需求来决定是否使用 BLACKHOLE 表引擎

    CREATE TABLE `dim_map_world_4` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '序号',
  `country` varchar(50) DEFAULT NULL COMMENT '国家',
  `Continent` varchar(50) DEFAULT NULL COMMENT '所属大州',
  PRIMARY KEY (`id`)
) ENGINE=BLACKHOLE AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='世界名称维度表';

insert into dim_map_world_4 (country,Continent) values ('中国','亚洲')

六、MRG_MyISAM 引擎

MRG_MyISAM 和 MyISAM 的区别

MRG_MYISAM(Merge MyISAM)和 MYISAM 都是 MySQL 中的存储引擎,它们之间有以下主要区别:

一、存储方式

MYISAM:

每个 MYISAM 表都是独立存储的,数据和索引分别存放在不同的文件中。

对于大型数据表,可能需要占用大量的磁盘空间,并且管理起来相对独立。

MRG_MYISAM:

可以将多个结构相同的 MYISAM 表合并为一个逻辑表进行管理。

数据存储在多个成员表中,但从外部看像是一个单独的表,节省了管理多个独立表的开销。


二、数据管理

MYISAM:

单独管理每个表的数据,插入、更新和删除操作都是针对单个表进行的。

如果需要对多个相关表进行操作,需要分别对每个表执行相应的 SQL 语句。

不支持事务处理,这意味着如果在一系列操作过程中出现错误,可能无法回滚到操作前的状态。

MRG_MYISAM:

可以对合并后的逻辑表进行统一的查询和操作,简化了对多个相关表的管理。

不支持事务处理,与 MYISAM 一样。但由于多个表被合并为一个逻辑表,在某些情况下可以通过设计来减少对事务的需求。


三、性能表现

MYISAM:

对于单个大型表的查询,可能会因为数据量大而导致性能下降。

索引的维护也需要针对单个表进行,可能会消耗一定的资源。

MRG_MYISAM:

通过将数据分散到多个成员表中,可以提高查询性能,特别是当数据量非常大时。

可以根据特定的查询需求选择合适的成员表进行查询,提高查询的效率。


四、适用场景

MYISAM:

适用于对数据一致性要求不高、以读为主的应用场景。

例如,一些静态数据的存储或者数据仓库中的只读表。

MRG_MYISAM:

适用于需要管理多个结构相同的表,并且希望以统一的方式进行查询和操作的场景。

比如,日志数据的存储,将不同时间段的日志存储在不同的成员表中,然后通过合并表进行查询分析。

    CREATE TABLE `dim_map_world_5_1` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '序号',
  `country` varchar(50) DEFAULT NULL COMMENT '国家',
  `Continent` varchar(50) DEFAULT NULL COMMENT '所属大州',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='世界名称维度表';

CREATE TABLE `dim_map_world_5_2` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '序号',
  `country` varchar(50) DEFAULT NULL COMMENT '国家',
  `Continent` varchar(50) DEFAULT NULL COMMENT '所属大州',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='世界名称维度表';

insert into Dim_map_world_5_1 (country,Continent) values ('中国','亚洲')
insert into Dim_map_world_5_2 (country,Continent) values ('韩国','亚洲')

表合并
CREATE TABLE `dim_map_world_5` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '序号',
  `country` varchar(50) DEFAULT NULL COMMENT '国家',
  `Continent` varchar(50) DEFAULT NULL COMMENT '所属大州',
  PRIMARY KEY (`id`)
) ENGINE=MRG_MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 
COLLATE=utf8mb4_0900_ai_ci union=(`dim_map_world_5_1`,`dim_map_world_5_2`)
COMMENT='世界名称维度表';

select * from dim_map_world_5


七、CSV 引擎

注意点

需要说明的是 如果使用 CSV 作为表引擎 所有的字段都将是 not null 并且不能使用 AUTO_INCREMENT

在 MySQL 中,CSV(Comma-Separated Values,逗号分隔值)引擎具有以下特点:

一、存储特点

文本存储:

CSV 引擎以纯文本文件的形式存储数据,每行代表一条记录,字段之间用逗号分隔。这种存储方式使得数据可以很容易地被其他程序读取和处理,比如电子表格软件。

数据没有被二进制编码,因此非常直观,便于查看和编辑。

简单结构:

不支持索引(除了自增列的隐式索引),这意味着查询性能可能相对较低,尤其是对于大型数据集和复杂查询。

不支持事务处理,不能保证数据的原子性、一致性、隔离性和持久性(ACID)。


二、适用场景

数据交换:

非常适合用于在不同系统之间进行数据交换。由于 CSV 是一种通用的文本格式,几乎所有的软件都可以读取和处理 CSV 文件。

例如,将数据从 MySQL 导出为 CSV 文件,然后导入到其他数据库系统或数据分析工具中。

临时存储:

当需要临时存储一些简单的数据,并且不关心事务和索引时,可以使用 CSV 引擎。比如在进行一些快速的数据测试或临时的数据存储需求时。

简单数据记录:

对于一些只需要简单记录数据,而不需要复杂查询和事务处理的应用场景,CSV 引擎可能是一个合适的选择。例如,记录一些日志信息或简单的统计数据。


三、注意事项

性能限制:

由于缺乏索引和事务支持,查询性能可能会受到很大影响。对于频繁进行查询和更新操作的应用,不建议使用 CSV 引擎。

数据一致性:

没有事务处理意味着在并发写入时可能会出现数据不一致的情况。如果多个进程同时写入 CSV 表,可能会导致数据损坏或丢失。

数据类型限制:

CSV 引擎对数据类型的支持相对有限。所有数据都以字符串的形式存储,在读取数据时需要进行类型转换。这可能会导致一些数据类型错误或不准确的转换。

CREATE TABLE `dim_map_world_6` (
  `id` int NOT NULL  COMMENT '序号',
  `country` varchar(50) not NULL COMMENT '国家',
  `Continent` varchar(50) not NULL COMMENT '所属大州'
) ENGINE=CSV DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='世界名称维度表';

insert into test.Dim_map_world_6 (id,country,Continent) values (1,'中国','亚洲')


八、PERFORMANCE_SCHEMA引擎

说明

PERFORMANCE_SCHEMA是 MySQL 中的一种特殊的表引擎,主要用于收集和分析数据库服务器的性能数据。并存在 mysql 的系统数据库PERFORMANCE_SCHEMA中,自这个数据库中表一般使用这个引擎。

一、主要功能

监控数据库性能

PERFORMANCE_SCHEMA提供了大量的表来监控数据库服务器的各种性能指标,如查询执行时间、锁等待时间、内存使用情况等。通过查询这些表,可以了解数据库的运行状态,找出性能瓶颈。

例如,可以查询 events_statements_summary_by_digest表来了解不同 SQL 语句的执行统计信息,包括执行次数、平均执行时间、锁等待时间等。

诊断性能问题

当数据库出现性能问题时,可以使用 PERFORMANCE_SCHEMA中的表来诊断问题的根源。例如,如果发现数据库响应时间变慢,可以查询 events_waits_current表来查看当前正在等待的事件,从而确定是否存在锁等待、I/O 等待等问题。

还可以通过查询 memory_summary_by_thread_by_event_name表来了解每个线程的内存使用情况,找出可能存在的内存泄漏问题。

优化数据库配置

根据 PERFORMANCE_SCHEMA提供的性能数据,可以调整数据库的配置参数,以提高数据库的性能。例如,如果发现某个存储引擎的缓存命中率较低,可以考虑调整缓存大小;如果发现锁等待时间较长,可以考虑优化 SQL 语句或调整事务隔离级别。


二、使用方法

启用 PERFORMANCE_SCHEMA

默认情况下,PERFORMANCE_SCHEMA是启用的。可以通过检查 my.cnf配置文件中的 performance_schema参数来确认。如果该参数的值为 ON,则表示 PERFORMANCE_SCHEMA已启用。

查询性能数据可以使用标准的 SQL 查询语句来查询 PERFORMANCE_SCHEMA中的表。例如:

SELECT * FROM events_statements_summary_by_digest;

也可以使用 MySQL 提供的一些工具,如 mysqldumpslow,来分析 PERFORMANCE_SCHEMA中的性能数据。

配置选项

PERFORMANCE_SCHEMA提供了一些配置选项,可以根据需要进行调整。例如,可以通过设置 performance_schema_max_*参数来限制 PERFORMANCE_SCHEMA收集的数据量,以避免占用过多的内存。

三、注意事项

性能开销

PERFORMANCE_SCHEMA会消耗一定的系统资源来收集和存储性能数据。在高负载的数据库服务器上,可能会对性能产生一定的影响。因此,在使用 PERFORMANCE_SCHEMA时,需要根据实际情况进行权衡,避免对数据库性能造成过大的影响。

数据准确性

PERFORMANCE_SCHEMA提供的性能数据是基于采样和统计的,可能存在一定的误差。在分析性能数据时,需要结合实际情况进行判断,避免过度依赖统计数据。

版本兼容性

PERFORMANCE_SCHEMA的功能和表结构可能会随着 MySQL 版本的升级而发生变化。在使用 PERFORMANCE_SCHEMA时,需要注意版本兼容性问题,确保查询的表和字段在不同版本的 MySQL 中都存在。

总结

上面就是比较常用的 8中 mysql 建表语句归纳

如果要找到数据库是否支持表引擎 可以使用 下面的语句

SHOW ENGINES

可以看到其实还有几种表引擎没有说,如 Federated,ndbinfo,ndbcluster 等

具体可以去mysql 官网查看

https://dev.mysql.com/doc/refman/8.4/en/show-engines.html

以下是 MySQL 八种引擎的使用场景说明:

  • 一、InnoDB 引擎

事务处理:适用于需要支持事务的应用,确保数据的一致性和完整性。例如银行交易系统、电商订单处理等,在这些场景中,多个操作需要作为一个原子单元执行,要么全部成功,要么全部失败。

高并发读写:具有良好的并发控制机制,能处理大量的并发读写操作。对于高流量的 Web 应用、企业级应用等,InnoDB 可以提供稳定的性能和数据可靠性。

外键约束:支持外键约束,可用于维护数据之间的关系。在复杂的数据模型中,确保数据的关联性和正确性。

用于应用系统,支持事务处理,具有 [ACID(原子性、一致性、隔离性、持久性)]

  • 二、MyISAM 引擎

以读为主的应用:对于主要进行读取操作而写入操作较少的场景,如数据仓库的只读查询、报表生成等。MyISAM 在读取性能上有一定优势。

快速插入和查询:如果需要频繁进行插入操作并且对查询性能要求不是特别高,可以考虑 MyISAM。例如日志记录系统,大量数据不断插入,而查询相对较少。

临时表:在一些临时数据存储的场景中,如数据处理的中间结果存储,可以使用 MyISAM 引擎创建临时表,因为它的创建和删除速度相对较快。


可以用于 数据仓库不支持事务处理和外键约束。以查询为主的应用,数据写入操作较少的情况。,对存储空间要求较高的应用。需要全文搜索功能的应用。读取速度比InnoDB 引擎快

  • 三、Memory 引擎

临时数据存储:适用于存储临时结果集或需要快速访问的数据。例如在一些数据处理过程中,需要临时存储中间结果,使用 Memory 引擎可以提高处理速度。

缓存应用:可以作为缓存层,存储经常访问的数据,以减少对磁盘的访问次数,提高查询性能。例如,将频繁查询的配置信息、字典数据等存储在 Memory 引擎表中。

快速测试环境:在开发和测试环境中,用于快速创建和测试表结构和查询,因为数据存储在内存中,操作速度非常快。

会占有比较多的磁盘空间和内容,比MyISAM 和 InnoDB 存储空间都要大

  • 四、Archive 引擎

归档数据存储:主要用于存储大量历史数据,这些数据很少被查询,但需要长期保存。例如日志归档、历史交易记录归档等。

数据备份:可以作为一种数据备份方式,将不常访问的数据归档到 Archive 引擎表中,以释放主存储的空间。

低资源需求:由于 Archive 引擎对存储资源的需求较低,适合在存储资源有限的环境中使用。

archive表特点

**

1.支持insert和select,drop

2.不支持DML操作,如delete,update,truncate

3.只支持在auto_increment的列上创建索引,其他列不支持索引**


  • 五、BLACKHOLE 引擎

测试复制配置:在设置和测试 MySQL 复制架构时,BLACKHOLE 引擎表可以模拟实际的数据写入操作,而无需担心数据的存储和管理。通过观察主从服务器之间对 BLACKHOLE 表的复制行为,可以验证复制配置是否正确。

性能测试:可以使用 BLACKHOLE 表来测试数据库的写入性能,而不会占用实际的磁盘空间。

日志记录的中间层:在某些情况下,可以将 BLACKHOLE 表用作日志记录的中间层,数据可以被记录但不实际存储,后续可以通过其他工具或机制进行处理。

不支持索引和事务

BLACKHOLE 引擎


  • 六、MRG_MyISAM 引擎

数据分区存储:当数据量非常庞大,单个表难以管理或者查询性能低下时,可以将数据划分到多个 MyISAM 表中,然后使用 MRG_MyISAM 引擎将这些表合并为一个逻辑表进行管理。例如日志记录系统、历史数据存储等。

多数据源合并:如果数据来自多个不同的数据源,但具有相同的结构,可以使用 MRG_MyISAM 将这些数据源合并为一个统一的视图,方便查询和分析。

临时数据分析任务:在进行一些临时的数据分析任务时,如果需要整合多个结构相同的表进行查询,MRG_MyISAM 可以快速搭建一个合并表,满足分析需求。

MRG_MyISAM 是所有引擎中 存储空间最小的

  • 七、CSV 引擎

数据交换:非常适合用于在不同系统之间进行数据交换。由于 CSV 是一种通用的文本格式,几乎所有的软件都可以读取和处理 CSV 文件。

临时存储:当需要临时存储一些简单的数据,并且不关心事务和索引时,可以使用 CSV 引擎。比如在进行一些快速的数据测试或临时的数据存储需求时。

简单数据记录:对于一些只需要简单记录数据,而不需要复杂查询和事务处理的应用场景,如记录一些日志信息或简单的统计数据。

不支持索引:、不支持分区: 所有列必须为NOT NULL:

  • 八、PERFORMANCE_SCHEMA引擎

一般是系统使用的表引擎

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
135 1
|
2月前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
62 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
19天前
|
存储 关系型数据库 MySQL
MySQL引擎InnoDB和MyISAM的区别?
InnoDB是MySQL默认的事务型存储引擎,支持事务、行级锁、MVCC、在线热备份等特性,主索引为聚簇索引,适用于高并发、高可靠性的场景。MyISAM设计简单,支持压缩表、空间索引,但不支持事务和行级锁,适合读多写少、不要求事务的场景。
50 9
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
2月前
|
存储 关系型数据库 MySQL
mysql 引擎概述
MySQL存储引擎是处理不同类型表操作的组件,InnoDB是最常用的默认引擎,支持事务、行级锁定和外键。MySQL采用插件式存储引擎架构,支持多种引擎,如MyISAM、Memory、CSV等,每种引擎适用于不同的应用场景。通过`SHOW ENGINES`命令可查看当前MySQL实例支持的存储引擎及其状态。选择合适的存储引擎需根据具体业务需求和引擎特性来决定。
|
1月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
2月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
91 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
2月前
|
存储 关系型数据库 MySQL
Key_Value 形式 存储_5级省市城乡划分代码 (mysql 8.0 实例)
本文介绍了如何使用MySQL8.0数据库中的Key_Value形式存储全国统计用区划代码和城乡划分代码(5级),包括导入数据、通过数学函数提取省市区信息,以及查询5级行政区划的详细数据。
39 0
|
2月前
|
算法 关系型数据库 MySQL
复购率 mysql 实例(sample database classicmodels _No.1 )
复购率 mysql 实例(sample database classicmodels _No.1 )
34 0
|
3月前
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
225 0