The limits listed on this page appear to be wrong, when using the DataStoreService:GetRequestBudgetForRequestType in a private server with only 1 player I get significantly higher values returned than expected.
I have provided a list of documentation stated values and GetRequestBudgetForRequestType values below. numPlayers is 1 in every one of these cases:
Get Async / Set Async:
Documentation: 70 (60 + numPlayers * 10)
GetRequestBudgetForRequestType: 300
Ordered Set:
Documentation: 35 (30 + numPlayers * 5)
GetRequestBudgetForRequestType: 105
Get Sorted / Get Version / List / Remove Version:
Documentation: 7 (5 + numPlayers * 2)
GetRequestBudgetForRequestType: 21
If the contents on this page could be updated to represent the new formulas used to determine the request limit this would be greatly appreicated.
If this is the case then it is not documented on this page. I suspected some kind of build up to be the case but it seemed extremely weird for a request limit to work like this. I did test for this by starting up a new server and printing the request limit and I got the same results immediately and they never increased or decreased.
I don’t have an official source for this but just as op mentioned. it’s not really documented anywhere. i’ve ran a few tests (using GetAsync)
I’ve waited for the limit to build up all the way to 300 and pasted the following code in the commands bar:
for i = 1, 300 do
task.defer(function()
game:GetService("DataStoreService"):GetDataStore("Test"):GetAsync("test")
end)
end
And just as i thought all requests went through without any warnings or errors.
The budget now dropped down to 0 just as we would expect.
Now i’ve waited for the budget to climb back to 300 and it took exactly 3 minutes.
This means it was climbing at a rate of 100 requests per minute instead of 70 (60 + numPlayers * 10) per minute we would expect.
This is still a mystery for me.
Now that the budget is at 300 again i ran the same code from before accept i ran it 310 times instead of 300 times.
for i = 1, 310 do
task.defer(function()
game:GetService("DataStoreService"):GetDataStore("Test"):GetAsync("test")
end)
end
And just as i thought we got exactly 9(?) warnings
My guess to why it’s 9 and not 10 is because while we were making the 300 requests we received some new budget causing only 9 to be over the limit instead of 10.
So to sum it all up it looks like we can use 300 requests at once in a single burst if only on average we stay below (60 + numPlayers * 10) 70 requests per minute.
So as long as your long term average doesn’t exceed the limit you’re free to occasionally go way above the 70 requests per minute.
Hey all, thanks for the report. I’ve confirmed the limits are accurate and added a sentence to that section. We don’t want to guarantee it or put a number on it, but servers often get a one-time allotment of additional requests when they start up. You can also check out this post for some additional details on our future plans: DataStores Access and Storage Updates