日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

RDS PostgreSQL通用云盤IO加速

當您需要應對數據庫磁盤IO性能瓶頸時,云數據庫RDS PostgreSQL的通用云盤IO加速功能為您提供了一個高效的解決方案。本文檔將詳細介紹該技術的優勢、適用場景和工作原理,幫助您在面臨大規模或頻繁數據讀寫需求時顯著提升數據庫性能。

背景

RDS PostgreSQL在數據處理過程中,數據會從磁盤讀取到內存,在內存中處理完成后,數據再從內存寫入到磁盤中。與內存操作相比,磁盤IO操作運行速度較慢,將會消耗更多的時間。當業務出現大規模數據讀寫或頻繁數據讀寫請求時,磁盤IO操作可能成為數據庫系統的瓶頸。

因此,阿里云數據庫RDS PostgreSQL推出新的存儲類型——通用云盤。在兼容ESSD云盤所有特性的基礎上,通用云盤采用三級存儲架構對不同類型的數據進行分級管理,并且引入了IO加速功能,以提升RDS PostgreSQL實例的QPS性能。更多信息,請參見通用云盤

功能介紹

IO加速功能對應通用云盤三級存儲架構中的緩存層,主要是通過高速緩存介質來提升數據庫的讀寫性能,以提高SQL查詢處理的速度。針對臨時表和查詢產生的臨時文件,RDS PostgreSQL的IO加速能力允許將這些臨時數據存儲到高速的緩存介質中,使得數據庫引擎對這些臨時數據的讀寫IO更快,大大加快查詢的處理,在復雜查詢場景下可提高100%查詢性能。

價值效益

RDS PostgreSQL實例開啟IO加速功能后,目前無需支付任何額外費用。您可以在無任何成本變化和業務改動的情況下,在適用場景下大幅度提升數據庫的QPS性能。具體適用場景,請詳見適用場景

適用場景

下列是一些IO加速功能適用的業務場景:

  • 排序、分組聚合、聯合等產生臨時結果的復雜操作

  • 使用CTE通用表達式的遞歸查詢

  • 無法使用適當索引的復雜查詢

  • 對大表或多個表的分析型查詢

  • 其他使用臨時表的工作負載

支持范圍

滿足以下條件的RDS PostgreSQL實例支持該功能:

  • 計費方式:包年包月或按量付費

  • 實例大版本:PostgreSQL 11或以上

  • 內核小版本:20231030或以上

  • 產品系列:高可用系列

  • 產品類型:標準版

  • 存儲類型:通用云盤

  • 實例規格族:通用型

  • 實例所在地域及可用區:

    地域

    可用區

    西南1(成都)

    可用區B

    華北2(北京)

    可用區I

    華東2(上海)

    可用區M

    可用區N

    華東1(杭州)

    可用區J

    說明

    在售賣頁面開啟IO加速功能后,可在主可用區及網絡處查看是否支持

技術原理

image
  • Cache Disk表示高速緩存介質,是一種讀寫性能介于內存和通用云盤之間的存儲介質,其讀寫性能要優于通用云盤,因此非常適合作為數據庫中臨時數據的緩存盤。

  • RDS PostgreSQL數據庫服務端收到用戶的SQL查詢后,由查詢執行器對查詢進行處理,其根據查詢要訪問的數據所在的表空間決定數據存儲的位置。

    • 在未開啟IO加速功能時,所有數據只能存儲在云盤上。

    • 開啟IO加速功能后:

      • 如訪問的是非臨時數據(正常的表、視圖等數據),則還是從云盤讀取數據到內存中進行處理;

      • 如訪問的是臨時數據(臨時表、臨時文件等數據),則從高速緩存盤讀寫數據。

具體而言,實例創建的臨時表等臨時對象(不顯式指定表空間)和在查詢執行過程中產生的臨時文件都將被存儲到高速緩存介質中,從而提升數據庫對這些臨時數據的讀寫,在一定時間內可以執行處理更多的查詢。

說明

RDS PostgreSQL是通過表空間來設置數據庫對象的存儲位置,以實現數據的冷熱分離,因此我們使用表空間rds_temp_tablespace來抽象其背后的高速緩存介質。您可以在開啟IO加速的實例中看到該表空間。而使用該表空間還需要您正確設置數據庫參數temp_tablespaces,具體詳見開啟IO加速

注意事項

  • 高速緩存介質僅用于存儲臨時緩存數據,RDS PostgreSQL不保證存儲在表空間rds_temp_tablespace的數據的持久性,當實例發生變配等遷移動作后,這些數據會丟失,所以請勿將非臨時表等數據對象的表空間設置為該表空間。

  • RDS PostgreSQL開啟IO加速功能后,會根據不同實例規格提供一定容量的高速緩存空間,當該空間寫滿時,會報錯No space left on device,該問題不影響非臨時數據的相關SQL執行。

  • 開啟或關閉IO加速功能后,實例約有30秒不可用,建議在業務低峰期執行功能的開啟和關閉操作。

開啟IO加速

  1. 打開IO加速開關。

    RDS PostgreSQL支持在購買新實例時打開IO加速開關,也支持對滿足支持范圍的已有實例打開IO加速開關。

    • 購買新實例時打開IO加速開關

      您可以在購買實例時,選擇滿足支持范圍的參數后,開啟IO加速功能:image

    • 滿足支持范圍的已有實例打開IO加速開關

      1. 訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
      2. 基本信息區域,單擊存儲類型后的通用云盤開關設置,在彈出的對話框中,打開IO加速開關。image

  2. 修改數據庫參數。

    當實例打開IO加速開關后,RDS PostgreSQL會生成一個名為rds_temp_tablespace的表空間,其背后使用的存儲介質是支持IO加速的高速緩存介質。使用該表空間作為默認的臨時表空間,您還需要將數據庫參數temp_tablespaces設置為rds_temp_tablespace。參數設置請詳見設置實例參數

    說明
    • 您可以執行以下的SET語句在會話級別設置該參數:

      SET temp_tablespace TO 'rds_temp_tablespace';
    • 您可以將參數temp_tablespaces設置為'',切換回云盤存儲。

  3. 使用緩存加速功能。

    開啟IO加速開關并修改數據庫參數后,您就可以在創建臨時表時,默認使用rds_temp_tablespace表空間。

    1. 連接RDS PostgreSQL實例

    2. 創建測試表。

      -- 創建非臨時表test_table
      CREATE TABLE test_table (di INT);
      
      -- 創建臨時表test_temp_table
      CREATE TEMPORARY TABLE test_temp_table (id INT);
    3. 查詢測試表的表空間。

      SELECT
          c.relname AS table_name,
          COALESCE(t.spcname, 'pg_default') AS tablespace_name
      FROM
          pg_class c
      JOIN
          pg_namespace n ON c.relnamespace = n.oid
      LEFT JOIN
          pg_tablespace t ON c.reltablespace = t.oid
      WHERE
          c.relkind = 'r'
          AND c.relname IN ('test_table', 'test_temp_table');

      返回結果示例:

         table_name    |   tablespace_name
      -----------------+---------------------
       test_table      | pg_default
       test_temp_table | rds_temp_tablespace
      (2 rows)

相關文檔

  • RDS PostgreSQL支持的其他存儲類型,請參見存儲類型介紹

  • 通用云盤的更多介紹,請參見通用云盤

  • 如果您的業務波動較大,業務波峰較頻繁,可以開啟通用云盤的IO突發功能,使云盤的IOPS不受限于最大IOPS,在業務波峰時獲得更高的IO能力,滿足突發業務需求。更多信息,請參見IO突發

常見問題

Q:SQL執行時,報錯ERROR: could not write to file "pg_tblspc/xxxx": No space left on device,如何處理?

A:該報錯是由于高速緩存介質的表空間rds_temp_tablespace已滿造成的,您可以結束當前會話(RDS PostgreSQL內核將自動清理臨時文件回收空間),重連實例后再次嘗試之前失敗的SQL語句。

說明

如問題仍未解決,您可以修改參數temp_tablespaces的取值為'',切換回云盤存儲。