I am load testing various RDS instances trying to optimise db price/performance
I had seen this doc https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-optimized-reads.html and it sounded like a __d
instance with local SSD storage would likely improve performance
The r6gd.2xlarge
that I tested has 1x474GB NVMe, which is big enough to fit the whole dataset (EBS volume is only 400GB).
However when I check the metrics in Performance Insights the stats for ReadIOPSLocalStorage
and ReadThroughputLocalStorage
are basically zero. I do see a big chunk of WriteThroughputLocalStorage
but it doesn't seem to be reading anything.
And if I test an r6g
instance without the NVMe the performance is basically the same.
So it doesn't seem to be doing anything.
The AWS doc says it will automatically do "Optimised Reads" if you deploy one of the __d
instances. But I am wondering if some manual config changes are needed to make best use of it?
There is this note in the doc:
Set the
internal_tmp_mem_storage_engine
parameter toTempTable
, and set thetemptable_max_mmap
parameter to match the size of the available storage on the instance store.
Currently the latter value is 1073741824
i.e. 1 GiB, well short of the NVMe size
I tried bumping this up to 246960619520
but didn't see any more usage or very different performance, and FreeLocalStorage
stat shows it's basically all free still.
How do I get benefit from local SSD storage and "Optimised Reads" on my RDS MySQL instance?
(It's recently deployed, on MySQL 8.0.35)
nice
, followed bywait
and thensystem
... this is why I was hoping it would do something like automatically move the indexes and/or big chunk of data to the SSD. But AFAICT from doc (which is quite opaque) it moves some kinds of temp files and they seem way under utilized for the amount of SSD that is available.