- 大数据存储中 IOPS 和吞吐量之间的主要区别是什么?
- 文件大小对 IOPS 有影响吗?为什么?
5 回答
IOPS 衡量每秒读取和写入操作的数量,而吞吐量衡量每秒读取或写入的位数。
尽管它们测量不同的事物,但它们通常彼此跟随,因为 IO 操作具有大致相同的大小。
如果你有大文件,你只需要更多的 IO 操作来读取整个文件。文件大小对 IOPS 没有影响,因为它衡量的是读取或写入的集群数量,而不是文件数量。
如果您有小文件,则会有更多开销,因此虽然 IOPS 和吞吐量看起来不错,但您可能会遇到较低的实际性能。
这是我在谈论吞吐量和 IOPS 时提出的类比。
把它想象成:
您有 4 个大小相同的桶(磁盘块),您想用水填充或清空。
您将使用水壶将水转移到水桶中。现在你的问题是:
在给定的时间(每秒),你可以倒(写)或取出(读)多少壶水?这是 IOPS。
在给定时间(每秒),水壶可以连续进出水桶的水量(bit、kb、mb 等)是多少?这是吞吐量。
此外,您倒水和/或取水的过程会有所延迟。这是延迟。
谈论 IOPS 和吞吐量时需要考虑 3 件事:
- 大小(文件大小/块大小)
- 模式(随机/顺序)
- 混合(读/写)百分比
磁盘 IOPS 描述了磁盘上每秒输入/输出操作的计数,与块大小无关。
磁盘吞吐量描述了每秒可以传输多少数据,因此块大小在计算应用程序所需的吞吐量时起着巨大的作用
让我们以 3000 IOPS 和 SQL 数据库引擎为例,db 引擎的块大小称为页面大小,对于 SQL Server,它等于 8 KB。如果您想计算实际吞吐量,如果定义了 IOPS,您将得到以下公式:
throughput = [IOPS] * [block size] = 3000 * 8 = 24 000 KB/s = 24 MB/s
IOPS - 读写操作的数量,主要用于 AWS 中用于 Cassandra 等数据库的 OLTP 事务。
吞吐量- 是每秒传输的位数。即每秒传输的数据。主要用于大数据hadoop、kafka流等高数据传输应用的单元
IOPS - 存储系统从开始到结束每秒执行输入/输出操作所花费的时间构成 IOPS。
吞吐量- 以每秒兆字节为单位的数据传输速度通常称为吞吐量。早些时候,它以千字节为单位。但是现在这个标准已经变成了兆字节。
有关此的更多信息,请参阅:IOPS 和吞吐量之间有什么区别?