我一直在阅读/误解 EBS 中的输入和输出成本为每百万 0.10 美元。这是否意味着 1M 查询的成本为 0.10 美元?b/ci 我正在创建一个基于 Web 的测试,它们需要大量查询来保存进度、结果和考试。我还在我的 sql 中使用 blob 对象来存储图像。那么这是否意味着我为 1m 查询支付 0.10 美元?
答案1
EBS 是原始的块级存储。可以将其视为虚拟磁盘。您请求一个 EBS 卷,将其安装在 AWS 机器实例上,对其进行格式化,然后在其上存储数据。将数据存储在 EBS 卷上需要花钱,将数据从 AWS 外部移入和移出 EBS 共享也需要花钱。从 AWS 内部访问它是免费的,在这种情况下,您只需支付存储费用。
因此,如果您在将数据存储在 EBS 卷上的 AWS 实例上运行 SQL 服务器,则将 SQL 数据存储在 EBS 磁盘上需要付费,但对在 AWS 实例上运行的 SQL 服务器进行查询则无需付费(假设事务可以针对完全内存映射的数据进行)。这只是通过网络进行的数据传输,而这或多或少就是 AWS 实例最初的设计目的:提供数据。
要估算 EBS 成本,您需要确定 SQL 服务器将在磁盘上存储多少数据,而不是将针对 SQL 服务器进行多少查询。磁盘上的数据:这就是基于 AWS 的设计的 EBS 成本。该 EBS 链接末尾的部分它为您提供了以下有关估算 EBS 成本的建议:
使用 Amazon Elastic Block Store,您只需按实际使用量付费。卷存储按您分配的量收费,直到您释放为止,价格为每月每分配 GB 0.10 美元。Amazon EBS 还按您对卷发出的每 100 万个 I/O 请求收费 0.10 美元。可以使用 IOSTAT 等程序随时测量系统的确切 I/O 使用情况。但是,应用程序和操作系统通常会执行不同级别的缓存,因此除非您将所有 I/O 同步到磁盘,否则账单上的 I/O 请求数量可能会低于应用程序看到的数量。
例如,一个中型网站数据库的大小可能是 100 GB,预计一个月内每秒平均有 100 次 I/O。这意味着每月的存储成本为 10 美元(100 GB x 0.10 美元/月),每月的请求成本约为 26 美元(约 260 万秒/月 x 100 次 I/O/秒 * 0.10 美元/百万 I/O)。
快照存储取决于您的数据在 Amazon S3 中占用的空间量。由于数据在保存到 Amazon S3 之前会被压缩,并且 Amazon EBS 不会保存空块,因此快照的大小可能会比卷的大小小得多。对于卷的第一个快照,Amazon EBS 会将您的数据的完整副本保存到 Amazon S3。但是,对于每个增量快照,只有您的 Amazon EBS 卷中已更改的部分才会保存到 Amazon S3。
卷数据在传输到 Amazon S3 之前会被拆分成块。虽然块的大小可能会在未来的优化过程中发生变化,但将特定快照保存到 Amazon S3 所需的 PUT 数量可以通过将自上次快照以来发生变化的数据大小除以 4MB 来估算。相反,将快照从 Amazon S3 加载到 Amazon EBS 卷时,将快照的完整大小除以 4MB 来估算完全加载卷所需的 GET 请求数量。您还将按照正常的 Amazon S3 费率支付 GET 和 PUT 费用。
答案2
这 0.10 美元是根据 I/O 请求数而不是查询数收取的。如果您使用 EBS 存储数据库,则每个数据库查询可能需要任意数量的 I/O 请求。例如,UPDATE 查询需要几个操作才能完成:它需要读取数据库以查找要更改的行,然后写回已更改的行,并可能写入已更改的索引。但是,如果数据库服务器已将表缓存在内存中,则它不需要从 EBS 卷中读取以查找要更改的行,因此它将需要更少的 I/O 请求。没有简单的方法可以说“0.10 美元为您购买了这么多查询”。