Я заметил, что моя производительность чтения замедлилась в последние недели, так как я начал делать больше записей на основной узел. Добавление документов и обновление документов. После небольшого устранения неполадок и тестирования я обнаружил, что изменение read_preference для клиентского сеанса, базы данных или коллекции имеет существенный эффект.
Исходя из этого документа , я бы подумал, что производительность чтения NEAREST была бы самой быстрой. Однако может показаться, что ВТОРИЧНЫЙ самый быстрый. Есть ли у кого-нибудь понимание и, возможно, дополнительные рекомендации для дальнейшего улучшения? Например, отключение Причинно-следственной согласованности?
Результаты:
Настройка Чтение предпочтения к ПЕРВИЧНО
%%timeit
#html_collection = html_collection.with_options(read_preference=ReadPreference.PRIMARY)
print(html_collection.read_preference)
start = time.time()
print(len(list(html_collection.find())),'documents')
end = time.time()
print(end - start,'seconds')
Primary()
29 documents
17.630228757858276 seconds
Primary()
29 documents
17.821024894714355 seconds
Primary()
29 documents
18.69744086265564 seconds
Primary()
29 documents
17.730278730392456 seconds
Primary()
29 documents
17.81557846069336 seconds
Primary()
29 documents
17.49613308906555 seconds
Primary()
29 documents
17.80984354019165 seconds
Primary()
29 documents
17.650660753250122 seconds
17.9 s ± 359 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Настройка Предпочтение чтения к БЛИЖАЙШЕМУ
%%timeit
#html_collection = html_collection.with_options(read_preference=ReadPreference.NEAREST)
print(html_collection.read_preference)
start = time.time()
print(len(list(html_collection.find())),'documents')
end = time.time()
print(end - start,'seconds')
Nearest(tag_sets=None, max_staleness=-1)
29 documents
2.463563919067383 seconds
Nearest(tag_sets=None, max_staleness=-1)
29 documents
1.559664011001587 seconds
Nearest(tag_sets=None, max_staleness=-1)
29 documents
18.120014429092407 seconds
Nearest(tag_sets=None, max_staleness=-1)
29 documents
2.6866166591644287 seconds
Nearest(tag_sets=None, max_staleness=-1)
29 documents
2.0677454471588135 seconds
Nearest(tag_sets=None, max_staleness=-1)
29 documents
2.548630714416504 seconds
Nearest(tag_sets=None, max_staleness=-1)
29 documents
1.5781867504119873 seconds
Nearest(tag_sets=None, max_staleness=-1)
29 documents
1.5037789344787598 seconds
The slowest run took 12.05 times longer than the fastest. This could mean that an intermediate result is being cached.
4.3 s ± 5.66 s per loop (mean ± std. dev. of 7 runs, 1 loop each)
Установка предпочтения чтения к ВТОРИЧНОМУ
%%timeit
#html_collection = html_collection.with_options(read_preference=ReadPreference.SECONDARY)
print(html_collection.read_preference)
start = time.time()
print(len(list(html_collection.find())),'documents')
end = time.time()
print(end - start,'seconds')
Secondary(tag_sets=None, max_staleness=-1)
29 documents
2.0033063888549805 seconds
Secondary(tag_sets=None, max_staleness=-1)
29 documents
2.0986859798431396 seconds
Secondary(tag_sets=None, max_staleness=-1)
29 documents
2.555142879486084 seconds
Secondary(tag_sets=None, max_staleness=-1)
29 documents
1.7047474384307861 seconds
Secondary(tag_sets=None, max_staleness=-1)
29 documents
2.078212261199951 seconds
Secondary(tag_sets=None, max_staleness=-1)
29 documents
2.042281150817871 seconds
Secondary(tag_sets=None, max_staleness=-1)
29 documents
2.972836971282959 seconds
Secondary(tag_sets=None, max_staleness=-1)
29 documents
2.549753189086914 seconds
2.29 s ± 394 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)