Thread: Would SSD improve Index Only Scan performance by a lot?
As my table has gotten bigger, it takes longer to get a single row back when querying a row by its btree index.
Right now the database is running on a traditional HDD. SSDs have a much faster seek time than traditional HDDs.
Would switching to an SSD improve "Index Only Scan" time greatly? by at least 3-4 times?
På onsdag 09. oktober 2019 kl. 01:37:06, skrev Arya F <arya6000@gmail.com>:
As my table has gotten bigger, it takes longer to get a single row back when querying a row by its btree index.Right now the database is running on a traditional HDD. SSDs have a much faster seek time than traditional HDDs.Would switching to an SSD improve "Index Only Scan" time greatly? by at least 3-4 times?
It depends on whether the index is accessed often or not (wrt. caching), and (of course) the size of the index, but yes - "cold access" to the index (or persistent data in general) is much faster with SSD.
--
Andreas Joseph Krogh
CTO / Partner - Visena AS
Mobile: +47 909 56 963
Attachment
On Tue, Oct 8, 2019 at 7:37 PM Arya F <arya6000@gmail.com> wrote:
As my table has gotten bigger, it takes longer to get a single row back when querying a row by its btree index.Right now the database is running on a traditional HDD. SSDs have a much faster seek time than traditional HDDs.Would switching to an SSD improve "Index Only Scan" time greatly? by at least 3-4 times?
*If* your query is disk I/O bound, SSD can help a lot.
If your data is already in memory, or file system cache, and your query is bound by CPU or bloated/corrupted indexes, or some query inefficiency, then faster disks really won't do anything.
Depending on the data type and size of the data you may be able to help your query performance by choosing an index type other than the out-of-the-box btree as well (such as a hash or brin index) or maybe even a different sort order on the index, or a partial index.
For indexes the SSDs are at least 4X faster but you won't get that to happen unless you fix the planner tunable for the random page fetch cost first. Super important change for SSDs.
Matthew Hall
On Tue, Oct 8, 2019 at 7:37 PM Arya F <arya6000@gmail.com> wrote:As my table has gotten bigger, it takes longer to get a single row back when querying a row by its btree index.Right now the database is running on a traditional HDD. SSDs have a much faster seek time than traditional HDDs.Would switching to an SSD improve "Index Only Scan" time greatly? by at least 3-4 times?*If* your query is disk I/O bound, SSD can help a lot.If your data is already in memory, or file system cache, and your query is bound by CPU or bloated/corrupted indexes, or some query inefficiency, then faster disks really won't do anything.Depending on the data type and size of the data you may be able to help your query performance by choosing an index type other than the out-of-the-box btree as well (such as a hash or brin index) or maybe even a different sort order on the index, or a partial index.
On Tue, Oct 8, 2019 at 7:37 PM Arya F <arya6000@gmail.com> wrote:
As my table has gotten bigger, it takes longer to get a single row back when querying a row by its btree index.
Is this in a probabilistic sense, they take longer on average, or has every single access gotten slower? If the increase in size has caused the index leaf pages to go from being almost entirely in cache to almost entirely not being in cache, the slow down would probably be a lot more 3 to 4 fold. But maybe you went from 100% in cache, to 90% in cache and 10% out of cache (with a 40 fold slowdown for those ones), coming out to 4 fold slow down on average. If that is the case, maybe you can get the performance back up by tweaking some settings, rather than changing hardware.
Right now the database is running on a traditional HDD. SSDs have a much faster seek time than traditional HDDs.Would switching to an SSD improve "Index Only Scan" time greatly? by at least 3-4 times?
If drive access is truly the bottleneck on every single execution, then yes, probably far more than 3-4 times.
Cheers,
Jeff