我正在測試BigQuery中的查詢,並且我注意到對100M結果的查詢幾乎和10M行或1M行查詢一樣快。雖然這對於可伸縮性來說非常酷,但我的問題是爲什麼不是更小的查詢要快得多?例如,當我對100M行進行查詢時,3s查詢非常好,但對於10K行上的同一查詢,3s很慢。爲什麼BigQuery不能在小數據集上執行
BigQuery實現的哪一部分需要這個「固定時間」,這樣,掃描超小數據大小的查詢幾乎與大數據集一樣長?
我正在測試BigQuery中的查詢,並且我注意到對100M結果的查詢幾乎和10M行或1M行查詢一樣快。雖然這對於可伸縮性來說非常酷,但我的問題是爲什麼不是更小的查詢要快得多?例如,當我對100M行進行查詢時,3s查詢非常好,但對於10K行上的同一查詢,3s很慢。爲什麼BigQuery不能在小數據集上執行
BigQuery實現的哪一部分需要這個「固定時間」,這樣,掃描超小數據大小的查詢幾乎與大數據集一樣長?
這是花費在元數據/啓動上的時間,但實際執行時間非常短。我們正在進行的工作將解決這個問題,但其中一些變化很複雜,需要一段時間。
您可以想象,在初期,BigQuery可以擁有用於管理作業,元數據等的中央系統,其執行方式對於使用該服務的所有實體都非常有效。但是,一旦你得到了實體,就有必要重新構建一些東西,使它們的延遲儘可能小。有關新功能的通知 - 這也是我們宣佈與啓動延遲相關的API改進的地方 - 請留意我們的release notes,您也可以訂閱它作爲RSS源。
如果不瞭解BigQuery的編程方式,我不會感到驚訝,如果大部分3sec都是基於啓動時間的話。你對10行的表格得到相同的結果嗎? Hadoop(實現Yarn之前)用於花費大約3秒爲每個查詢設置一個JVM。 –
按照Ed的猜測,這是花在元數據/啓動上的時間,但實際執行時間非常短。我們正在進行的工作將解決這個問題,但其中一些變化很複雜,需要一段時間。 –
@ElliottBrossard謝謝,您是否有興趣/能夠在答案中分享任何廣泛的細節?其中一個缺點是在基準測試中,Redshift在更小的數據量上出現得更快(但是在大型實際大數據量時被壓制),這對亞馬遜發佈比較來說是一個巨大的營銷優勢! – David542