我正在将 mysql 数据库的一部分迁移到 AWS。有问题的数据是 99% 写入,每行大约有 1k 个 varchar 字段、一个日期时间和 4 个整数。
我估计我们需要在高峰时段插入 20-25k 条记录/小时。
我在当前数据库上运行 iostat -h,它报告了大约 40 tps。
我如何确定我需要什么类型的 IOPS?
seh*_*ope 12
你必须测试它。
您可以进行一些包络计算来近似每个插入的 I/O 数量,将其乘以每秒事务数,添加一些缓冲空间等,但仅对其进行测试要容易得多。
最简单的方法是分配一个最佳猜测,然后返回并增加或减少它以匹配您的真实世界测试。这是使用基于云的环境的奢侈品之一,硬件更改的资本成本很低,并且此类更改通常只需要配置更新。对于 EBS 卷,您不能只增加 IOPS 的数量,您还必须扩大卷的大小1。您始终可以创建一个新卷并复制您的数据。会有一些停机时间,但是如果您的数据不是很大,那么它应该不会太多,因为它是原始副本。
这是对所需 I/O 数量的猜测。同样,这只是一个猜测,因为具体取决于索引的数量以及您的流量是平稳还是高峰。在 25K tx/小时,你有大约 7 tx/秒。每行的大小并不是特别相关,因为它小于单个 I/O (4K) 的大小。每个事务将执行 1-5 IOP(主要插入加上一对索引树插入)之间的某处,所以让我们说 ~35/s。
我说从最低 100 IOPS 开始,并在必要时进行扩展。
我使用了基本的 iostat (iostat -h) 工具来了解我当前使用了多少 iops。从那我推断出如果我的负载量低于该负载量的 4 倍,我会使用多少并使用该量。对我来说,结果是 780 IOPS,所以我选择了 800 IOPS。