2014-01-23 104 views
0

我們花費了超過200美元來測試BigQuery上的執行時間,以及每次在交互式查詢上執行時間從15秒到2分鐘不等的查詢。任何人都可以告訴我爲什麼會發生這種情況?BigQuery執行時間不一致性

我們需要一致的執行時間來測試和優化我們的查詢。有什麼方法可以預測執行時間的一致性嗎?我會理解執行時間差異在-10%以上,但差異遠遠超過1000%,因此我們無法測試或優化任何內容,因爲我們的查詢設置與執行時間無關,似乎完全是隨機的。我們並行運行4個查詢,所有數據都在相同的數據上,並且結構相同(只是某些列名被重命名爲禁用緩存),我們的執行時間爲:13s,27s,32s,44s。然後再次20,13,24,45等...然後在某個時候,我們運行一個查詢(與上面相同),執行時間爲400s ... WTF?

此外,BigQuery上的銷售團隊不需要購買支持包(現在需要幾次報價,首先是一個月前),因此我只需要尋求幫助。

+0

我不是谷歌雲支持團隊的專家,但您似乎可以在此註冊Silver計劃:https://cloud.google.com/support/。您是否在尋求比這更高的支持水平?如果是這樣,如果你讓我知道你的電子郵件地址,我可能會找人聯繫你。 (如果您不想在公共論壇中發送您的電子郵件地址,則可以在google.com上通過電子郵件發送tigani)。 –

回答

2

關於執行時間不一致性,這似乎是比我預期的更高的方差。你能否提供快速查詢和緩慢查詢的作業ID,以便查找內部查詢統計信息所花的時間?也就是說,查詢時間的一些相當顯着的變化,雖然不是在你所看到的範圍內,但這並不令人驚訝。以下是一些因素:

  • 尾等待時間。這個查詢被分解成幾部分,根據你的數據的大小,可以分爲幾個不同的工作人員(可能有數千人)。正在從分佈式文件系統集羣讀取數據,這可能會將數據分散到數百個磁盤或更多磁盤上(具體取決於您的表的大小)。

    這些響應中最慢的組件將決定您的總查詢時間。這稱爲尾部延遲,這意味着你必須等待零散的尾巴完成。我們做了很多工作來儘量減少影響,複製數據和重新調度工作,但它仍然會產生很大的影響。

  • 加載。目前,當我們的集羣負載很重時,它可能會減慢其他用戶的響應時間。我們正在研究更好的隔離機制,但它們仍然有一些小小的出路。這不會解釋您所看到的時間差異,但它可能是一個因素。

  • 節流。當單個客戶同時發送多個並行查詢時,這些查詢可能會減慢以防止客戶佔用太多容量。這種情況發生的機率取決於許多因素,包括查詢大小和羣集上的其他負載。

  • 寫作結果。如果你的結果大於100k左右,寫出結果可能非常緩慢,並且可能會有荒謬的變化。這是我們目前正在調查的一個錯誤。

目前正在努力減少所有這些因素的影響。然而,目前我們沒有魔杖可以揮動,並說「查詢性能將保持在20%以內」,除了說「我們認識到這個問題並正在努力改進它」之外。

如果您提供工作ID,我們可以查看您的查詢的具體情況,以確定所花費的時間以及我們可以採取哪些措施來解決問題。