LoginSignup
0
0

More than 1 year has passed since last update.

【PostgreSQL・psql】チートシート

Last updated at Posted at 2021-11-01

btreeって何?

2.png

prod表の主キーを確認しようと「\d prod」を実行したらこう表示された。
btreeって何??
インデックスの種類とのこと。デフォルトのインデックスはB-tree

B-tree、Hash、GiST、SP-GiST、GINといった複数の種類のインデックスを使用可能です。
(中略)
デフォルトでCREATE INDEXコマンドは、B-treeインデックスを作成し、それはほとんどの一般的状況に適合します。
(引用:PostgreSQL 9.2.4文書 第11章インデックス

EXPLAIN文(SQL実行プランの分析)で返される内容の意味

VSCode
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-#」になった場合の入力キャンセル方法

psql
ostgres=# create table
postgres-# ¥r
問い合わせバッファがリセット(クリア)されました。
postgres=#

参考記事=https://www.dbonline.jp/postgresql/connect/index4.html

終了

\qまたはCtrl+D

メタコマンドとは

PstgreSQLの操作のためのコマンドをメタコマンドと呼びます。
メタコマンドはpostgresにログイン後、postgres=#のプロンプトが出ている状態で入力できます。

プロンプトとは

「ここから入力しなさい」なマーク。

テーブル一覧の表示

\dt;

テーブル構造の表示

\d テーブル名;

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0