時間戳記範圍

簡介

使用唯讀交易單一讀取呼叫在 Cloud Spanner 中讀取資料時,可設定時間戳記範圍,告訴 Cloud Spanner 如何選擇時間戳記,在該時間點讀取資料。

為何要設定時間戳記界限?若資料庫分散各地的 (意即您使用多地區執行個體設定來建立 Cloud Spanner 執行個體),應用程式也容許讀取稍微過時的資料,那麼您就可以享有執行過時讀取在延遲時間上的優點,而不需執行強式讀取。如要進一步瞭解這些讀取類型,請參閱讀取一文。

時間戳記界限類型

時間戳記界限類型如下:

  • 強式 (預設值):讀取最新資料。
  • 限定的過時程度:讀取不比界限舊的資料版本。
  • 精確的過時程度:讀取某個時間戳記時間的資料版本,例如過去的某一個時間點。您也可以指定未來的時間戳記。若您指定未來的時間戳記,Cloud Spanner 會等到該時間戳記時間才會提供讀取作業。

注意:

  • 雖然使用這些時間戳記界限模式不是讀寫交易的一部分,但卻可以封鎖等待的並行讀寫入交易,使其無法認可。雖然限定的過時程度讀取作業會試著選出一個時間戳記以避免封鎖,但仍可能會遭到封鎖。

  • 過時讀取 (例如使用受限或精確過時類型) 在最長的過時區間時可獲致最大效能。過時程度最少要 10 秒才能有這項優勢。

以下提供 Cloud Spanner 時間戳記界限類型的詳細說明。

強式讀取

Cloud Spanner 提供強式讀取界限類型。強式讀取保證在開始讀取之前可以看到所有認可的交易效果。此外,單一讀取作業產生的資料列會彼此一致,若讀取作業的任一部分觀察到交易,則讀取的所有部分都可看見該交易。

強式讀取無法重複:兩筆連續的強式唯讀交易若有並行的寫入作業,可能會傳回不一致的結果。若讀取之間的一致性是必要的,應在相同交易或精準的讀取時間戳記執行讀取作業。

限定的過時程度

Cloud Spanner 提供限定的過時程度界限類型。限定的過時程度模式可讓 Cloud Spanner 根據使用者提供的過時界限,挑選讀取時間戳記。Cloud Spanner 會在過時界限內選擇最新的時間戳記,以在最近可用的備用資源執行讀取,不會遭到封鎖。

產生的所有資料列都會與彼此一致。若讀取的任一部分觀察到交易,讀取的所有部分都可看見該交易。限定的過時程度讀取作業不可重複:兩個過時的讀取即使使用相同的過時界限,也可以在不同的時間戳記執行,並且傳回不一致的結果。

限定的過時程度讀取作業通常會比精確的過時程度讀取作業慢一點。

精確的過時程度

Cloud Spanner 提供精確的過時程度界限類型。這些時間戳記界限會在使用者指定的時間戳記執行讀取。在時間戳記讀取保證可在通用交易記錄看見一致的前置字串:這些讀取可以觀察到所有交易所進行的修改,這些修改的認可時間戳記少於或等於讀取時間戳記,並觀察到交易在較大的認可時間戳記沒有進行任何修改。系統也會封鎖這些讀取,直到所有認可時間戳記少於或等於讀取時間戳記的衝突交易完成。

此時間戳記可以描述為絕對的 Cloud Spanner 認可時間戳記或相對於目前時間的過時程度。

這些模式不需要經過「交涉階段」來挑選時間戳記,因此這些模式的執行速度比同等的限定的過時程度並行模式稍快一些。另一方面,限定的過時程度讀取作業通常會傳回較新的結果。

最大時間戳記的過時程度

Cloud Spanner 在背景中持續對已刪除或已覆寫的資料進行垃圾收集,以取回儲存空間。這個程序就是所謂的版本 GC。版本 GC 會版本推出一小時之後取回這些版本。因此,Cloud Spanner 無法執行讀取時間戳記超過過去一小時的讀取。此限制也適用於時間戳記在執行時已經太舊的進行中讀取和/或 SQL 查詢。讀取時間戳記太舊的讀取和 SQL 查詢會失敗,錯誤為 FAILED_PRECONDITION

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Spanner 說明文件