作者meteor007 (meteor007是:)
看板AndroidDev
標題[問題] Firebase realtime 效能問題
時間Sun Sep 23 00:13:35 2018
這幾天在做測試,發現效能問題,想上來問一下有沒有人也遇到
因為結構很簡單卻還是慢,讓我不得其解
我有一個叫做User的Node,記錄所有User
User裡面只有8個屬性,全都是字串,
也完全沒有nested,非常簡單的Modeling
現在假設我產生一萬個隨機User,其中有一個屬性是"所在城市"
然後強制指定這一萬人都在台北
Query也很簡單,就是orderbychild("city).equalto("台北")
回傳結果是對的,但是竟然要花上30秒?! 區區一萬筆資料而已
加上indexon也沒差多少,整個莫名其妙
我整個結構單純的程度就像這篇文章一樣
https://medium.com/@jasonbyrne/benchmarking-firebase-indexon-565182c723de
但是所花的時間卻和他測試的結果天差地遠..
不知道大家測試的效率都是多少? 有人有遇過類似問題嗎?
(是在實機裡測試,滿新款的手機)
感謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.82.112.198
※ 文章網址: https://webptt.com/m.aspx?n=bbs/AndroidDev/M.1537632819.A.E12.html
1F:推 tentenlee: 以sql的概念來看,你建立一萬筆都是同樣資料的欄位為in 09/23 06:19
2F:→ tentenlee: dex,有建跟沒建一樣,並不會比較快速。 09/23 06:19
3F:→ tentenlee: 而且你又在同樣欄位上做order,你直接全抓咖實在 09/23 06:20
我又嘗試建立"10組"在台中的User,然後一樣的Query,把台北改成台中
其實一樣是慢的,感覺起來是跟"整體數量有關",
雖然你提的有道理,但是總覺得可能還有其他因素
4F:推 hijamoya: 一萬筆有點多 分page拿吧 09/23 07:56
測試過如果一次拿20筆,確實是快的,不到一秒 分page也是解法之一,
只是無法理解只是一萬筆就會慢這件事情
那篇文章的case,有兩萬多筆都花不到一秒
※ 編輯: meteor007 (115.82.112.198), 09/23/2018 14:35:45
5F:推 taco2548: 請問什麼情況下會用order? 09/23 19:47
???
不就是希望達到像SQL 裡的where的效果嗎?
你是想說我的語法有問題?
※ 編輯: meteor007 (115.82.112.198), 09/23/2018 20:50:20
6F:推 taco2548: 因為我從未使用到Query類別,只是好奇瞭解一下 09/23 21:54
7F:推 taco2548: 剛看了一下,文件是有寫使用orderbychild速度會很緩慢 09/23 21:57
9F:推 taco2548: 你可以考慮使用DatabaseReference將整個node取下後再篩 09/23 22:10
感謝熱心,其實我之前有看過這文件了,
剛剛重看一遍還是沒看到有提到效率的部分
另外,因為實際上的資料量會很多,不太可能全部載下來
未來解法會重新Denormalize整個結構以加速效能。
那篇Medium的評測,暫時就當作都市傳說吧...
※ 編輯: meteor007 (115.82.112.198), 09/24/2018 00:26:06
12F:→ taco2548: 如此就能避免你提到下載過多資料的問題 09/24 10:16
感謝。
※ 編輯: meteor007 (49.217.245.152), 09/24/2018 15:06:52