投稿

2月, 2026の投稿を表示しています

【環境構築】H2 Databaseを導入してSQLの世界を探求する:インストールから永続化の確認まで

なぜH2なのか? 今回は、軽量でインストール不要なH2 Databaseを使って、SQLの基礎をローカル環境で試行錯誤できるようにしました。 H2 Databaseは、本番ではあまり利用されませんが、その軽量性から、開発での利用をよく見かけます。 ステップ1:ファイルのダウンロードと配置 ・公式サイトへアクセス: H2 Database Engine を開きます。 ・ZIPをダウンロード: 「Download」セクションにある 「Platform-Independent Zip」 をクリックしてダウンロードします。 ・解凍と配置: ダウンロードした h2-xxxx-xx-xx.zip をダブルクリックして解凍します。 ステップ2:実行権限の付与(初回のみ) ・Macのセキュリティ設定により、そのままでは実行できない場合があるため、ターミナルで権限を与えます。 ・ターミナルを開きます。 ・cd コマンドで、解凍した h2/bin フォルダまで移動します。 ・以下のコマンドを実行して、実行用ファイルに権限を付与します。 chmod +x h2.sh ステップ3:H2データベースの起動 同じフォルダ(h2/bin)で以下のコマンドを打ちます。 ./h2.sh 自動的にブラウザが開けば成功です。 ※ブラウザが開かない場合: ターミナルに表示されている http://192.168...:8082 のようなURLをコピーしてブラウザに貼り付けてください。 ステップ4:ログインとSELECT確認 ブラウザのログイン画面で、以下の情報を入力して「Connect」を押しました。 JDBC URL: jdbc:h2:~/test User Name: sa Password: (空欄) 接続後、以下のSQLを1行ずつ(またはまとめて)実行しました。 SQL -- テーブル作成 CREATE TABLE USERS (ID INT PRIMARY KEY, NAME VARCHAR(255)); -- データ挿入 INSERT INTO USERS VALUES (1, 'Taro'); -- 確認(SELECT) SELECT * FROM USERS; エラーなく実行できました。 test.mv.dbがホームディレクトリにできていました。 ここに上のSQLの結果(...

【実行計画を読む 第1回】100万件データによる学習環境の構築と全件スキャンの正体

プロのデータベースエンジニアを目指す上で、実行計画(Execution Plan)を正確に読み解く力は必須スキルです。SQLが「なぜ遅いのか」を推測ではなく、確信を持って指摘できるようになることが本シリーズの目標です。 第1回は、100万件規模のデータを用いて、PostgreSQL 16における「全件スキャン」の実行計画を読み解くための実験環境を構築します。 0. 動作環境 本記事では、エンタープライズ環境で標準的なOracle Linux 9を使用します。 $ cat /etc/os-release NAME="Oracle Linux Server" VERSION="9.7" 1. PostgreSQL 16 のインストール OS標準のリポジトリではなく、PostgreSQL公式のPGDGリポジトリから最新のv16を導入します。 # ① 公式リポジトリの追加 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm # ② OS標準モジュールの無効化とインストール sudo dnf -qy module disable postgresql sudo dnf install -y postgresql16-server # ③ データベースの初期化 sudo /usr/pgsql-16/bin/postgresql-16-setup initdb # ④ サービスの起動と自動起動設定 sudo systemctl enable --now postgresql-16 2. ログイン認証の仕組みと設定 PostgreSQLのデフォルトは「ピア認証」です。作業をスムーズにするため、自分のOSユーザーと同じ名前のDBユーザーを作成しておきます。 # OSユーザーと同じ名前のDBユーザーとDBを作成 sudo -u postgres createuser --superuser $(whoami) sudo -u postgres createdb $(whoami) # 以降は「psql」だけで接続...