一、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引擎
一般是系统使用的表引擎