すべてのプロダクト
Search
ドキュメントセンター

PolarDB:テーブルスペースの作成

最終更新日:Jan 21, 2025

CREATE TABLESPACEは、新しいクラスター全体のテーブルスペースを登録します。

説明

CREATE TABLESPACEは、新しいクラスタースコープのテーブルスペースを登録します。 テーブルスペース名はクラスター内で一意である必要があります。

テーブルスペースは、データベースオブジェクト (テーブルやインデックスなど) を含むデータファイルを格納できるファイルシステム上の別の場所を定義します。 tablespace_nameは、CREATE DATABASECREATE TABLECREATE INDEX、またはADD CONSTRAINTに渡すことができます。

重要
  • セキュリティを確保するために、特権アカウントまたは標準アカウントを使用してテーブルスペースを作成することはできません。

  • 特権アカウントを使用してオブジェクトを格納するテーブルスペースを指定できますが、オブジェクトはpg_defaultテーブルスペースに格納されます。 文が実行されると、メッセージが返されます。 標準アカウントを使用して、オブジェクトを格納するテーブルスペースを指定することはできません。

概要

    CREATE TABLESPACE tablespace_name
        [ OWNER { new_owner | CURRENT_USER | SESSION_USER } ]
        LOCATION 'directory'
        [ WITH ( tablespace_option = value [, ... ] ) ]

Parameters

  • tablespace_name: テーブルスペースの名前。 名前をpg_で始めることはできません。

  • user_name: テーブルスペースを所有するユーザー名。 このパラメーターを指定しない場合、ステートメントを実行するユーザーがデフォルトで選択されます。 polar_superuserユーザーのみがテーブルスペースを作成できます。

  • directory: テーブルスペースのディレクトリ。 ディレクトリは既存のディレクトリであり (CREATE TABLESPACEは作成できません) 、データが含まれておらず、PolarDBシステムユーザーが所有している必要があります。 ディレクトリは絶対パスで指定する必要があります。

  • tablespace_option: 設定またはリセットするテーブルスペースパラメーター。 seq_page_costrandom_page_costeffective_io_concurrencymaintenance_io_concurrencyのパラメーターを使用できます。 特定の表領域にこれらのパラメーターを指定すると、表領域ページからプランナが準備した通常のコストの見積もりとプリフェッチ動作が上書きされ、対応するパラメーターによって決定されます。 詳細については、seq_page_cost、random_page_cost、effective_io_concurrency、およびmaintenance_io_concurrencyをご参照ください。 これらのパラメータは、テーブルスペースが他のI/Oサブシステムよりも低速または高速のディスク上にある場合に使用できます。

ノート

  • テーブルスペースは、シンボリックリンクをサポートするシステムでのみサポートされます。

  • CREATE TABLESPACEはトランザクションブロック内では実行できません。

  • テーブルスペースは、定義されているクラスターとは無関係に使用することはできません。

pg_tablespaceシステムテーブルでpolar_superuserユーザーが作成したテーブルスペースを照会できます。

  1. 次のステートメントをpolar_superuserユーザーとして実行し、テーブルスペースを作成します。

    CREATE TABLESPACE test_tablespace location '/';
  2. 次のステートメントを実行して、pg_tablespaceシステムテーブルのtablespaceを照会します。

    SELECT spcname FROM pg_tablespace;

    サンプル結果:

         spcname     
    -----------------
     pg_default
     pg_global
     test_tablespace
  3. 次のステートメントをpolar_superuserユーザーとして実行してデータベースオブジェクトを作成し、それを格納するテーブルスペースを指定します。

    CREATE TABLE test_table(a int) TABLESPACE test_tablespace;

    サンプル結果:

    NOTICE:  User defined tablespace is not supported, The tablespace set by the user will be ignored
    CREATE TABLE