疑難排解

本頁說明如何解決 Firestore (Datastore 模式) 的問題。

延遲時間

下表說明延遲時間增加的可能原因:

延遲原因 受影響的作業類型 解決方法
持續流量超過500-50-5 規則 讀取、寫入

如果流量快速增加,Datastore 模式會嘗試自動調度資源,以滿足增加的需求。Datastore 模式擴充後,延遲時間就會開始縮短。

熱點 (對小範圍實體高速讀取、寫入及刪除) 會限制 Datastore 模式的擴充能力。請查看大規模設計,並找出應用程式中的熱點。

爭用,可能是因為更新單一實體的頻率過高,或是因為交易。 讀取、寫入

降低個別實體的寫入速度。

請參閱交易隔離和一致性,瞭解如何使用交易。

合併聯結查詢速度緩慢。 read 舉例來說,如果查詢含有多個等式篩選器 (==),但沒有複合式索引做為後盾,可能會導致合併聯結查詢速度緩慢。如要提升效能,請為這些查詢新增複合索引,詳情請參閱「最佳化索引」。
傳回大量實體的大型讀取作業。 read 使用查詢游標分割大型讀取作業。
近期刪除的項目過多。 讀取
:這會大幅影響資料庫中列出種類的作業。
如果延遲是由近期刪除過多項目所致,問題應會在一段時間後自動解決。如果問題仍未解決,請與支援團隊聯絡
索引扇出,尤其是陣列屬性。 write 檢查索引爆炸問題,以及陣列屬性的使用情形。

錯誤代碼

本節列出您可能會遇到的問題,並提供各項問題的修正建議。

DEADLINE_EXCEEDED

DEADLINE_EXCEEDED

A deadline was exceeded on the server.

如要解決這個問題,請參閱延遲問題疑難排解指南

ABORTED

下列情況可能會增加 ABORTED 錯誤:

  • 實體每秒接收的更新次數過多。
  • 重疊交易造成的爭用。
  • 流量增加幅度超過 500-50-5 規則,或遇到熱點。
ABORTED

Too much contention on these datastore entities. Please try again.

ABORTED

Aborted due to cross-transaction contention. This occurs when multiple
transactions attempt to access the same data, requiring Datastore mode
to abort at least one in order to enforce serializability.

如何解決這個問題:

  • 如果流量快速增加,Datastore 模式會嘗試自動調度資源,以滿足增加的需求。Datastore 模式擴充後,延遲時間就會開始縮短。
  • 熱點會限制 Datastore 模式的擴充能力,請參閱「為擴充性設計」一文,找出熱點。
  • 請查看交易中的資料爭用情況,以及交易的使用情形。
  • 降低個別實體的寫入速度。

RESOURCE_EXHAUSTED

下列情況可能會導致 RESOURCE_EXHAUSTED 錯誤:

您已超出免費方案配額,且專案未啟用計費功能。

RESOURCE_EXHAUSTED

Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.

如何解決這個問題:

INVALID_ARGUMENT

下列情況可能會導致 INVALID_ARGUMENT 錯誤:

  • 嘗試提交實體,但已編入索引的屬性值超過 1500 個位元組。這項限制適用於屬性值的 UTF-8 編碼。
  • 嘗試提交屬性值未建立索引的實體,但屬性值大於 1,048,487 個位元組 (1 MiB - 89 個位元組)。這項限制適用於實體中屬性值的總和。舉例來說,四個屬性各為 256 KiB,都超過上限。

屬性值的限制為 1,500 個位元組 (已編入索引) 和 1,048,487 個位元組 (未編入索引)。您無法超過這些限制,且這些限制並非可調整的配額。

INVALID_ARGUMENT: The value of property property-name is longer than 1500 bytes

INVALID_ARGUMENT: The value of property property_name is longer than 1048487 bytes

如何解決這個問題:

  • 如果是已建立索引的屬性值,請將屬性分割為多個屬性。請盡可能建立未編入索引的資源,並將不需要編入索引的資料移至該資源。
  • 如為未編入索引的屬性值,請將屬性分割為多個屬性,或為屬性值實作壓縮功能。