SSD Performance Scaling
SSDs deployed inside storage arrays as “All-Flash” or “Hybrid” (where storage controllers use tiering or caching between HDDs and SSDs to aggregate devices together and manage data protection) provide large capacity shared storage that can take advantage of SSD performance characteristics. These architectures are ideal for many enterprise use cases, but not for databases like MySQL and NoSQL. For the latter, each server node has its own SSD/HDDs and the databases scale and handle data protection with techniques like sharding that stripe data across lots of individual nodes.
For MySQL and NoSQL environments, achieving optimal SSD performance is usually done with PCIe devices due to their low latency and high speeds. Depending on the workload requirements, there are scenarios where striping data across SATA or SAS SSDs inside a single server using RAID -0 can add capacity to the node. However, striping numerous SATA or SAS drives does not necessarily guarantee similar performance to PCIe. As workloads or thread counts increase, SATA and SAS latencies are magnified and software overhead tends to throttle the aggregate performance of the devices. As a result, a single PCIe SSD can often be less expensive than multiple “cheaper” SATA or SAS devices aggregated together. This is why many vendors have started to speak about performance SSDs as a cost per IOP, rather than the traditional cost per GB that is more familiar from the traditional storage world. Illustrated in Figure 2 to the right is an example of NVMe-compliant PCIe devices compared to 1, 2 and 4 SATA devices in RAID-0 using a tool called SSD Bench.
This data illustrates that the overhead of RAID on SATA offsets the potential for linear scalability that can be gained from a single PCIe SSD. (Contd.)