![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
From what you are saying it seems that the cache size is set right and you don't pay performance penalties for I/O work, as the cache can hold |
#3
| ||||
| ||||
|
|
Hello Ryan, From what you are saying it seems that the cache size is set right and you don't pay performance penalties for I/O work, as the cache can hold your DB in memory. |
|
It would be interesting to know how many key/data pairs do you have in the primary database, each key/data pair estimated size and the page size setting. |
|
The bulk fetch performs faster as you noted; the range scan pays the load of evaluating the keys against the supplied key. |
|
Regarding the pre-fetch commands, there aren't any, but you can simulate a pre-fetch behavior by reading part or all of the data from the primary database in a sequential manner (using DB->get function or a cursor and the DB_NEXT flag on DBcursor->c_get function in case of duplicates) so as the data will be found in cache for future operations. As far as your suggested alternatives, only the first one is valid. It implies a great deal of work and the result is not guaranteed to provide faster range scan, but it is the best option to take into consideration, as fetching the keys in parallel may help. The second possibility is not valid since there is no way you can access pages, no page ID is obtainable, not even through the use of API, so you can't associate a page with the contained key/data pair. |
![]() |
| Thread Tools | |
| Display Modes | |
| |