データベースのバッチ挿入は本当にこれだけの工夫が必要なのか?
最近のプロジェクトで様々なinsertBatchのコードを書いてきましたが、いつも「バッチ挿入はループ挿入よりずっと効率的だ」と言われます。そこで今回は、本当にそうなのかを検証してみましょう。
テスト環境:
SpringBoot 2.5
Mysql 8
JDK 8
Docker
まず、複数データの挿入には以下の選択肢があります:
foreachループによる挿入
SQLを結合して一度に実行
バッチ処理機 ...
7月7日 16:00 投稿
Dockerを活用したアプリケーションコンテナ化の実践手法
Docker環境の構築
CentOSベースのシステムにDockerをインストールする際の手順です。パッケージリポジトリを最適化し、高速なミラーを利用する設定を行います。
# 必要な依存パッケージをインストール
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 公式リポジトリの追加(東京リージョン向けミラー)
sudo yum-config-manager --add-repo https:/ ...
7月7日 02:01 投稿
Dockerコンテナ運用ガイド
Docker環境のセットアップ
1.1 システムツールのインストール
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 リポジトリの追加
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.3 キャッシュの更新
dnf makecache
1.4 Docker CEのインストール
yum -y install docker-ce docker-ce-cli containerd. ...
7月6日 23:29 投稿
PHPとJPushを用いたカスタマイズ可能なプッシュ通知システムの構築
本稿では、外部ライブラリに依存せず、純粋なPHPとcronによるスケジュール実行で実装されたプッシュ通知基盤について解説します。極光推送(JPush)APIを直接呼び出し、ユーザー属性(性別・地域・端末種別)に基づくセグメント配信を可能にする設計を採用しています。
認証付きJPush送信関数
以下の関数は、AppKeyとMaster Secretを用いてBasic認証を行い、JSONペイロー ...
7月6日 21:50 投稿
MySQLのフロー制御:条件分岐とIFステートメントの実装方法
MySQLにおける制御フローの基礎
一般的なプログラミング言語と同様に、SQLの実行フローは以下の3つに大別されます。
順次構造:上から下へ順番に実行される
分岐構造:条件に合致した処理を選択して実行する
反復構造:特定の条件を満たす間、処理を繰り返す
MySQLでこれらの制御フローを実現するステートメントは、ストアドプロシージャ、ストアドファンクション、トリ ...
7月6日 19:47 投稿
Leaf分散ID生成システム
要件定義
分散システムにおいてデータやメッセージの一意識別は重要課題である。特にテーブルシャーディング環境では、データベースの自動採番機能では要件を満たせない。ID生成システムに求められる要件は以下の通り:
グローバル一意性: 重複IDの発生を排除
単調増加傾向: インデックス構造を持つRDBMSの書き込み性能最適化
厳密な単調増加: トランザクションバージョン ...
7月6日 19:15 投稿
MySQL 単一テーブルクエリの基本操作
以下の例では、学生の成績を管理する grade テーブルを対象に、さまざまな SELECT クエリの使い方を紹介します。
テーブル定義とサンプルデータ
CREATE TABLE grade (
id INT NOT NULL,
sex CHAR(1),
firstname VARCHAR(20) NOT NULL,
lastname VARCHAR(20) NOT NULL,
english FLOAT,
math FLOAT,
chinese FLOAT
);
INSERT INTO grade VALUES
(1, 'm', 'Jo ...
7月6日 01:12 投稿
MySQLデータベース操作の基礎
1. DDL(データ定義言語)の基本操作
データベースやテーブルの構造を定義・変更するためのコマンド
-- データベースの作成
CREATE DATABASE school_system
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- データベース選択
USE school_system;
-- テーブルの作成
CREATE TABLE learners (
student_id INT PRIMARY KEY NOT NULL,
full_name V ...
7月6日 00:02 投稿
MySQLで読み書き分離パターンを選択する方法
読み書き分離パターンの選択
読み書き分離を実装する場合、適切なパターンを選択することが重要です。一般的に使用される読み書き分離パターンには、単純な読み書き分離とロードバランサーを活用した読み書き分離の2種類があります。データソースを動的に切り替えることで、これらのパターンを実装できます。以下では、Spring Bootベースの読み書き分離 구현と、さまざま ...
7月5日 23:00 投稿
Budibase表名文字コード問題の根本的解決策
低コードプラットフォームBudibaseを活用する際、表名に日本語や特殊文字を使用するとデータベースで不正な文字表示が発生する問題が頻繁に報告されています。PostgreSQLやMySQLなど複数のデータベースと連携する際に、表名の文字コード不一致が原因でクエリ失敗や関連付けエラーが発生するケースが確認されています。この問題の根本原因は、データベース接続設定に文字コ ...
7月4日 23:22 投稿