Я выполнял профилирование в своей базе данных Firebase и обнаружил одну единственную аномалию
Read Speed
┌───────────────────────────────┬───────┬─────────────┬───────────────────┐
│ Path │ Count │ Average │ Permission Denied │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤
│ /safeList │ 4 │ 3,092.50 ms │ 0 │
├───────────────────────────────┼───────┼─────────────┼───────────────────┤
Это означает, что каждый запрос к этой структуре занимал более 3 секунд. Это не самая страшная проблема в мире, но все же странная.
safelist
- это список строк, упорядоченных по длине вручную, а затем импортированных в firebase. Список содержит около 8000 строк длиной от 5 до 25.
Эти запросы были сделаны мной, и каждый из них запросил только первые 5000 образцов из набора.
Мой вопрос:
- Есть ли способ улучшить производительность чтения?
- Если бы я просто запросил весь набор вместо первых 5000, это было бы быстрее?
- Какие-нибудь предложения для больших наборов примитивов?
========== UPDATE ============
Некоторые люди спрашивают о данных и коде.
единственный код, где я вызываю этот запрос:
firebase.child("safeList").limitToFirst(5000).addListenerForSingleValueEvent(new ValueEventListener() { //do stuff
я не положил, потому что довольно тупой
и как сказано в описании:
Safelist - это список строк, содержащий около 8000 элементов, заказанных вручную по длине
правила базы данных, связанные с ним:
"safeList":{
".read":"root.child('premiums').child(auth.uid).exists()",
".write":false,
".indexOn" : ".value"
},
В среднем требуется 3000 мс, когда второй самый медленный запрос занимает всего 60 мс