跳至內容

為什麼 Amazon Redshift 在我的叢集上建立暫存資料表?這些資料表會佔用節點的記憶體空間嗎?

1 分的閱讀內容
0

Amazon Redshift 在我的叢集上建立了暫存資料表,我想知道原因。此外,我想知道這些資料表是否會佔用節點上的可用記憶體空間

解決方法

Amazon Redshift 會建立暫存資料表來儲存資料定義語言 (DDL) 和資料操作語言 (DML) 作業的中間查詢處理結果。Amazon Redshift 會將這些資料表儲存在單獨的特定工作階段結構描述中,並採用 pg_temp_1命名慣例。您無法為該結構描述指定名稱。具體化視觀表重新整理也會使用暫存資料表來儲存中間查詢結果。

使用者也可以在 CREATE TABLE 陳述式中使用 TEMPORARYTEMP 關鍵字來建立暫存資料表。

**重要:**如果您指定以 # 開頭的資料表名稱,則 Amazon Redshift 會將該資料表建立為暫存資料表。命令範例:

create table #newtable (id) as select * from oldtable;

暫存資料表只會顯示在目前工作階段中。工作階段結束後,Amazon Redshift 會自動從該工作階段中刪除暫存資料表。

當您在叢集上啟動資料共用時,您可以將叢集設定為取用者。在這種情況下,Amazon Redshift 會建立暫存物件來儲存終端使用者從生產者叢集擷取的資料區塊。

預設情況下,資料庫使用者透過自動成為 PUBLIC 群組成員,擁有建立暫存資料表的權限。若要封鎖此權限,請執行下列查詢以撤銷 PUBLIC 群組的 TEMP 權限:

Revoke TEMPORARY | TEMP on DATABASE db_name from GROUP PUBLIC;

**注意:**將 db_name 替換為您的資料庫名稱。

然後,明確授予您想要允許建立暫存資料表的使用者或使用者群組 TEMP 權限。

了解暫存資料表儲存空間

暫存資料表會使用計算節點上的本機儲存空間。工作階段結束且 Amazon Redshift 刪除暫存資料表後,Amazon Redshift 會將儲存空間釋放回節點。暫存資料表遵循以下儲存要求:

  • 儘管暫存資料表使用叢集的整體儲存分配,但該儲存是暫時性的,不會計入您的持續性資料儲存成本。
  • 暫存資料表使用的儲存空間大小取決於資料的規模和查詢的複雜度。
  • 當您有大型且複雜的查詢需要使用大型臨時資料表時,叢集的儲存空間可能會短暫大幅增加。

**注意:**預設情況下,Amazon Redshift 會對暫存資料表套用與永久資料表相同的自動壓縮設定。暫存資料表是為了提升查詢處理效率而設計,用於儲存中間結果,以加快查詢效能。

相關資訊

STV_TBL_PERM

STL_SAVE

AWS 官方已更新 4 個月前