DB2 5 min read

Db2のデータ投入中に他業務が固まる ― IMPORT・INGEST・LOADの逆引き

夜間バッチで数百万行を入れる。投入そのものは終わったのに、別のジョブが固まる・更新だけ弾かれる——大量データ投入では、投入中と投入後の両方で別の問題が出ます。

Db2 の投入手段は IMPORT / INGEST / LOAD の3つです。この記事では症状から方式を選び直すための逆引きを最短でまとめます。

まず見る(結論)

3方式の違いは速度ではなく、ログをどれだけ書くか他業務をどれだけ止めるかに出ます。速さで選ぶと投入後に更新が止まります。まず投入直後の表スペース状態を確認してください。

# 投入した表の表スペースが通常状態か(BACKUP PENDING になっていないか)
db2 "SELECT TBSP_NAME, TBSP_STATE FROM TABLE(MON_GET_TABLESPACE('',-2))"

症状 → 原因 → 対処(逆引き)

症状 よくある原因 まず打つ手
投入中に他業務がエラーも出さずに固まる IMPORT を使っている。LOCKTIMEOUT = -1 だと他業務は落ちずに待ち続ける INGESTLOAD ... ALLOW READ ACCESS に替える
投入は成功したのに、その表への INSERT だけ SQL0290N LOAD をオプション無しで実行した。既定は COPY NO と同じで表スペースが BACKUP PENDING に入る その表スペースだけをオンラインバックアップする。または COPY YES / NONRECOVERABLE で投入する
LOAD QUERY TABLENormal なのに更新が通らない BACKUP PENDING は「表」ではなく「表スペース」の状態。表状態には出ない MON_GET_TABLESPACE.TBSP_STATE で表スペース側を見る
投入の途中でログが溢れる(SQL0964C IMPORTINGEST も1行ずつログに書く。COMMITCOUNT で減るのは同時保持量で、総量ではない ログ総量を減らせるのは LOAD だけ。枯渇の回避だけなら COMMITCOUNT でよい
INGESTSQL0912N で異常終了し、1行も入っていない 対象表が既定の LOCKSIZE ROW で、ロック要求が上限に達した LOCKLIST / MAXLOCKS を増やすか、ALTER TABLE ... LOCKSIZE TABLE
INGESTSQL2957N で始まらない 既定はリスタート可能モード。進捗表 SYSTOOLS.INGESTRESTART が無いと投入自体が始まらない CALL SYSPROC.SYSINSTALLOBJECTS('INGEST','C',NULL,NULL) で作る。使い捨てなら RESTART OFF

上2つは投入が成功した後に出る症状です。投入ジョブの戻り値だけを見ていると気づけません。

いちばん多い真因:「LOAD は表をロックするから危険、IMPORT なら安全」という思い込み

検証環境で計ると逆でした。300万行の LOAD が他業務を止めたのは1〜3秒程度なのに対し、50万行の IMPORT は所要時間の48秒間ずっと SELECTINSERT もブロックしていました。危険なのはロックの強さではなく、止まっている時間の長さです。

数値で比べたい・再現手順が要るとき

3方式のログ消費量、投入中の停止時間、LOADCOPY オプション別の表スペース状態を実機で計測した結果と、その再現手順は Zenn のフル記事にまとめています。

▶ Zennで続きを読む(無料)

Db2のLOAD後にINSERTだけSQL0290Nで落ちる ― IMPORT/INGEST/LOADの選び分け


実機ログつきの詳解を読む →

関連: Db2「SQL0290N」表スペースにアクセスできない原因を切り分けるDb2「SQL0964C トランザクションログがいっぱいです」の原因を切り分けるDb2 INGEST の使い方と進捗確認

この記事のような現場のTIPSを、Db2運用の全体像として12章に体系化しました。公式マニュアルには載らない「あのとき知っていれば」を減らすための1冊です。

現場で引ける Db2 の教科書

現場で引ける!Db2実践エンジニア・バイブル

Db2はRDBMS市場でシェア数%。情報が少なく、頼れるのは膨大な公式マニュアルだけ―― そんな現状を変えたくて、「なぜこの値にするのか」「この障害のとき次に何を見るのか」という、マニュアルに載っていない現場の文脈を1冊にまとめました。書いてあることはすべて実際の現場で経験したことです。

アーキテクチャ/構成パラメーター選定/セキュリティ/バックアップ・リカバリ/HADR/pureScale/日常点検の自動化/メモリ・ロック競合/SQLチューニング/RUNSTATS・REORG/MON_GET監視/現場の難題集 ―― 全12章+運用シェルスクリプト集

Zennで読む(¥2,000)→