ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

SQL の COUNT(*) と COUNT(1) の結果は同じ

SQL の COUNT(*) と COUNT(1) は同じ結果が得られます。また、COUNT() 内の定数が何であっても結果は同じです。

PostgreSQL のボトルネック調査に待機イベントを活用する

PostgreSQL の pg_stat_activity ビューで待機イベントの情報を収集すると、ボトルネック調査に役立つかもしれません。

PostgreSQL の結合テーブル数と計画時間の関係

PostgreSQL の結合テーブル数と計画時間の関係を調べました。計画時間は join_collapse_limit, geqo_threshold といったパラメータの影響を受けることが分かりました。

PostgreSQL の join_collapse_limit がプランナに与える影響

PostgreSQL の join_collapse_limit がプランナに与える影響を実験から推測しました。平坦化の概念をつかむことができます。

PostgreSQL の deadlock_timeout を見直す優先度はどの程度か?

PostgreSQL のデッドロック検出待機時間パラメータである deadlock_timeout の見直しに、どれほどの優先度で取組むべきなのかを、デッドロック検出処理の仕組みの観点から調査しました。

OSS-DB Gold 合格までの道のり (2022/08/20)

OSS-DB Gold Ver.2.0 を合格することができました。教材・勉強方法・振り返りなどをまとめました。

PostgreSQL 高度技術者育成テキスト 摸擬問題集 OSS-DB Gold Ver.2.0 差分と誤記まとめ

「PostgreSQL 高度技術者育成テキスト」内の摸擬問題集に対し、OSS-DB Gold Ver.2.0 をベースとした差分と誤記の修正をまとめました。

PostgreSQL の式インデックスも統計情報の収集対象となる

PostgreSQL の式インデックス(関数インデックス)もテーブルと同様に統計情報の収集対象です。よって、式インデックス作成後に ANALYZE を実行しないと、正しく活用されません。また、pg_stats ビューは式インデックスの統計情報も参照できます。

OSS-DB Silver 合格までの道のり (2022/06/11)

OSS-DB Silver Ver.2.0 を受験し、無事に合格することができました。今回の挑戦に向けて、どのような準備を行ったかまとめます。

Excelのシリアル値の計算と活用法

Excelは日時をシリアル値で管理しています。本記事ではシリアル値の計算と活用法を解説します。

Hyper-V の仮想マシンで perf の "not supported" な項目を出力できるようにする

Hyper-V の仮想マシンで perf の一部項目を出力できませんでした。これを構成バージョンの見直しとパフォーマンス監視コンポーネントを有効にすることで解決できました。解決までの流れを説明します。

PostgreSQL のプリペアド文で汎用的な実行計画を選択するタイミング

PostgreSQL ではプリペアド文を繰り返し実行していると、汎用的な実行計画を作成することがあります。この実行計画の切り替えがいつ行われるのかを調べました。

DEIM2022 「近代的トランザクション処理技法」聴講メモ

DEIM2022 「近代的トランザクション処理技法」の聴講メモです。メモは口頭説明を中心にまとめています。資料を併せてご参照ください。

PostgreSQL の一時バッファはセッションを終了するまで解放されない

PostgreSQL の一時バッファの開放はセッション終了時となります。一時テーブルの削除タイミングやトランザクションの終了タイミングではありません。

PostgreSQL は統計情報の度数分布と実際の最小値・最大値との乖離を補正して行数推定することがある

PostgreSQL には統計情報の度数分布と実際の最小値・最大値が乖離した場合の影響を抑える機能があります。この機能によって実行計画の推定行数がどのように変化するかを検証しました。

PostgreSQL で指数表記の暗黙的キャストが意図しない型になることがある

PostgreSQL でも指数表記を解釈してくれます。ですが、指数表記の暗黙的キャストが意図した型になるとは限らないことに注意が必要です。

PostgreSQL のエクゼキュータによるノードの処理順

PostgreSQL のエクゼキュータによるノードの処理順はマニュアルに解説されています。この説明をかみ砕いて説明します。

PostgreSQL の auto_explain のパフォーマンスへの影響

PostgreSQL の auto_explain モジュールを有効化することでパフォーマンスにどの程度影響を与えるのか、検証を行いました。

PostgreSQL の EXPLAIN コマンドの TIMING パラメータのオーバーヘッド

本記事では PostgreSQL の EXPLAIN コマンドの TIMING パラメータのオーバーヘッドがどこから生じているかを解説します。

SELECT-INSERT で SELECT に ORDER BY を指定するとソートが実行される

リレーショナルモデルは集合を扱い、行の順序を意識しないはずです。なのになぜ SELECT-INSERT の SELECT で ORDER BY できるのか…という疑問と検証を書き留めています。

幼い子供の育児と自分の勉強時間確保の両立(3~5歳編)

育児と勉強時間確保の両立は悩ましい問題です。子供が3~5歳の時期をどうやって乗り切ったか、まとめました。

Oracle Cloud Infrastructure (OCI) 無償トレーニングのおすすめポイント

Oracle Cloud Infrastructure (OCI) 無償トレーニングのおすすめポイントを解説します。

JSTQB AL テストマネージャ 受験記録 (2021/08/21)

2021/08/21 の「JSTQB AL テストマネージャ試験」に向けて、どんな準備(勉強方法・資料)をしたのか、また受験した所感を記録としてまとめました。

PostgreSQL のオブジェクト識別子データ型(OID 別名型)と使い方

オブジェクト識別子データ型と使い方を中心に解説します。最後にその実装にも踏み込んで解説をします。

「真摯さ」とは何か

私は「真摯さ」を「自分の考えに信念(軸、芯)を持ち、それに従った行動をすること」と考えています。それは安易に「バランス」という言葉に逃げないということです。

PostgreSQL の TEMPORARY TABLE と UNLOGGED TABLE にパフォーマンスの差異はあるか?

PostgreSQL にはテーブルの種類として TEMPORARY と UNLOGGED があります。この2つはワークテーブルとしてしばしば使われます。シンプルな条件下では UNLOGGED より TEMPORARY のほうがパフォーマンスが良い結果となりました。

PostgreSQL の実行計画で Hash のコストは Hash Join に含まれる

PostgreSQL の実行計画で Hash ノードはコストが 0 として計算されていますが、ハッシュ処理のコストは Hash Join ノードに含まれています。

PostgreSQL のインデックス肥大化と実行計画のコストへの影響

PostgreSQL のインデックスが肥大化した状況では実行計画のコスト計算に影響することがあります。これは適切な実行計画を選択する妨げとなるかもしれません。

PostgreSQL のテーブル継承は概念データモデルのスーパータイプ/サブタイプを実装する手段では無い

PostgreSQL にはテーブルの継承という機能があります。 本記事ではテーブル継承を概念データモデルのスーパータイプ/サブタイプの実装に用いると、どのような問題が出るかを見ていきます。

SQL で ORDER BY をクエリの最後にしか記述できず、結果セット全体にしか適用できない理由

SQL で ORDER BY の指定はクエリの最後に記述する必要があります。また、ORDER BY は結果セット全体に対して行われます。 この理由を理論面(リレーショナルモデル)と設計面 (SQL) からみていきます。