PostgreSQL教程(13):データベース管理の詳細


一、概要:
    データベースはSQLオブジェクト(データベースオブジェクト)の名前セットとして見られ、通常は、各データベースオブジェクト(テーブル、関数など)は一つのデータベースに属しています。しかし、一部のシステムテーブルにとっては、pg_のようです。databaseは、クラスタ全体に属しています。より正確には、データベースはモードのセットであり、モードはテーブル、関数などのSQLオブジェクトを含む。したがって、完全なオブジェクトレベルは、サーバ、データベース、モード、テーブルまたは他のタイプのオブジェクトであるべきです。
    データベースサーバとの接続を確立する場合、この接続は一つのデータベースとのみ関連付けられ、一つのセッションで複数のデータベースへのアクセスが許可されません。postgresユーザで登録すると、このユーザがアクセスできるデフォルトデータベースはpostgresであり、ログイン後に以下のSQL文を実行するとPostgreSQLから関連エラー情報が受信されます。

    postgres=# SELECT * FROM MyTest."MyUser".testtables;
    ERROR:  cross-database references are not implemented: "otherdb.otheruser.sometable"
    LINE 1: select * from otherdb.otheruser.sometable
 
    PostgreSQLでは、データベースは物理的に相互に分離され、それらのアクセス制御もセッションレベルで行われる。ただし、モードは論理的なオブジェクト管理構造にすぎず、あるモードにアクセスできるかどうかは、権限システムによって制御される。
    次のシステムテーブルベースのクエリー文を実行すると、既存のデータベースセットが一覧表示されます。
 

    SELECT datname FROM pg_database;
 
    注:psqlアプリケーションの\l元コマンドと-lコマンドラインオプションは、現在のサーバにあるデータベースのリストにも使用できます。 
   
二、データベースを作成する:
    以下のSQL文をPostgreSQLサーバで実行するとデータベースを作成できます。
 

    CREATE DATABASE db_name;
 
    データベースの作成に成功したら、現在ログインしているキャラクターが自動的にこの新しいデータベースの所有者になります。このデータベースを削除するには、そのユーザの特権も必要です。現在作成されているデータベースの所有者を他のキャラクターにしたい場合は、次のSQL文を実行します。
 

    CREATE DATABASE db_name OWNER role_name;
 
三、データベースの設定を変更する:
    PostgreSQLサーバは大量の運転時に変数を配置しています。自分の実際の状況に応じて、あるデータベースの構成変数に特殊な値を指定できます。以下のSQLコマンドを実行することで、デフォルト値を使用せずにデータベースのある構成を指定値に設定できます。
 

    ALTER DATABASE db_name SET varname TO new_value;
 
    このように、その後のデータベースベースのセッションでは、変更された構成値が有効になりました。このような設定を破棄して元のデフォルト値に戻すと、次のSQLコマンドが実行されます。
 

    ALTER DATABASE dbname RESET varname;
 
四、データベースの削除:
    データベースの所有者とスーパーユーザだけがデータベースを削除できます。データベースを削除すると、データベースに含まれているすべてのオブジェクトが削除されます。この操作は回復できません。SQLコマンドを以下のように削除します。
 

    DROP DATABASE db_name;
 
   
五、表スペース:
    PostgreSQLでは、テーブル空間はファイルのセットに格納されたディレクトリの位置を表しています。作成後は、テーブル空間にデータベースオブジェクトを作成できます。テーブル空間を使用することで、管理者は、PostgreSQLサーバのディスクレイアウトを制御することができる。このように管理者は、IO待ちを低減するために、データベースオブジェクトのデータ量やデータ使用頻度などの参照に基づいて、これらのオブジェクトの格納位置を計画し、システム全体の運転性能を最適化することができる。例えば、固体ハードディスクなど、頻繁に使用されるインデックスを非常に信頼性の高い、効率的なディスク装置に置く。少ないデータベースオブジェクトを比較的遅いディスクシステムに保存します。以下のSQLコマンドは、テーブル空間を作成するために使用されます。
 

    CREATE TABLESPACE fastspace LOCATION '/mnt/sda1/postgresql/data';
 
    説明が必要なのは、テーブル空間で指定された位置は既存の空ディレクトリであり、postgreSQLシステムのユーザに属する必要があります。作成に成功したら、テーブル空間で作成したオブジェクトはすべてこのディレクトリの下のファイルに保存されます。
    PostgreSQLではスーパーユーザーだけがテーブル空間を作成できますが、作成に成功した後は、データベースユーザがデータベースオブジェクトを作成することができます。この操作を完了するには、表空間でこれらのユーザにCREATE権限を付与する必要があります。テーブル、索引、データベース全体を特定のテーブル空間に置くことができます。次のSQLコマンドを参照してください。
 

    CREATE TABLE foo(i int) TABLESPACE space1;
 
    また、default_も修正できます。テーブルスペースをデフォルトのテーブル空間にするための変数を設定します。このようにデータベースオブジェクトを作成する際に、指定されたテーブル空間が表示されない場合、このオブジェクトはデフォルトのテーブル空間に作成されます。
 

    SET default_tablespace = space1;
    CREATE TABLE foo(i int);
 
    データベースに関連するテーブル空間は、データベースを格納するためのシステムテーブルと、データベースを使用するサーバプロセスで作成された一時ファイルのいずれかである。
    空のテーブル空間を削除するには、DROP TABLESPACEコマンドを直接使用することができますが、データベースオブジェクトを含むテーブル空間を削除するには、まずこのテーブル空間のすべてのオブジェクトを削除してから、テーブル空間を削除することができます。
    現在のシステムの中にどのようなテーブル空間があるかを検索します。テーブルspaceはPostgreSQLのシステムテーブルです。
 

    SELECT spcname FROM pg_tablespace;
 
    私達はまたpsqlプログラムの\db元命令列を通して表空間が現れます。