btreeって何?
prod表の主キーを確認しようと「\d prod」を実行したらこう表示された。
btreeって何??
→インデックスの種類とのこと。デフォルトのインデックスはB-tree。
B-tree、Hash、GiST、SP-GiST、GINといった複数の種類のインデックスを使用可能です。
(中略)
デフォルトでCREATE INDEXコマンドは、B-treeインデックスを作成し、それはほとんどの一般的状況に適合します。
(引用:PostgreSQL 9.2.4文書 第11章インデックス)
EXPLAIN文(SQL実行プランの分析)で返される内容の意味
postgers=# EXPLAIN SELECT * FROM zip WHERE newzip = '1500002';
QUERY PLAN
--------------------------------------------------------
Seq Scan on zip (cost=0.00..4312.62 rows=1 width=145)
Filter: (newzip = '1500002'::bpchar)
(2 rows)
【Seq Scan以降の意味】
「cost=」の後にある「0.00」:始動コスト(一件目のデータを返すのにかかる想定のコスト)
「..」の後にある「4312.62」:総コスト(処理完了までにかかる想定のコスト)
「rows=」の後にある「1」:行数(プランナによって見積もられた、ノード実行によって返却される行数
(※実際に取得した結果の行数ではない))
「width=」の後にある「145」:行の長さ(同上の行の平均の長さ)
↓こちら参考にした。
【未消化部分】
上記のような意味である、ということはわかったけれど、その「コスト」「ノード」の意味がわからない。
以下の通り調べ、
「コスト」=処理にかかる時間。コスト変数は相対的な値。
「ノード」=実行計画で処理を行う単位。
というところまでは、言葉としてはわかった。が、それが何を指しているのか、具体的なところがわからない。今後PostgeSQLを使う中で具体例に遭遇しながら学ぶ必要あり。
【調べたこと】
ドキュメントには
●初期処理の推定コスト(出力用のスキャンが開始されるまでに消費される時間、例えばSORTノードで実行されるソート処理の時間)。
●全体の推定コスト(結果の行全体が抽出される場合のコスト。とは言っても、LIMIT句を使った問い合わせの場合は、Limit計画ノードへの入力ノードの総コスト計算をする前に停止します)。
●この計画ノードが出力する行の推定数(これも、実行が完了した場合のみ)。
●この計画ノードが出力する行の(バイト単位での)推定平均幅。
コストはプランナのコストパラメータ(項17.6.2参照)によって決まる任意の単位で測定されます。
とあった。「コスト変数は、相対的な値」なのだそうだ。
●ノードとは?
↓
実行計画で処理を行う単位をノードと呼び、ツリー構造となっています。
(引用元:Casley Consulting Inc技術ブログ)
コマンド読み解き
##tarコマンドでPostgreSQLの関連ファイルが格納されているデータディレクトリ $PGDATA 以下をアーカイブ
[postgres@ localhost ~]$ pg_ctl stop -m fast
サーバ停止処理の完了を待っています....完了
サーバは停止しました
[postgres@ localhost ~]$ tar cvf backup.tar $PGDATA
(・・・返答がつづく)
(引用:『オープンソースデータベース標準教科書 -PostgreSQL-(Ver.2.0.0)』 9.2ファイルのコピー)
→以下↓記事へ
psql
##「postgres-#」になった場合の入力キャンセル方法
ostgres=# create table
postgres-# ¥r
問い合わせバッファがリセット(クリア)されました。
postgres=#
参考記事=https://www.dbonline.jp/postgresql/connect/index4.html
終了
\q
またはCtrl+D
メタコマンドとは
PstgreSQLの操作のためのコマンドをメタコマンドと呼びます。
メタコマンドはpostgresにログイン後、postgres=#のプロンプトが出ている状態で入力できます。
プロンプトとは
「ここから入力しなさい」なマーク。
テーブル一覧の表示
\dt;
テーブル構造の表示
\d テーブル名;