MySQL 中可以通过添加主键来节省磁盘空间吗?(译文)
从历史上看,MySQL 不需要在表上定义显式主键,直到今天默认都是这样。不过,这种要求是通过两种复制方法施加的:组复制和 Percona XtraDB 集群 (PXC),默认情况下不允许使用没有主键的表。对于缺少主键的表,有许多众所周知的负面性能影响,其中最痛苦的是糟糕的复制速度。
今天,简单说明一下使用主键的另一个原因:磁盘上的数据大小!
请看示例:
mysql > show create table test1\G
*************************** 1. row ***************************Table: test1
Create Table: CREATE TABLE `test1` (`a` int NOT NULL,`b` bigint DEFAULT NULL,KEY `a` (`a`),KEY `b` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
填充 10M
测试行,磁盘占用 748M
。现在,假设我的测试表有具有唯一值的列 “a”
:
mysql > select count(*) from test1;
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
1 row in set (1.34 sec)mysql > select count(DISTINCT(a)) from test1;
+--------------------+
| count(DISTINCT(a)) |
+--------------------+
| 10000000 |
+--------------------+
1 row in set (5.25 sec)
将 (secondary) 索引类型更改为 primary:
mysql > alter table test1 add primary key(a), drop key a;
Query OK, 0 rows affected (48.90 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql > show create table test1\G
*************************** 1. row ***************************Table: test1
Create Table: CREATE TABLE `test1` (`a` int NOT NULL,`b` bigint DEFAULT NULL,PRIMARY KEY (`a`),KEY `b` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
结果重新创建了表,它在磁盘上的大小减小到 588M
,相当显着!为什么会这样?我们有完全相同的数据,并且在两种情况下,两列都已编入索引!让我们看看更改前后表的更多详细信息。
当两个列都通过辅助键编制索引时,我们可以看到以下内容
mysql > select SPACE,INDEX_ID,i.NAME as index_name, t.NAME as table_name, CLUST_INDEX_SIZE, OTHER_INDEX_SIZE from information_schema.INNODB_INDEXES i JOIN information_schema.INNODB_TABLESPACES t USING(space) JOIN information_schema.INNODB_TABLESTATS ts WHERE t.NAME=ts.NAME AND t.NAME='db1/test1'\G
*************************** 1. row ***************************SPACE: 50INDEX_ID: 232index_name: atable_name: db1/test1
CLUST_INDEX_SIZE: 24699
OTHER_INDEX_SIZE: 22242
*************************** 2. row ***************************SPACE: 50INDEX_ID: 231index_name: btable_name: db1/test1
CLUST_INDEX_SIZE: 24699
OTHER_INDEX_SIZE: 22242
*************************** 3. row ***************************SPACE: 50INDEX_ID: 230index_name: GEN_CLUST_INDEXtable_name: db1/test1
CLUST_INDEX_SIZE: 24699
OTHER_INDEX_SIZE: 22242
3 rows in set (0.00 sec)
所以,有第三个索引!通过 innodb_ruby 工具查看每个索引的更详细视图,它是大小最大的索引 (id=230)
$ innodb_space -f msb_8_3_0/data/db1/test1.ibd space-indexes
id name root fseg fseg_id used allocated fill_factor
230 4 internal 3 27 27 100.00%
230 4 leaf 4 24634 24672 99.85%
231 5 internal 5 21 21 100.00%
231 5 leaf 6 12627 12640 99.90%
232 6 internal 7 13 13 100.00%
232 6 leaf 8 9545 9568 99.76%
这就是 InnoDB 引擎的工作原理;如果未定义显式 PK,它将添加一个名为 .由于它包含整个数据行,因此其大小开销很大。GEN_CLUST_INDEX
将二级索引替换为显式主键后,不再需要隐藏的索引。因此,我们总共剩下两个索引:
mysql > select SPACE,INDEX_ID,i.NAME as index_name, t.NAME as table_name, CLUST_INDEX_SIZE,OTHER_INDEX_SIZE from information_schema.INNODB_INDEXES i JOIN information_schema.INNODB_TABLESPACES t USING(space) JOIN information_schema.INNODB_TABLESTATS ts WHERE t.NAME=ts.NAME AND t.NAME='db1/test1'\G
*************************** 1. row ***************************SPACE: 54INDEX_ID: 237index_name: btable_name: db1/test1
CLUST_INDEX_SIZE: 23733
OTHER_INDEX_SIZE: 13041
*************************** 2. row ***************************SPACE: 54INDEX_ID: 236index_name: PRIMARYtable_name: db1/test1
CLUST_INDEX_SIZE: 23733
OTHER_INDEX_SIZE: 13041
2 rows in set (0.01 sec)
$ innodb_space -f msb_8_3_0/data/db1/test1.ibd space-indexes
id name root fseg fseg_id used allocated fill_factor
236 4 internal 3 21 21 100.00%
236 4 leaf 4 20704 23712 87.31%
237 5 internal 5 17 17 100.00%
237 5 leaf 6 11394 13024 87.48%
隐藏的(内部)聚集索引 (GEN_CLUST_INDEX
) 与生成的不可见主键 (GIPK
)
每个 InnoDB table 都有一个集群键,因此不定义一个不会节省任何磁盘空间,有时恰恰相反,如上所述。因此,即使有问题的表的现有列都不是唯一的,最好还是添加另一个唯一列作为主键。内部的没有暴露在上层 MySQL 层,只有 InnoDB 引擎知道它,因此它对复制速度毫无用处。因此,显式 PK 始终是更好的解决方案。
但是,如果由于遗留应用程序问题而无法添加新的 PK 列,则仍应使用不可见的主键来强制实施主键。这样,您将获得性能优势,同时,更改对应用程序是透明的。GEN_CLUST_INDEX
让我们看看它在实践中是如何工作的:
mysql > set sql_require_primary_key=1;
Query OK, 0 rows affected (0.00 sec)mysql > create table nopk (a int);
ERROR 3750 (HY000): Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set. Add a primary key to the table or unset this variable to avoid this message. Note that tables without a primary key can cause performance problems in row-based replication, so please consult your DBA before changing this setting.mysql > set sql_generate_invisible_primary_key=1;
Query OK, 0 rows affected (0.00 sec)mysql > create table nopk (a int);
Query OK, 0 rows affected (0.02 sec)mysql > show create table nopk\G
*************************** 1. row ***************************Table: nopk
Create Table: CREATE TABLE `nopk` (`my_row_id` bigint unsigned NOT NULL AUTO_INCREMENT /*!80023 INVISIBLE */,`a` int DEFAULT NULL,PRIMARY KEY (`my_row_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)mysql > select * from nopk;
+------+
| a |
+------+
| 100 |
+------+
1 row in set (0.00 sec)
因此,我们的应用程序根本不知道新列。但是如果需要,我们仍然可以使用它,例如,轻松地将表读取或写入拆分为可预测的块:
mysql > select my_row_id,a from nopk;
+-----------+------+
| my_row_id | a |
+-----------+------+
| 1 | 100 |
+-----------+------+
1 row in set (0.00 sec)
请注意,对于缺少主键的现有架构,在强制实施 sql_require_primary_key
变量之前,最好先启用该sql_generate_invisible_primary_key
并使用逻辑转储和还原重新创建数据。简单的表优化不会添加不可见的 PK。无论如何,拥有一个不可见的 PK 应该是遗留应用程序的双赢解决方案。
总结一下:
- 可能值得检查一下更改索引类型是否可以节省磁盘空间!
- 如果由于应用程序限制而无法添加主键,请考虑使用不可见的主键!
相关文章:
MySQL 中可以通过添加主键来节省磁盘空间吗?(译文)
从历史上看,MySQL 不需要在表上定义显式主键,直到今天默认都是这样。不过,这种要求是通过两种复制方法施加的:组复制和 Percona XtraDB 集群 (PXC),默认情况下不允许使用没有主键的表。对于缺少…...
Django在终端创建项目(pycharm Windows)
1.选择目录 选择或新建一个文件夹,作为项目保存的地方 2.右键在终端打开 3.确定django-admin.exe安装位置 找到自己安装django时,django-admin.exe安装的位置,例如 4.运行命令 使用django-admin.exe的绝对路径,在刚才打开的终端…...
IDEA接入DeepSeek
IDEA 目前有多个途径可以接入deepseek,比如CodeGPT或者Continue,这里借助CodeGPT插件接入,CodeGPT目前用的人最多,相对更稳定 一、安装 1.安装CodeGPT idea插件市场找到CodeGPT并安装 2.创建API Key 进入deepseek官网…...
Linux 内核自旋锁spinlock(二)--- ticket spinlock
文章目录 前言一、ticket spinlock二、源码分析2.1 spin_lock_init2.2 spin_lock2.2 spin_unlock 参考资料 前言 自旋锁是 Linux 内核中最底层的互斥机制。因此,它们对内核的安全性和性能有着巨大的影响,因此对各种(特定架构的)自…...
Elixir语言的计算机基础
Elixir语言的计算机基础 引言 Elixir是一种现代的编程语言,建立在Erlang虚拟机(BEAM)上,专注于并发、分布式系统和容错能力。随着互联网的发展,应用程序的需求变得越来越复杂,Elixir凭借其高效的性能、灵…...
MindStudio制作MindSpore TBE算子(二)算子测试
在上一节中,成功制作了Mindspore的Add算子,具体可以查看MindStudio制作MindSpore TBE算子(一)算子制作,这一节,一起看看如何对算子进行测试。 建议参考以下内容一起食用: 算子代码实现 MindSpor…...
深度解读城市地下网管管廊改造要点
引 言 近日国家发改委和住建部联合发布通知(后附),要求各地抓紧编制“城市地下管网和综合管廊建设改造实施方案”并于12月27日前报国家发改委和住建部相关司处,逾期未报的城市(县、区),视同自愿…...
Docker 部署 redis | 国内阿里镜像
一、简易单机版 1、镜像拉取 # docker hub 镜像 docker pull redis:7.0.4-bullseye # 阿里云镜像 docker pull alibaba-cloud-linux-3-registry.cn-hangzhou.cr.aliyuncs.com/alinux3/redis_optimized:20240221-6.2.7-2.3.0 2、运行镜像 docker run -itd --name redis \n …...
Day88:加载游戏图片
在游戏开发中,加载和显示图片是非常常见的需求,尤其是在 2D 游戏 中,角色、背景、道具、敌人等都需要用图片来表示。今天,我们将学习如何在 Python 游戏开发中使用 Pygame 加载并显示图片。 1. 加载游戏图片的基本步骤 在 Pygame 中加载图片通常需要以下几个步骤: 导入 P…...
Elasticsearch:在 Elastic 中玩转 DeepSeek R1 来实现 RAG 应用
在这个春节,如一声春雷,DeepSeek R1 横空出世。现在人人都在谈论 DeepSeek R1。这个大语言模型无疑在中国及世界的人工智能发展史上留下了重要的里程碑。那么我们改如何结合 DeepSeek R1 及 Elasticsearch 来实现 RAG 呢?在之前的文章 “使用…...
SOME/IP报文格式及发现协议详解
在之前的文章中,我们介绍了SOME/IP协议的几种服务接口。在本篇博客中,主要介绍some/ip协议传输的header报文格式以及SOME/IP-SD发现协议。 目录 流程 报文格式 Message ID Length Request ID protocal version/Interface Version Message Type…...
elementplus 使用日期时间选择器,设置可选范围为前后大于2年且只能选择历史时间不能大于当前时间点
需求:时间选择器可选的时间范围进行限制,-2年<a<2年且a<new Date().getTime()核心:这里需要注意plus版没有picker-options换成disabled-date属性了,使用了visible-change和calendar-change属性逻辑:另设一个参…...
C语言·关键字·char关键字
C语言菜鸟入门关键字char关键字_c char-CSDN博客...
Ansible简单介绍及用法
一、简介 Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。 Ansible与Saltstack最大的区别是…...
Mac 本地搭建自己的 DeepSeek
Mac 本地搭建自己的 DeepSeek 安装 Ollama通过Ollama命令安装 DeepSeek 模型安装一个UI客户端,提升体验 注:本文章完全参考网上教程,没有丝毫原创,只是记录一下我本人在安装DeepSeek 的步骤 安装 Ollama https://ollama.com/dow…...
深度学习-交易预测
下面为你详细介绍如何使用Python结合深度学习库TensorFlow和Keras来构建一个简单的交易预测模型。在这个示例中,我们以股票价格预测为例,假设我们要根据过去一段时间的股票价格数据来预测未来的价格走势。 步骤分析 数据准备:获取股票价格数…...
Prompt逆向工程:如何“骗“大模型吐露其Prompt?
提示词的“逆向工程”,让AI大语言模型帮你反推提示词 一、前言 在日常生活中,我们不时会遇到一些令人惊艳的文本,不论是一篇精彩绝伦的小说、一篇深入浅出的科普文章,还是一篇充满热情的音乐推荐,它们都能在我们的心…...
游戏手柄Type-c方案,支持一边充电一边传输数据
乐得瑞推出LDR6023SS,专门针对USB-C接口手机手柄方案,支持手机快充,支持任天堂游戏机,PS4等设备~同时支持手机充电跟数据传输 1、概述 LDR6023SS SSOP16 是乐得瑞科技针对 USB Type-C 标准中的 Bridge 设备而开发的双 USB-C DRP …...
Vue设计模式到底多少种?
Vue设计模式到底多少种? 很多同学问,Vue到底有多少种设计模式??各个模式到底是什么意思??又各自适合什么场景?? 这里我给大家直接说下,Vue的设计模式没有一个固定的数值…...
C++ 中的 std::timed_mutex 和 std::recursive_timed_mutex
1、背景 在多线程编程中,互斥锁(Mutex)是用于保护共享资源的重要工具。C 标准库提供了多种互斥锁类型,其中 std::timed_mutex 和 std::recursive_timed_mutex 是两种支持超时功能的互斥锁。在阅读FastDDS源码时,发现了…...
HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)
目录 前言 GPIO(通用输入输出引脚) 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断(EXTI) 深入中断(内部机制及原理) 外部中断/事件控…...
Kotlin实战经验:将接口回调转换成suspend挂起函数
在 Kotlin 协程中, suspendCoroutine 和 suspendCancellableCoroutine 是用于将回调或基于 future 的异步操作转换成挂起函数。 suspendCoroutine 用途:将回调式异步操作转换为可挂起函数 行为: 启动一个新的协程来处理基于回调的操作挂起当前协程,直到调用回调回调负责…...
银行国际结算
银行国结项目,即国际结算项目,是银行业务中的重要组成部分,它涉及跨国界的货币收付和资金转移。 一、银行国结项目的定义 银行国结项目是指银行为国际贸易、投资等活动提供的国际结算服务,包括各种国际支付和资金清算业务。这些…...
java后端开发day13--面向对象综合练习
(以下内容全部来自上述课程) 注意:先有javabean,才能创建对象。 1.文字版格斗游戏 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候&#…...
Vue解决父子组件传值,子组件改变值后父组件的值也改变的问题
vue开发过程中,父组件通过props传值给子组件,子组件在页面展示父组件的值,在操作子组件值以后,即使不点击确定按钮,父组件中的值也发生了变化,但是需求是操作子组件数据以后,必须点击"确定…...
【通俗解释,入门级】DeepSeek - R1 - Zero:强化学习提升LLM推理能力的奥秘
DeepSeek - R1 - Zero:强化学习提升LLM推理能力的奥秘 第一节:强化学习在DeepSeek - R1 - Zero中的基本概念与公式解释【通俗解释】 强化学习在DeepSeek - R1 - Zero里就像是一位“聪明的探险家”,在各种可能的推理路径中探索,通…...
《图解设计模式》笔记(六)访问数据结构
十三、Visitor 模式:访问数据结构并处理数据 Visitor:访问者 我们会“处理”在数据结构中保存着的元素,通常把“处理”代码放在表示数据结构的类中。 但每增加一种处理,就不得不去修改表示数据结构的类。 在 Visitor模式中&am…...
windows11上,使用pipx安装Poetry,Poetry的安装路径是什么?
当使用 pipx 安装 Poetry 时,pipx 会将 Poetry 安装到一个独立的虚拟环境中,并将其可执行文件链接到一个集中的目录中。以下是 pipx 安装 Poetry 时的路径信息: 1. Poetry 的安装路径 pipx 会为每个工具(如 Poetry)创…...
使用 vcpkg 简化 C++ 项目依赖管理
使用 vcpkg 简化 C 项目依赖管理 什么是 vcpkg? vcpkg 是微软推出的跨平台 C/C 包管理工具,支持 Windows/Linux/macOS。它可以帮助开发者: ✅ 一键安装 2000 开源库 ✅ 自动解决依赖关系 ✅ 生成 Visual Studio 集成配置 ✅ 支持自定义编译…...
怎样确定网站访问速度出现问题是后台还是服务器造成的?
网站的访问速度会影响到用户的体验感,当网络过于卡顿或访问速度较慢时,会给用户带来不好的体验感,但是网站访问速度不仅会是后台造成影响的,也可能是服务器的原因,那么我们该如何分辨呢? 当网站使用了数据库…...
【Elasticsearch】管道聚合
管道聚合就是在已有聚合结果之上在进行聚合,管道聚合是针对于聚合的聚合 在 Elasticsearch 中,管道聚合(Pipeline Aggregations)是一种特殊的聚合类型,用于对其他聚合的结果进行进一步的计算和处理,而不是直…...
CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)
代码地址:CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据) CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测 一、引言 1.1、研究背景和意义 随着全球能源危机和环境问题的日…...
后端java工程师经验之谈,工作7年,mysql使用心得
mysql 工作7年,mysql使用心得 mysql1.创建变量2.创建存储过程2.1:WHILE循环2.2:repeat循环2.3:loop循环2.4:存储过程,游标2.5:存储过程,有输入参数和输出参数 3.三种注释写法4.case …...
综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型(Matlab)
基于随机变异系数-TOPSIS组合法的综合评价模型 代码获取私信回复:综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型(Matlab) 一、引言 1.1、研究背景与意义 在现代社会,随着信息量的不断增加和数据复杂性的提升&#…...
Visual Studio Code中文出现黄色框子的解决办法
Visual Studio Code中文出现黄色框子的解决办法 一、vsCode中文出现黄色框子-如图二、解决办法 一、vsCode中文出现黄色框子-如图 二、解决办法 点击 “文件”点击 “首选项”点击 “设置” 搜索框直接搜索unicode选择“文本编辑器”,往下滑动,找到“Un…...
手写一个C++ Android Binder服务及源码分析
手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…...
【AIGC】在VSCode中集成 DeepSeek(OPEN AI同理)
在 Visual Studio Code (VSCode) 中集成 AI 编程能力,可以通过安装和配置特定插件来实现。以下是如何通过 Continue 和 Cline 插件集成 DeepSeek: 一、集成 DeepSeek 获取 DeepSeek API 密钥:访问 DeepSeek 官方网站,注册并获取 …...
使用 Three.js 实现热力渐变效果
大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...
Vue事件处理 - 绑定事件
Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 绑定事件及事件处理 目录 事件处理 绑定方式 函数表达式 绑定函数名 输入框绑定事件 拿到输入框的值 传值加事件源 事件第三种写法 总结 事件处理 绑定方式 函数表达式 在按钮上使用函数表达式绑定事…...
DVWA靶场通关——SQL Injection篇
一,Low难度下unionget字符串select****注入 1,首先手工注入判断是否存在SQL注入漏洞,输入1 这是正常回显的结果,再键入1’ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server ver…...
DeepSeek 助力 Vue 开发:打造丝滑的步骤条
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
今日学习总结
1.完成了P2242公路维修问题 2.完成了P10605下头论文 1.P2242 思考:建立单向链表,使用qsort降序排序。 #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<string.h> int n,m; int a[15005],b[15005],ans;…...
Transformer 的辉煌与大模型方向确立,点燃AGI之火把
GPT3,指明大模型发展方向,点燃大模型软件行业繁荣之火,目前大模型有100万个。 DeepSeek-V3,指明下一个阶段大模型发张方向,破壁: 资金壁垒:训练成本降低,适配丰富硬件,总…...
DeepSeek-Coder系列模型:智能编程助手的未来
文章目录 一、模型架构与核心功能1. 模型架构2. 核心功能 二、多语言支持与代码生成1. Python代码生成2. Java代码生成3. C代码生成4. JavaScript代码生成 三、仓库级代码理解1. 代码结构分析2. 上下文理解 四、FIM填充技术1. 函数自动填充2. 代码补全 五、应用场景1. 代码补全…...
微信小程序longpress以及touchend的bug,touchend不触发,touchend不执行
核心原因:bind:touchend里面不能放wx:if 举例: <view bind:longpress"longpressBtn" bind:touchend"touchendBtn"><view wx:if"{{isRecording}}" >松开发送</view><view wx:else"…...
多租户架构设计与实现:基于 PostgreSQL 和 Node.js
多租户架构设计与实现:基于 PostgreSQL 和 Node.js 引言 多租户架构(Multi-tenancy)是现代 SaaS(Software as a Service)应用的核心设计模式之一。它允许多个租户共享同一套应用实例,同时确保数据隔离和安全性。本文将详细介绍多租户架构的设计方案,并基于 PostgreSQL…...
四、OSG学习笔记-基础图元
前一章节: 三、OSG学习笔记-应用基础-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145514021 代码:CuiQingCheng/OsgStudy - Gitee.com 一、绘制盒子模型 下面一个简单的 demo #include<windows.h> #include<osg/Node&…...
windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)
环境准备: 确定部署方案请参考:DeepSeek-R1系列(1.5b/7b/8b/32b/70b/761b)大模型部署需要什么硬件条件-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确定部署方案:DeepSeek-R1:7b + Ollama + Open WebUI 1. 安装 Ollama Ollama 是一…...
功能架构元模型
功能架构的元模型是对功能架构进行描述和建模的基础框架,它有助于统一不同团队对系统的理解,并为系统的设计和开发提供一致的标准和规范。虽然具体的元模型可能因不同的应用领域和特定需求而有所差异,但一般来说,功能架构的元模型可以涵盖以下几个方面: 组件/模块元模型:…...
云计算——AWS Solutions Architect – Associate(saa)4.安全组和NACL
安全组一充当虚拟防火墙对于关联实例,在实例级别控制入站和出站流量。 网络访问控制列表(NACL)一充当防火墙关联子网,在子网级别控制入站和出站流量。 在专有网络中,安全组和网络ACL(NACL)一起帮助构建分层网络防御。 安全组在实例级别操作…...