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


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 引擎可以通过简单的文件复制来进行数据备份和恢复,

<think>好的,我现在需要帮助用户解决Navicat 15在还原MySQL数据库时遇到的.nv3文件失败的问题。首先,我需要了解用户的具体情况,但根据现有的信息,可能的问题可能出在多个方面。让我逐步分析可能的原因对应的解决方案。 首先,用户提到使用的是.nv3文件,这是Navicat的备份文件格式。还原过程中失败,可能的原因包括备份文件损坏、权限问题、字符集或排序规则不匹配、SQL语法错误、存储引擎问题、Navicat版本兼容性以及MySQL服务器配置等。 根据引用[1][2],Navicat for MySQL需要正确连接MySQL服务器,并且用户需要确保MySQL服务已启动,端口3306可用。所以第一步应该确认MySQL服务器运行正常,并且Navicat的连接配置正确,包括主机名、端口、用户名密码。 接下来,备份文件本身可能存在问题。用户应该检查.nv3文件是否完整,是否在备份过程中出现中断或错误。可以尝试在Navicat中重新备份一个小型数据库,然后还原测试,以确认备份功能是否正常。 权限问题也是一个常见因素。用户使用的MySQL账户可能没有足够的权限来创或执行某些操作。需要确保还原时使用的账户具有CREATE、INSERT、DROP等必要权限,尤其是在目标数据库上。可能需要用root账户或更高权限的账户进行还原。 字符集排序规则的问题也可能导致失败。备份的数据库还原的目标数据库如果字符集不一致,可能会在创时出错。用户需要检查原始数据库目标数据库的字符集设置,确保它们一致,或者在还原时进行相应的转换。 备份文件中可能包含特定于存储引擎的SQL语句,如果目标MySQL服务器不支持或未启用该存储引擎(如InnoDB或MyISAM),就会失败。用户需要确认目标MySQL实例支持备份文件中使用的存储引擎,并在必要时修改SQL语句或服务器配置。 Navicat版本兼容性也是一个可能的问题。虽然用户使用的是Navicat 15,但如果备份文件来自旧版本,或者MySQL服务器版本较新,可能存在兼容性问题。议更新Navicat到最新版本,并确保MySQL服务器版本与备份时的版本兼容。 此外,查看Navicat的还原日志或错误信息是解决问题的关键。用户应该在还原过程中注意查看错误提示,根据具体的错误信息进一步排查。例如,如果出现语法错误,可能需要手动修改备份文件中的SQL语句,虽然.nv3是二进制格式,可能需要使用Navicat的备份结构或数据导出为SQL文件后再检查。 还有,临时解决方案可以是使用命令行工具如mysql来导入导出的SQL文件,或者使用其他备份恢复方法,比如mysqldump生成的SQL文件,这可能更可靠。 最后,如果以上方法都无法解决,可能需要联系Navicat的技术支持,或者考虑备份文件是否损坏,需要从其他备份源恢复。 总结可能的解决步骤:检查MySQL连接权限,验证备份文件完整性,核对字符集存储引擎设置,查看错误日志,尝试其他恢复方法。同时,用户应确保NavicatMySQL的版本兼容,必要时进行升级或调整配置。</think>### Navicat 15还原MySQL.nv3文件失败的解决方案 #### 1. 检查备份文件完整性 - **验证备份文件来源**:确认.nv3文件是通过Navicat正常备份生成的,未在传输过程中损坏。尝试用Navicat打开备份文件预览结构,若无法加载则可能文件已损坏[^2]。 - **重新备份测试**:新测试数据库,执行备份后尝试还原,验证Navicat功能是否正常。 #### 2. 确认MySQL服务与权限 - **服务状态检查**:确保MySQL服务已启动且端口3306可访问(Navicat默认使用此端口)[^1]。 - **用户权限配置**:还原时使用的MySQL账户需具备以下权限: - `CREATE`() - `DROP`(覆盖现有) - `INSERT`(插入数据) ```sql GRANT CREATE, DROP, INSERT ON target_database.* TO 'username'@'localhost'; ``` #### 3. 字符集与排序规则匹配 - **查看原始数据库配置**: ```sql SHOW VARIABLES LIKE 'character_set_database'; SHOW VARIABLES LIKE 'collation_database'; ``` - **修改目标数据库配置**:在还原前手动设置字符集一致: ```sql ALTER DATABASE target_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 4. 存储引擎兼容性 - **检查语句**:若备份文件包含`ENGINE=InnoDB`等语句,需确保目标MySQL支持该引擎。 - **修改默认引擎**(必要时): ```sql SET default_storage_engine = InnoDB; ``` #### 5. 版本兼容性处理 - **升级Navicat**:确保使用Navicat 15最新版本(如15.0.30),避免旧版本与新MySQL特性冲突。 - **核对MySQL版本**:若备份来自MySQL 8.0而还原到5.7,需注意语法或功能差异。 #### 6. 分析错误日志 - **查看Navicat操作日志**:还原失败时,Navicat会提示具体错误(如`ERROR 1064: SQL syntax error`)。 - **示例错误处理**: - **外键约束失败**:暂时关闭外键检查: ```sql SET FOREIGN_KEY_CHECKS = 0; ``` - **重复名**:勾选Navicat还原选项中的`DROP TABLE IF EXISTS`。 #### 7. 替代恢复方案 - **导出为SQL文件**:通过Navicat将.nv3备份转换为SQL文件后手动执行: 1. 右键备份文件 -> 转储SQL文件 -> 结构数据 2. 使用命令行导入: ```bash mysql -u root -p target_database < backup.sql ``` - **使用`mysqlcheck`修复**(若部分损坏): ```bash mysqlcheck -u root -p --repair target_database ``` #### 8. 高级排查 - **二进制日志分析**:启用MySQL的二进制日志定位具体失败操作: ```ini [mysqld] log-bin=mysql-bin ``` - **调试模式运行Navicat**:通过命令行启动Navicat并捕获详细日志(仅限Windows): ```cmd "C:\Program Files\Navicat\Navicat for MySQL\navicat.exe" /console ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小Tomkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值