我想了解IOPS(每秒I / O)及其对DB CRUD操作的影响


8

我想为运行InnoDB Engine的数据库(MySQL)获得专用服务器。InnoDB容量中有此选项,您可以在其中定义IOPS。假设我有一个允许100 IOPS的SATA 72K-RPM HDD。这是否意味着我的数据库只能每秒运行100个并发SQL查询,还是意味着1秒钟内可以进行100次单次读取或写入?数据库如何处理每秒在类似硬件上启动的3000个查询?我有点困惑,所以请为我解释一下。我想在专用服务器上执行200多个查询。

Answers:


10

硬盘驱动器的IOPS告诉您特定驱动器每秒可以执行多少I / O操作。由于随机读取,随机写入,顺序读取和顺序写入具有不同的性能特征,因此,如果您查看的是单个数字,则意味着这是这四个数字的加权平均值,表示某些工作量。该工作负载可能与数据库实际执行的工作负载相同或不同,因此您的系统可能最终每秒获得更多或更少的操作。

假设一个SQL查询执行物理I / O(许多查询不需要执行任何I / O,因为它们只是从数据库内存或文件系统缓存或SAN缓存中已存在的数据中读取数据),执行许多I / O操作。如果您的查询实际上在执行物理I / O,则单个查询每秒可以轻松进行100个I / O操作。您可能同时运行100个查询,每个查询每秒只能进行1个物理I / O操作,但这可能意味着所有100个查询将花费不可接受的时间返回。

实际上,如果您需要每秒处理3000个查询,则需要通过确保将所需的数据(最好是数据库)进行缓存来确保绝大多数查询不需要执行物理I / O。而且,您需要将I / O分布在相对大量的驱动器上(具有适当的RAID配置),以增加系统可以执行的总IOPS。这种容量规划将需要对您的应用程序,您的数据,每个查询可能真正需要多少I / O等有一个很好的了解。并且您可能需要平衡成本与性能之间的关系-添加内存,添加驱动器或更改RAID配置将需要在成本,性能和可用空间之间进行不同的权衡。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.