Tihiroの頭を休めるIT教室

少しだけ頭使って後は根性

pg_restoreの-dとか-cとか-Cとかが難しい。

概要

pg_restoreの挙動に理解が追いつかないので、脳内アウトプット。ので、内容が不正確な可能性が大いにあります。

環境

PostgreSQL 10.5ぐらい

難しいの

-d オプション

リストア先のデータベースの名前を指定する。 つまりは、-d db_nameとした場合、db_nameにリストアする。 ただし、これは-Cオプションと併用しない場合の話。

-Cオプションと併用すると、db_nameに接続して、ダンプ内に書かれているデータベースをCREATEしてリストアする。

しかし、スキーマ単位のダンプをリストアしようとしたり、-nオプションと併用すると、やっぱりdb_nameにリストアしちゃう。

ちなみに、-dオプションをつけ忘れた場合は、標準出力にリストア(SQL表示)される。

わかりにくい。

-c オプション

このオプションをつけると、テーブルに対してDROP→CREATEしてからリストアする模様。 存在しないテーブルもダンプ内に含まれている場合はCREATEしてくれる。 ただし、リストア対象に関係ないものは当然削除しない。

-C オプション

リストア対象を作成してからリストアするというオプション。 リストア対象のデータベースとかスキーマとかをCREATEしてからリストアする模様。

-cオプションと併用するとデータベースとかスキーマとかをDROP→CREATEという動きになる?

んでも、よく(依存関係などがあると?)DROPに失敗する。その場合はデータのリストアも失敗する? 雰囲気的にはデータは追加されてもよいと思うけど、エラー時の挙動がよくわかんない。

リストア対象に関係ないものを削除したい(ダンプの状態にデータベースを戻したい)とか思って-cと-Cの両方をつけても上手く行かない場合が多い(経験上)。

まとめ

-cと-Cオプションを併用したときの挙動が理解できていない。ので、理解できていないうちは使用しないのが無難かも。

プロマネの午後2の出題まとめ的なもの。

去年に出てきたお題は、今年はでない模様。品質、納期、コスト、予算が2から3年間隔で繰り返し出てくる出題されるイメージ。後、平成30年度から、問2は対策しにくいような感じのあれになっている。

平成31年

  • コスト
  • 助言や他のプロジェクトの知見などを活用した問題の迅速な解決(統合?)

平成30年

  • 非機能要件(ステークホルダ?)
  • 本番稼働間近に発見された対応(スコープ、スケジュール)

平成29年

  • ステークホルダ
  • 品質

平成28年

  • 成果物の再利用(スコープ?)
  • リスク

平成27年

  • 調達
  • 品質

平成26年

  • 予算、見積り
  • 要件マネジメント(コミュニケーション?)

平成25年

平成24年

  • ステークホルダ
  • スコープ
  • 要件定義(リスク、スケジュール)

平成23年

  • コミュニケーション
  • 品質
  • コスト

PostgreSQLでのLENGTH関数で文字列の長さを測ってみる(空白は取り除かれちゃうよ)

概要

タイトルが全てを物語っているので多くは語りません。

環境

PostgreSQL 10.5ぐらい

測ってみた

CREATE TABLE test_table  (
  val CHAR(12)
);

っていうテーブルがあったとして

INERT INTO test_table VALUES('test');

とした後に

SELECT val, LENGTH(val), OCTET_LENGTH(val), LENGTH(' ') , LENGTH(RPAD(val, 12, ' ')) FROM test_table;

します。

結果は

val LENGTH(val) OCTET_LENGTH(val) LENGTH(' ') LENGTH(RPAD(val, 12, ' '))
test 4 12 1 12

となりました。

つまりは?

PostgreSQLではLENGTHは半角空白を取り除いた長さとなります。バイト数を取得するOCTET_LENGTHでは半角空白混みでの長さ(バイト数)となります。

「文字列の長さ」と「バイト数」だからですかね? PostgreSQLではCHAR型であっても、文字列の長さには半角空白は含まない。ただし、文字列に対しては半角空白を含んでの長さを出力するようです。

ということで、Oracleと違うので注意が必要ですね。

追記

WEB+DB PRESSのVol112に、CHAR型に対するLENGTHは後ろの空白を除いた長さ、って書いてありました。

全国のバス停やバス路線を調べられるサイトをリンクに追加

概要

タイトルの通り、地図からバス停やバスの路線を調べることができるサイト様をリンクに追加しました。

bus-routes.net

というのも

いっときからなぜかGoogle検索さんに引っかからなくなったため、てっきりサイトが閉鎖していたのかと思っていたのです。他のバス停を探すサイトとか利用してみても使い勝手がいまいちだったので、しょぼくれていたのですが、ふとした弾みにサイトが見つかったので、忘れないようにリンクしておこう。という算段であります。

まとめ

超便利。

平成31年度春期、プロジェクトマネージャ試験の結果

午後1は64点で、午後2もA判定をいただき、無事に合格していました。そのうちにまた、振り返り記事を書きたいと思います。

とりあえず今の心境は

f:id:r_tihiro:20190625122938j:plain

な、感じです。

テーブルのテーブルスペースと、NULLなテーブルスペースをもつテーブル。

調べたいこと

テーブルのテーブルスペースを調べた際に、テーブルスペースがNULLになっているのがあったので調べてみた。

環境

結論

テーブルスペースがNULLなテーブルは、パーティションテーブルな模様(と、一時表テーブルもNULLになる?)。

確認する

テーブルのテーブルスペースの確認

SELECT table_name, tablespace_name FROM user_tables ORDER BY table_name;

パーティションテーブルのテーブルスペースの確認

SELECT * FROM user_part_tables;

(ついでに)テーブルスペースが自動拡張化どうか、とかを調べたい

過去記事参照。

Oracleの表領域の使用率とデータファイルのサイズを確認するSELECT文(管理者用) - Tihiroの頭を休めるIT教室

まとめ

19cとかいつインストールしようか…

PG_DUMPの圧縮具合

概要

お客さんとお話ししていて、たまに話題になるのが、圧縮するとどれぐらいサイズ減りますかね? っていうこと。なので記録として残しておく。

環境

計測

コマンド

pg_dump -Fc postgres > pg.dmp

結果

圧縮前 圧縮後 圧縮率
874MB 52MB 6%ぐらい
58GB 5.9GB 10%ぐらい
38.5GB 3GB 8%ぐらい
1.2GB 185MB 15%ぐらい

結論

データの内容によるけど、だいたい10%ぐらいにはなりそう?