DB50 インタビューの質問と回答トップ 2 (2025)

DB2の面接準備はお済みですか?単にコマンドを知っているだけでは不十分で、データベースの真の仕組みに対する洞察力を示すことが求められます。DB2の面接では、問題解決能力の深さ、適応力、そして技術的な鋭さが問われます。

この分野には、スキルセットを磨いている新人から、5年、あるいは10年といったルートレベルの経験を持つ経験豊富なプロフェッショナルまで、計り知れないチャンスがあります。DB2の面接では、技術的な専門知識、分析スキル、そしてドメインに関する専門知識が問われます。マネージャー、シニア層、そしてチームリーダーは、現場での高度な分析、技術的な経験、そして専門的な経験を積んでいる候補者を高く評価します。

この記事では、65 名を超える技術リーダーからの洞察と、さまざまな業界の 40 名を超える採用マネージャーや専門家からのフィードバックに基づき、本当に重要な最も一般的な、高度な、実用的な領域について説明します。

DB2面接の質問と回答

1) DB2 とは何ですか? また、エンタープライズ アプリケーションにおいてなぜ重要なのですか?

DB2は、によって開発されたリレーショナルデータベース管理システム(RDBMS)のファミリーです。 IBMエンタープライズ環境では構造化データと非構造化データの処理に広く利用されています。特に、 IBM メインフレーム(z/OS)上で稼働し、銀行、保険、政府機関などのミッションクリティカルなシステムで利用されています。同時実行制御、パーティショニング、ストアドプロシージャ、バッファープールといった高度な機能により、DB2は数千人のユーザーを同時に処理することが可能です。例えば金融機関では、DB2はACID特性を確保しながら毎日数百万件ものトランザクションを処理するために使用されており、高可用性システムの基盤となっています。

👉 無料PDFダウンロード:DB2面接の質問と回答


2) DB2は他のリレーショナルデータベースとどう違うのか? Oracle or MySQL?

すべてのリレーショナルデータベースはSQLを使用してテーブル内のデータを管理しますが、DB2はエンタープライズレベルの拡張性とプラットフォームサポートにおいて他社製品と一線を画しています。 MySQLは軽量でWebアプリケーションでよく使用されますが、DB2はメインフレームやエンタープライズLinux/Unix/Windows 環境。 OracleDB2は、より緊密な統合を提供します IBM ミドルウェアと z/OS をサポートし、並列処理とワークロード管理を強力にサポートします。

因子 DB2 Oracle MySQL
主な用途 エンタープライズ、メインフレーム エンタープライズ、クロスインダストリー ウェブアプリ、スタートアップ
パフォーマンス OLTP/OLAP向けに最適化 強力なOLTP + クラスタリング 穏健派
ライセンシング 柔軟な階層 高いコスト ほとんどオープンソース
プラットフォームサポート メインフレーム + LUW ルウ ルウ

3) コーディングから実行までの DB2 SQL ステートメントのライフサイクルについて説明します。

DB2 SQL文のライフサイクルは、正確性と効率性を確保するために複数の段階に分かれています。まず、SQL文は コード化 アプリケーション内で実行されます。その後、 プリコンパイルDB2はSQL文をデータベースリクエストモジュール(DBRM)に抽出します。次のステップは 拘束 このプロセスはSQLを検証し、権限をチェックし、アクセスパスを生成します。最後に、 実行 フェーズでは、生成されたアクセスプランを使用してデータを取得または変更します。例えば、 SELECT クエリはまずオプティマイザを通過し、オプティマイザは利用可能な統計とインデックスに基づいて、インデックス スキャンを使用するか、完全なテーブル スキャンを使用するかを決定します。


4) DB2 でサポートされているさまざまなデータ型にはどのようなものがありますか?

DB2は、数値データ、文字データ、および時間データを格納するための幅広いデータ型をサポートしています。一般的な数値型には、SMALLINT、INTEGER、DECIMAL、FLOATなどがあります。文字データはCHAR、VARCHAR、CLOBを使用して格納でき、バイナリデータはBLOBを使用して格納できます。時間データは、DATE、TIME、TIMESTAMPでサポートされています。

例:

  • INTEGER 従業員ID用。
  • VARCHAR(100) 従業員名用。
  • DATE 参加日については。

これらのタイプは、アプリケーション間の柔軟性を保ちながらデータの整合性を確保するため、正規化されたデータベース スキーマを設計する際に非常に重要です。


5) DB2 オプティマイザーはどのようにして最適なアクセス パスを選択しますか?

DB2オプティマイザーはSQL文を分析し、最も効率的なデータアクセス方法を決定します。 要因 利用可能なインデックス、カタログテーブルの統計情報、クエリ述語、システムリソースなど。例えば、顧客テーブルをクエリする場合、オプティマイザは インデックススキャン クエリされた列にインデックスが存在する場合、または シーケンシャルスキャン 大多数の行が必要な場合。コストベースのアルゴリズムを使用することで、オプティマイザは結合やサブクエリを含む複雑なクエリでも効率的な実行を保証します。そのため、カタログ統計を最新の状態に保つことが重要です。


6) SQLCA とは何か、またその主要フィールドをリストアップして説明していただけますか?

SQLコミュニケーションエリア(SQLCA)は、SQL実行後のフィードバックを提供する構造体です。埋め込みSQLプログラムでは、SQL操作ごとに自動的に更新されます。主なフィールドは次のとおりです。

  • SQLコード: 成功 (0)、警告 (>0)、またはエラー (<0) を示します。
  • SQLエラー: 結果を説明するメッセージ テキスト。
  • SQLERRD: 処理された行数などの診断情報。

たとえば、 UPDATE 10行を変更します。 SQLERRD(3) 値 10 が含まれます。SQLCA は、COBOL、C、および DB2 に統合されたその他のホスト言語でのエラー処理とデバッグに不可欠です。


7) COMMIT コマンドと ROLLBACK コマンドの目的は何ですか?

DB2のCOMMITコマンドは、トランザクションによって行われたすべての変更を永続的に確定し、ROLLBACKはコミットされていない変更を元に戻します。これらのコマンドは、トランザクションの維持に役立ちます。 データの一貫性 そして、 ACID トランザクションの特性。例えば、銀行アプリケーションにおいて、ある口座からの送金で資金が引き落とされたが、別の口座への入金に失敗したというケースでは、ROLLBACKを発行することで、部分的なトランザクションによってデータが破損されることを防ぎます。一方、両方の操作が成功した場合は、COMMITを発行することで送金が完了します。


8) DB2 にはどのような種類の制約が存在し、それぞれの利点は何ですか?

制約は、データの整合性を維持するためのルールを適用します。DB2 では、いくつかの種類がサポートされています。

  • 主キー: 一意性と非 null を保証します。
  • 外部キー: テーブル間の参照整合性を強制します。
  • ユニーク: 列内に重複した値がないことを保証します。
  • チェック: 値が特定の条件を満たしていることを検証します。
  • NULLではない: 欠損値の発生を防ぎます。

メリット: アプリケーションレベルの検証の必要性を減らし、一貫性を向上させ、無効なデータ入力を防ぎます。例えば、CHECK制約は、従業員の給与が常に0より大きいことを保証できます。


9) DB2 ではバッファー プールはどのように機能しますか?

バッファプールは、DB2がテーブルページとインデックスページをキャッシュするために使用するメインメモリの予約領域です。クエリが実行されると、DB2はまずバッファプールを参照し、物理ディスクI/Oを最小限に抑えます。適切に調整されたバッファプールは、パフォーマンスを大幅に向上させます。例えば、頻繁にアクセスされるテーブルのデータページがバッファプール内に存在する場合、クエリはディスクではなくメモリから処理されます。管理者は複数のバッファプール(4K、8K、16K、32K)を作成し、特定の表領域に割り当てることで、最適なパフォーマンスを実現できます。


10) クラスタリング インデックスとは何ですか? また、非クラスタリング インデックスとどう違うのですか?

クラスタリングインデックスは、表領域内の行の物理的な順序を決定し、関連する行が一緒に格納されるようにします。これにより、範囲クエリのパフォーマンスが向上します。一方、非クラスタリングインデックスは行の順序には影響を与えませんが、ポインタを通じて迅速なアクセスパスを提供します。

例:

  • 「注文日」列のクラスタリング インデックスにより、最近の注文が物理的にグループ化され、月次レポートの作成速度が向上します。
  • 「顧客 ID」の非クラスタリング インデックスにより、データを再編成せずにすばやく検索できます。
機能 Clusteringインデックス また、Clusteringインデックス
行の順序に影響します あり いいえ
最適な使用例 範囲クエリ ポイント検索
メンテナンス 挿入時にコストがかかる 安いです

11) DB2 における並行性と、ロックによって競合が解決される仕組みについて説明します。

同時実行とは、複数のユーザーまたはアプリケーションが同時に同じデータにアクセスすることです。DB2は、ロック機構によってこれを処理することで、次のような異常を回避します。 更新の損失、ダーティリード, ファントムリードロックは、以下のレベルに適用できます。 表、ページ, 例えば、オンライン小売システムでは、2人の顧客が同時に同じ在庫レコードを更新すると、不整合が発生する可能性があります。DB2の行レベルロックは、一度に1つの更新のみが行われるようにすることで、正確性を維持しながら、別の行に対する他の操作を続行できるようにします。


12) データベース リクエスト モジュール (DBRM) とは何ですか? また、バインディングではどのように使用されますか?

DBRMは、埋め込みSQLを含むアプリケーションプログラムのプリコンパイル中に生成されます。これには抽出されたSQL文が含まれます。 バインドプロセスDB2はこれらのステートメントを検証し、権限をチェックし、パッケージに格納されたアクセスプランを生成します。このパッケージは、実行時にアプリケーションプランによって参照されます。例えば、COBOL-DB2プログラムでは、SQLステートメントはDBRMにプリコンパイルされ、その後、最適化されたクエリパスを保証するパッケージにバインドされます。


13) 埋め込み SQL で DB2 テーブルから複数の行を取得するにはどうすればよいですか?

DB2は複数行を取得するためにカーソルを使用します。カーソルはSELECT文で宣言され、結果セットを確立するために開かれ、行ごとにホスト変数にフェッチされ、最後に閉じられます。例えば、COBOLプログラムでは次のようになります。

EXEC SQL DECLARE C1 CURSOR FOR SELECT EMP_NAME FROM EMPLOYEE END-EXEC.
EXEC SQL OPEN C1 END-EXEC.
EXEC SQL FETCH C1 INTO :WS-NAME END-EXEC.
EXEC SQL CLOSE C1 END-EXEC.

このメカニズムにより、特にレポート作成やバッチ処理のシナリオで、行を順番に処理する柔軟性が得られます。


14) DB2 プログラムで SELECT * を避けるべきなのはどのような場合ですか。また、その理由は何ですか。

使い方 SELECT * テーブルからすべての列を取得する方法は非効率的でリスクを伴います。デメリットとしては、I/Oコストの増加、未使用列の不要な取得、アプリケーションがテーブル構造に依存することなどが挙げられます。新しい列が追加された場合、 SELECT * 失敗する可能性があります。ベストプラクティスとしては、必要な列のみを指定します。例:

SELECT EMP_ID, EMP_NAME FROM EMPLOYEE;

これにより、データ転送のオーバーヘッドが削減され、パフォーマンスが向上します。


15) DB2 パッケージとは何ですか? また、その利点は何ですか?

パッケージとは、1つのDBRM用のSQL文をコンパイルした形式です。プランとは異なり、パッケージではモジュール型の開発が可能です。 利点は次のとおりです。

  • より小さな SQL ステートメント セットをバインドすることでオーバーヘッドが削減されます。
  • 1 つのモジュールに障害が発生した場合でも、エラーの分離が容易になります。
  • 計画全体に影響を与えずにパッケージを再バインドできる柔軟性。

例: 大規模な銀行システムでは、各機能モジュール (アカウント管理、ローン処理など) が独自のパッケージを持っている場合があり、開発者はアプリケーション全体を混乱させることなく 1 つのモジュールを変更できます。


16) EXPLAIN 機能は DB2 のパフォーマンス チューニングにどのように役立ちますか?

EXPLAINコマンドは、選択されたアクセスパス、結合方法、使用されるインデックスなど、オプティマイザがクエリの実行を計画する方法を示します。出力はPLAN_TABLEに格納されます。例えば、EXPLAINコマンドでインデックスが存在するテーブル全体のスキャンが行われたことが判明した場合、統計情報の欠落やインデックスの不適切な使用が示唆されている可能性があります。DBAはEXPLAIN出力を分析することで、インデックスを追加したり、クエリを書き直したりしてパフォーマンスを向上させることができます。


17) DB2 にはどのようなタイプのロックが存在し、それぞれの特徴は何ですか?

DB2 はいくつかのロック タイプを提供します。

  • 共有(S): 複数のトランザクションは読み取りはできますが、変更はできません。
  • 排他的(X): 読み取り/書き込みできるトランザクションは 1 つだけです。
  • 更新 (U): 共有ロックが後で排他的になる可能性がある場合にデッドロックを防止します。
ロックタイプ 特性 ユースケースの例
共有 複数回の読み取りが許可されますが、更新は許可されません レポートクエリ
特別 リソースの完全な制御 更新ステートメント
更新 同時更新時のデッドロックを軽減 オンライン予約

同時実行の要件に応じて、行、ページ、または表領域レベルでロックを適用できます。


18) ページ レベル ロックの利点と欠点は何ですか?

ページ レベルのロックでは、1 行ではなくページ全体 (たとえば 4K) のデータがロックされます。

Advantages:

  • 行レベルのロックに比べてオーバーヘッドが削減されます。
  • 一括操作に効率的です。

短所:

  • 複数のユーザーが同じページの異なる行にアクセスすると競合が発生する可能性があります。
  • ロック エスカレーションの可能性が高まります。

たとえば、2 人のユーザーが同じページ上の 2 つの異なる行を同時に更新すると、不要な競合が発生する可能性があります。


19) DB2 は外部キーの参照整合性をどのように処理しますか?

DB2は参照整合性を次のように強化します。 外部キー制約子テーブルのレコードが有効な親キーを参照していることを確認します。次のようなオプションがあります。 ON DELETE CASCADE or ON DELETE SET NULL 親レコードが削除されたときに何が起こるかを制御します。例えば、注文データベースで顧客が削除された場合、その顧客のすべての注文をカスケード(削除)するか、NULL参照で保持するかを選択できます。これにより、孤立したレコードの発生を防ぎ、関連テーブル間の一貫性を維持できます。


20) の役割を説明してください Buffer DB2 のマネージャー。

当学校区の Buffer マネージャーは、DB2の仮想メモリ(バッファプール)と物理ディスク間のデータ移動を担当します。頻繁にアクセスされるページをキャッシュすることでディスクI/Oを削減します。ページが要求されると、 Buffer マネージャはまずバッファプールをチェックし、存在しない場合にのみディスクからデータを取得します。例えば、日次財務レポートを生成するシステムでは、 Buffer マネージャーは、頻繁にクエリされるデータがメモリ内ですぐに利用できるようにし、クエリの実行時間を大幅に短縮します。


21) DB2 のリソース管理テーブル (RCT) の目的は何ですか?

リソース管理テーブル(RCT)は、特定のCICSトランザクションがアクセスできるDB2プランを定義するDB2/CICSコンポーネントです。CICSトランザクションIDとDB2許可IDの間の橋渡しとして機能します。例えば、ユーザーがDB2とやり取りするCICSトランザクションを実行する場合、RCTは許可されたDB2プランのみにアクセスできるようにします。これにより、CICSアプリケーション内での不正なSQL実行を防止します。トランザクションIDをプランにマッピングすることで、RCTは高容量オンライントランザクション処理システムのセキュリティとパフォーマンスの両方を向上させます。


22) DB2 で表スペースを別の DASD ボリュームに移動するにはどうすればよいでしょうか?

表領域を別のDASD(直接アクセス記憶装置)に移動するには、関連するストレージグループを変更する必要があります。まず、 STOGROUPの変更 コマンドはボリュームを追加または削除できます。その後、 表領域の再編成 ユーティリティは、データを新しいボリュームに物理的に移動させるために使用されます。回復するには、 表領域の回復 データの整合性を保証します。例えば、本番環境の表領域で1つのボリューム上の容量が不足した場合、DBAは新しいボリュームを割り当て、ストレージグループを変更し、表領域を再編成することで、ダウンタイムなしで将来のデータが新しいデバイスに保存されるようにすることができます。


23) DCLGEN と DBRM の違いを説明してください。

DCLGEN(宣言 Generator) と DBRM (データベース要求モジュール) は、DB2 では異なる目的を果たします。

  • DCLGEN: プログラムとデータベースの一貫性を確保するために、ホスト言語のコピーブックと DECLARE TABLE ステートメントを生成します。
  • DBRM: バインド時に使用される、事前コンパイル後のプログラムから抽出された SQL ステートメントが含まれます。
側面 DCLGEN DBRM
目的 ホスト言語テーブルの定義 バインディング用のSQLストレージ
使用法 コンパイル前の検証 バインドプロセスへの入力
使用例 列名が一致することを確認する パッケージ内のアクセスパスを生成する

どちらのツールもエラーを削減しますが、アプリケーション開発の異なる段階で動作します。


24) 相関サブクエリとは何ですか? いつ使用すればよいですか?

相関サブクエリとは、別のクエリ内にネストされたクエリで、外側のクエリの列を参照します。通常のサブクエリとは異なり、外側のクエリの各行ごとに1回実行されます。そのため、行ごとに評価する必要がある場合に便利です。

例:

SELECT E1.EMP_ID, E1.EMP_NAME
FROM EMPLOYEE E1
WHERE E1.SALARY > (
	SELECT AVG(E2.SALARY)
	FROM EMPLOYEE E2
	WHERE E2.DEPT_ID = E1.DEPT_ID
);

このクエリは、部門の平均給与を上回る給与を得ている従業員を検索します。相関サブクエリは強力ですが、処理速度が遅くなる可能性があるため、インデックスを使用して最適化する必要があります。


25) DB2 では COMMIT 後もカーソルは開いたままになりますか?

デフォルトでは、カーソルはCOMMITが発行されると閉じます。ただし、 保留中 オプションはCOMMIT後も開いたままです。これは、大規模なデータセットを複数のステップで取得する長時間実行トランザクションに便利です。例えば:

DECLARE C1 CURSOR WITH HOLD FOR SELECT * FROM EMPLOYEE;

これにより、COMMIT後のフェッチを続行できます。ただし、CICS環境では、擬似会話型プログラムが設計上カーソルを閉じるため、WITH HOLDは効果がありません。開発者は、予期しないカーソルのクローズを防ぐため、適切な設計を行う必要があります。


26) DB2 の表スペースにはどのような種類がありますか?

DB2 は、それぞれ特定のユースケースに合わせて最適化された複数のタイプの表スペースをサポートしています。

  • シンプルな表領域: 複数のテーブルを許可しますが、現在は非推奨です。
  • セグメント化された表領域: データをセグメントにグループ化します。複数のテーブルに最適です。
  • パーティション化された表領域: スケーラビリティを確保するために、大きなテーブルをパーティションに分割します。
  • ユニバーサル テーブルスペース (UTS): 最新の DB2 で広く使用されている、セグメント化された表領域とパーティション化された表領域の利点を組み合わせます。

例: 数百万行の給与計算システムでは、パーティション化された表領域によって並列アクセスが可能になり、クエリ パフォーマンスが向上します。


27) DB2 はロックの競合とデッドロックをどのように処理しますか?

複数のトランザクションが互換性のないロックを要求すると、DB2は競合を検出します。トランザクションが待機サイクルを形成すると、デッドロックが発生します。DB2は自動的に一方のトランザクションを中止し、SQLCODE -911または-913を返すことで、この問題を解決します。例えば、トランザクションAが行Xを更新して行Yを待機しているときに、トランザクションBが行Yを更新して行Xを待機している場合、DB2はデッドロックを検出し、一方のトランザクションをロールバックします。デッドロックを最小限に抑えるベストプラクティスとしては、一貫したアクセス順序、短いトランザクション、適切な分離レベルなどが挙げられます。


28) カーソル安定性とは何ですか? また、繰り返し読み取りとどう違うのですか?

カーソル固定(CS)はDB2の分離レベルであり、カーソルが行に配置されている間のみ行ロックが保持されます。カーソルが行を移動するとロックは解除されます。これにより同時実行性は向上しますが、非反復読み取りが発生するリスクがあります。一方、反復可能読み取り(RR)は、COMMITが実行されるまですべての対象行のロックを保持します。これにより非反復読み取りは防止されますが、同時実行性は低下します。

分離レベル 特性 Use Case
CS ロックが素早く解除され、同時実行性が高まる 最小限の衝突で報告する
RR COMMITまでロックが保持され、一貫性のある読み取り 金融取引

29) DB2 のパッケージとは何ですか? また、パッケージによってモジュール性はどのように向上しますか?

パッケージには、単一のDBRMからのSQL文のアクセスパスと実行コードが含まれます。パッケージを使用すると、アプリケーションプラン全体に影響を与えることなく、個々のプログラムまたはモジュールを再バインドできるため、モジュール性が向上します。例えば、銀行システムでは、ローンモジュールが変更された場合、そのパッケージのみが再バインドされ、他のパッケージはそのまま残ります。これにより、ダウンタイムが短縮され、すべてのDBRMをまとめて再検証する必要がなくなります。


30) EXPLAIN コマンドの出力はどこに保存され、どのように解釈されますか?

EXPLAINコマンドは出力を プランテーブル ユーザーのスキーマの下で実行されます。このテーブルには、選択されたインデックス、結合方法、ソート操作、推定コストなどの詳細が含まれます。例えば、インデックスが利用可能であるにもかかわらず、EXPLAIN でフルテーブルスキャンが示される場合、カタログ統計が古くなっているか、クエリ述語が非効率的である可能性があります。PLAN_TABLE を解釈することで、DBA は新しいインデックスを作成するか、統計を収集するか、最適化のためにクエリを書き直すかを判断できます。


31) 排他ロック、共有ロック、更新ロックの違いは何ですか?

  • 排他ロック(X): 読み取りまたは書き込みができるトランザクションは 1 つだけで、他のトランザクションはブロックされます。
  • 共有ロック(S): 複数のトランザクションは読み取りはできますが、書き込みはできません。
  • 更新ロック(U): 共有から排他へアップグレードするときにデッドロックを防ぐために使用されます。

例: 航空会社の予約システムでは、共有ロックを使用することで、複数の担当者が空席状況を確認できます。ただし、座席が予約されると、排他ロックによって、他のトランザクションが同時にその座席を変更できないようにします。更新ロックは、システムが読み取りから更新への移行を予測した際に機能します。


32) DB2 はどのようにして高可用性と災害復旧を確保するのでしょうか?

DB2は、以下の方法で高可用性をサポートします。 HADR(高可用性災害復旧)HADRはプライマリデータベースからスタンバイデータベースにデータを複製し、障害発生時のダウンタイムを最小限に抑えます。さらに、DB2は ログ配布、フェイルオーバークラスタリング、バックアップ/復元ユーティリティ例えば、グローバルな銀行システムでは、HADRにより、プライマリデータセンターに障害が発生した場合でも、スタンバイシステムがシームレスに引き継ぎ、トランザクションの損失を最小限に抑えることができます。同期モード(同期、非同期)などの要素によって、パフォーマンスと復旧時間のトレードオフが決まります。


33) パーティション化された表領域を使用する利点と欠点は何ですか?

パーティション化された表領域は、大きな表を複数のパーティションに分割し、管理性とパフォーマンスを向上させます。

Advantages:

  • 並列クエリ処理。
  • バックアップと復元が簡単になります。
  • 数十億行に対応するスケーラビリティ。

短所:

  • 複雑な管理。
  • パーティション キーの選択が不適切である場合に発生する可能性があるスキュー。

例: 通話記録を保存する通信会社では、月ごとにパーティション分割することで、クエリとメンテナンス タスクが管理可能なデータのサブセットに対して実行されるようになります。


34) DB2 はクエリー パフォーマンス チューニングをどのように処理しますか?

DB2のチューニングには、クエリ実行プランの分析、インデックスの最適化、データベースパラメータの調整が含まれます。DB2のオプティマイザーが中心的な役割を果たしますが、DBAは統計情報が最新であることを確認する必要があります。一般的なチューニング手法には以下が含まれます。

  • 複合インデックスを作成します。
  • IN の代わりに EXISTS を使用してクエリを書き換えます。
  • 大きなテーブルにパーティション分割を使用する。

例えば、数百万行をスキャンするクエリでは、頻繁にフィルタリングされる列にインデックスを追加することで、劇的に改善される可能性があります。 説明する   db2advis 最適化の機会を特定するのに役立ちます。


35) DB2 の分離レベルにはどのような種類がありますか?

DB2 は、並行性と一貫性のバランスをとるために複数の分離レベルを提供します。

  • 繰り返し読み取り (RR): ダーティ リード、非反復リード、ファントム リードを防止します。
  • 読み取り安定性(RS): 繰り返し不可能な読み取りを防止しますが、ファントム読み取りは許可します。
  • カーソル安定性(CS): ダーティリードのみを防止します。
  • 非コミット読み取り (UR): ダーティ リードと最高の同時実行性を許可します。
分離レベル ダーティリード 繰り返し不可能な読み取り ファントムリード
RR いいえ いいえ いいえ
RS いいえ いいえ あり
CS いいえ あり あり
UR あり あり あり

36) DB2 でインデックスを使用するのはどのような場合ですか? また、そのデメリットは何ですか?

インデックスは、アクセスパスを高速化することでクエリのパフォーマンスを向上させるために使用されます。特にWHERE句、結合、ORDER BY操作で役立ちます。ただし、インデックスのメンテナンスが必要となるため、INSERT、UPDATE、DELETE操作ではオーバーヘッドが発生します。例えば、EMP_IDのインデックスは給与計算システムでの検索を高速化しますが、バッチ挿入の速度を低下させる可能性があります。過剰なインデックス設定はストレージの消費量を増加させ、パフォーマンスを低下させるため、避けるべきです。


37) DB2 における静的 SQL と動的 SQL の違いを説明してください。

  • 静的SQL: SQL文は実行前にコンパイルされ、バインドされます。これにより、パフォーマンスと安定性が向上します。
  • 動的SQL: ステートメントは実行時に構築および準備されるため、柔軟性は得られますが、オーバーヘッドが発生します。

例:

  • 静的 SQL は、クエリが予測可能な OLTP システムに適しています。
  • 動的 SQL は、ユーザー入力に基づいてクエリが生成されるレポート アプリケーションで役立ちます。
側面 静的SQL ダイナミックSQL
パフォーマンス 速く もっとゆっくり
柔軟性 限定的 ハイ
Use Case コア取引 アドホックレポート

38) DB2 はバックアップおよびリカバリ操作をどのように処理しますか?

DB2は次のようなユーティリティを提供します。 バックアップデータベース   データベースの復元 データ損失を防ぐためにバックアップは 完全、増分または デルタリカバリでは、トランザクションログを使用してデータベースを整合性のある状態に復元します。例えば、ハードウェア障害が発生した場合、DBAは最新のバックアップを復元し、ログを適用してコミットされたすべてのトランザクションを復旧できます。リカバリモデルにはロールフォワードリカバリが含まれており、データ損失を最小限に抑えることができます。オンラインバックアップとオフラインバックアップのどちらを選択するかは、可用性の要件によって異なります。


39) DB2 でストアド プロシージャを使用する利点と制限は何ですか?

ストアド プロシージャは、SQL と手続き型ロジックをデータベース内にカプセル化します。

メリット:

  • パフォーマンスが向上しました (ロジックがデータに近いところで実行されます)。
  • コードの再利用とモジュール性。
  • アクセス制御によるセキュリティ強化。

制限事項:

  • デバッグが難しくなります。
  • プラットフォーム間の移植性の問題。

例: 給与計算用のストアドプロシージャは、複雑な結合をアプリケーション層ではなくDB2内で実行することで、ネットワークトラフィックを削減します。ただし、ビジネスロジックが頻繁に変更される場合、ストアドプロシージャの保守はアプリケーションコードに比べて困難になる可能性があります。


40) DB2 の高可用性災害復旧 (HADR) モードについて説明できますか?

DB2 HADR は複数の同期モードをサポートしています。

  • Synchronous (SYNC): データ損失はゼロ、レイテンシは高くなります。
  • 近く-Synchronous(ニアシンク): 損失は​​最小限、遅延は中程度。
  • 非同期 (ASYNC): パフォーマンスは向上しますが、データが失われるリスクがあります。
  • スーパー非同期(SUPERASYNC): パフォーマンスは最大、損失のリスクも最大。
モード パフォーマンス データロス Use Case
SYNC ロー なし バンキング
ニアシンク M 最小限の 保険
非同期 ハイ 可能 E-コマース
スーパーシンク すごく高い 可能性が高い アナリティクス

選択は、パフォーマンスと許容可能なリスク レベルとのバランスによって決まります。


41) DB2 LUW は z/OS 上の DB2 とどう違うのですか?

DB2には主に2つの種類があります: DB2 for Linux、UNIX、 Windows DB2 for z/OS(LUW)とDB2 for z/OS(メインフレーム)は、SQL標準とアーキテクチャを共有していますが、対応する環境は異なります。DB2 LUWは分散システム向けに設計されており、分析、AI統合、クラウド導入といった最新のワークロードをサポートします。一方、DB2 z/OSは、極めて大規模なOLTPトランザクションに最適化されており、数千人の同時ユーザーをほぼゼロのダウンタイムでサポートします。例えば、多国籍銀行は、コアとなるトランザクション処理にDB2 z/OSを使用し、レポート作成や分析のワークロードにはDB2 LUWを活用することができます。


42) DB2 クエリのパフォーマンスに最も影響を与える要因は何ですか?

DB2のクエリパフォーマンスは、データベース設計、インデックス戦略、クエリの記述、システムリソースの可用性など、複数の要因に依存します。不適切なインデックス設計、古いカタログ統計、過剰な結合は、パフォーマンスを著しく低下させる可能性があります。さらに、バッファープールの割り当て、ロックの競合、I/Oボトルネックもクエリ速度に影響を与えます。例えば、 IN 大規模なデータセットでは、 EXISTSDB2はEXISTSを異なる方法で最適化するため、 RUNSTATS、REORG、クエリの書き換えはパフォーマンスを維持するために重要です。


43) DB2 における表スペース パーティションと表パーティションの違いを説明してください。

混同されることがよくありますが、これらの概念は範囲が異なります。

  • 表領域のパーティション分割: ストレージ レベルでデータを分割し、表領域の一部を複数のパーティションに分散します。
  • テーブルのパーティション分割: 列の値 (範囲、ハッシュなど) に基づいて単一のテーブルをパーティションに分割します。
機能 表領域のパーティション分割 テーブルパーティション
対象領域 物理ストレージ 論理的なテーブル構成
目的 管理性、拡張性 クエリの最適化
例: 保存ファイルの分割 売上を年ごとに分割

どちらの方法もスケーラビリティを向上させますが、テーブル パーティション分割は並列クエリとパーティション プルーニングに特に強力です。


44) DB2 のさまざまなトリガーのタイプとその使用例は何ですか?

DB2 は、データの変更に応じてアクションを自動化するいくつかのタイプのトリガーをサポートしています。

  • トリガー前: ビジネス ルールを適用するために、INSERT、UPDATE、または DELETE の前に実行します。
  • トリガー後: 変更後に実行され、監査によく使用されます。
  • トリガーの代わりに: ビューに適用され、ビューを基本テーブルにリダイレクトすることでビューの変更を許可します。

例: BEFOREトリガーは、給与の値が挿入前に負でないことを検証し、AFTERトリガーはすべての削除を監査テーブルに記録します。これらのトリガーはデータの整合性を高め、アプリケーションコードへの依存を軽減します。


45) DB2 はセキュリティーと認証をどのように処理しますか?

DB2は、以下の方法でセキュリティを強化します。 認証、承認、権限認証は、多くの場合、オペレーティング・システム、Kerberos、またはLDAP統合を介してユーザーのIDを検証します。認可は、ロール、グループ、および権限によって定義される、ユーザーがアクセスできる範囲を決定します。権限は、オブジェクトレベル(表、ビュー)またはシステムレベル(データベースの作成)のいずれかです。例えば、開発者は表に対するSELECT権限は持っていても、INSERT権限を持っていない場合があります。DB2は、行レベルのセキュリティとデータ暗号化(保存時および転送時の両方)もサポートしています。この階層化されたアプローチにより、GDPRやHIPAAなどの企業のセキュリティポリシーや規制へのコンプライアンスを確保できます。


46) DB2 でマテリアライズド クエリー テーブル (MQT) を使用する利点は何ですか?

マテリアライズド クエリ テーブル (MQT) は、他の RDBMS のインデックス付きビューと同様に、クエリの結果を物理的に保存します。

メリット:

  • 結果を事前に計算することでクエリの応答時間を短縮します。
  • クエリーの書き換えをサポートします。これにより、DB2 はクエリーを同等の MQT 結果に自動的に置き換えます。
  • 事前に集計されたデータを使用して OLAP ワークロードを最適化します。

例: 売上レポートアプリケーションは、地域別および月別に売上を集計したMQTを作成できます。クエリは毎回合計を再計算する代わりに、事前に構築されたMQTから結果を取得するため、実行時間が大幅に短縮されます。MQTは、データウェアハウス環境で特に効果的です。


47) 行レベルのセキュリティーと、それを DB2 に実装する方法について説明します。

行レベルセキュリティは、ユーザーの役割や条件に基づいて、表内の個々の行へのアクセスを制限します。DB2では、これを次のように実装しています。 行権限管理者は、ユーザーごとに表示行をフィルタリングする述語を定義します。例:

CREATE PERMISSION emp_perm ON EMPLOYEE
FOR ROWS WHERE DEPT_ID = (SELECT DEPT_ID FROM USER_DEPARTMENTS WHERE USER_ID = SESSION_USER)
ENFORCED FOR ALL ACCESS ENABLE;

ここでは、従業員は自分の部署に属する行のみを閲覧できます。このアプローチにより、人事記録や財務記録などの機密データが承認された担当者のみに閲覧可能となり、コンプライアンスが強化されます。


48) DB2 の RUNSTATS とは何ですか? また、なぜ重要ですか?

RUNSTATS は、表と索引に関するカタログ統計を更新するユーティリティです。オプティマイザーはこれらの統計を使用して、効率的なアクセスパスを決定します。正確な統計情報がないと、DB2 は索引を使用せずに表スキャンを実行するなど、最適ではないプランを選択する可能性があります。例えば、売上表に数百万行のバルクロードを実行した後、RUNSTATS を実行することで、オプティマイザーが新しいデータ分布を認識できるようになります。特に大規模なデータ変更を行った後は、RUNSTATS を定期的に実行することが、一貫したクエリパフォーマンスとオプティマイザーの正確な判断にとって不可欠です。


49) OLAP ワークロードと OLTP ワークロードに対して DB2 をどのように最適化しますか?

OLAP (分析) ワークロードと OLTP (トランザクション) ワークロードには異なる要件があります。

  • OLTP最適化: 同時実行性、クイック検索のためのインデックス作成、行レベルのロック、および正規化されたスキーマに重点を置きます。
  • OLAP最適化: 大規模スキャン、集計、パーティション分割、マテリアライズド クエリ テーブル、および非正規化を重視します。

例:

  • 銀行の OLTP システムでは、迅速な更新のためにアカウント ID のインデックスを使用します。
  • 売上分析用の OLAP システムでは、年ごとにパーティション化されたテーブルと、事前集計レポート用の MQT を使用します。

これらのワークロードのバランスをとるには、多くの場合、別個のシステムまたは DB2 内のワークロード管理機能が必要になります。


50) DB2 ネイティブ XML ストレージの利点と欠点は何ですか?

DB2はネイティブXMLストレージをサポートし、 XMLデータ型XML ドキュメントの構造化された保存とクエリが可能になります。

Advantages:

  • リレーショナル テーブルに細分化せずに XML を保存およびクエリします。
  • XQuery および SQL/XML のサポートにより、柔軟なデータ取得が可能になります。
  • XML でデータを交換するアプリケーション (SOA ベースのシステムなど) に最適です。

短所:

  • リレーショナル構造に比べてストレージのオーバーヘッドが高くなります。
  • 深くネストされた XML のクエリは遅くなる可能性があります。

例: 医療システムでは、複雑な階層構造を捉えるために患者記録を XML ドキュメントとして保存できますが、DBA はパフォーマンスを監視し、インデックスを慎重に設計する必要があります。


🔍 DB2 面接でよく聞かれる質問と実際のシナリオ、そして戦略的な回答

厳選されたDB2面接形式の質問10選と、効果的な回答例をご紹介します。知識ベース、行動、状況に関する要素を組み合わせ、採用担当者がプロフェッショナル面接で期待する点を反映しています。


1) DB2と他のリレーショナルデータベースシステムとの主な違いは何ですか? Oracle または SQL Server ですか?

応募者に期待すること: 面接官は、DB2 の独自の機能に関する知識と、候補者が競合他社と差別化できるかどうかを評価したいと考えています。

回答例:
「DB2は、メインフレームと分散システムを強力にサポートし、トランザクションと分析の両方のワークロードで高いパフォーマンスを提供します。SQL Serverとは異なり、DB2はz/OS環境との統合がより緊密です。 OracleDB2はライセンス費用対効果が高く、XMLデータをネイティブに処理できるpureXMLなどの機能も備えています。これらの強みにより、DB2は、重要なシステムにおいて拡張性と信頼性が求められる企業にとって特に価値のある製品となっています。


2) DB2 が並行性とロック メカニズムをどのように処理するかを説明していただけますか?

応募者に期待すること: DB2 におけるトランザクション分離とデータ整合性の理解。

回答例:
DB2は同時実行性を管理するためにマルチ粒度ロックを採用しています。つまり、行、ページ、テーブルなど、異なるレベルでロックを適用できます。パフォーマンスとデータの一貫性のバランスをとるために、Repeatable Read、Read Stability、Cursor Stabilityといった分離レベルをサポートしています。また、データベースエンジンは、細粒度レベルで過剰なロック要求があった場合、ロックエスカレーションを採用し、システムリソースを節約するために、それらをより高レベルのロックに変換します。


3) DB2の重大なパフォーマンス問題をトラブルシューティングしなければならなかった時のことについて教えてください。どのようなアプローチをとりましたか?

応募者に期待すること: 問題解決能力と体系的なトラブルシューティング能力。

回答例:
前職では、バッチジョブの深刻な速度低下を経験しました。まず、システムカタログとパフォーマンスモニターのスナップショットをチェックし、コストの高いクエリを特定しました。次に、EXPLAINを使用してアクセスパスを見直し、不足しているインデックスがフルテーブルスキャンを引き起こしていることを発見しました。ターゲットを絞ったインデックスを作成し、統計情報を更新することで、実行時間を70%削減できました。この経験から、DB2環境におけるプロアクティブな監視とチューニングの重要性を改めて認識しました。


4) OLTP と分析ワークロードの両方をサポートする DB2 データベースをどのように設計しますか?

応募者に期待すること: ハイブリッド ワークロードの最適化に関する理解。

回答例:
「OLTPには正規化されたスキーマを実装し、データの整合性を維持し、高速なトランザクション処理を実現します。分析ワークロードについては、マテリアライズド・クエリー・テーブルを設計し、パーティション戦略を用いてクエリーのパフォーマンスを向上させます。DB2のBLU Accelerationカラム型ストレージも活用することで、分析クエリーの高速化を図ることができます。このアプローチにより、システムの安定性を損なうことなく、各ワークロードタイプを最適化できます。」


5) データベースを DB2 に移行する必要があった困難なプロジェクトについて説明していただけますか?

応募者に期待すること: 複雑な移行と適応性に関する経験。

回答例:
「以前の職場では、 Oracle z/OS上のDB2への移行。課題は、PL/SQLプロシージャをDB2互換のSQL PLに変換することでした。また、データ型や索引付け戦略の違いにも対応する必要がありました。スムーズな移行を実現するために、機能を検証するためのテスト環境を構築し、DB2向けにクエリを最適化し、ダウンタイムを最小限に抑えるための詳細な移行計画を作成しました。プロジェクトは成功し、ライセンスコストを大幅に削減できました。


6) 複数の DB2 関連プロジェクトが競合している場合、厳しい期限にどのように対処しますか?

応募者に期待すること: 時間管理と優先順位付けのスキル。

回答例:
まず、各プロジェクトがビジネスに与える影響を評価します。例えば、本番環境の停止は開発依頼よりも常に優先されます。次に、関係者と現実的なタイムラインを明確に話し合い、スケジュールツールを使って効率的に時間を割り当てます。前職では、この方法によって、重要なデータベースチューニングタスクと長期的なアップグレードプロジェクトの両方を、品質を損なうことなく管理することができました。


7) DB2 データベースのセキュリティーと規制遵守を確保するためにどのような戦略を採用していますか?

応募者に期待すること: セキュリティのベストプラクティスとコンプライアンス フレームワークに関する認識。

回答例:
「私は最小権限の原則に従い、ユーザーには役割に必要なアクセス権限のみを付与しています。DB2の監査機能を有効にしてユーザーアクティビティを追跡し、保存時と転送時の両方で暗号化を設定しています。コンプライアンス要件が厳しい業界では、ポリシーがHIPAAやPCI DSSなどの標準に準拠していることも確認しています。定期的なパッチ適用と脆弱性スキャンは、私のセキュリティ対策の一環です。」


8) DB2クエリの実行時間が予想よりもはるかに長くなっているシナリオを想像してみてください。これを最適化するためにどのような手順を踏みますか?

応募者に期待すること: クエリ チューニングに対する構造化されたアプローチ。

回答例:
「まず最初に、DB2 EXPLAINツールを使用してアクセスパスを把握します。オプティマイザーが非効率的なパスを選択している場合は、表統計の更新を検討します。次に、インデックス、パーティション、結合方法を確認します。必要に応じて、ロジックを簡素化するためにクエリの書き換えを検討します。あるケースでは、複合インデックスを追加するだけで、クエリ実行時間が12分から30秒未満に短縮されました。」


9) DB2 テクノロジーと業界のトレンドの最新情報をどのように把握していますか?

応募者に期待すること: 継続的な学習への取り組みを示します。

回答例:
「私はフォローして最新情報を入手しています IBMの公式DB2ブログを読んだり、IDUGのようなフォーラムに参加したり、業界のカンファレンスに出席したりしています。また、 IBM Redbooksは、深い技術的洞察を提供します。以前の職務では、チームの知識共有セッションを奨励し、DB2の新機能やベストプラクティスについて議論しました。これらの活動は、パフォーマンスとセキュリティの課題に先手を打つ上で役立ちました。


10) DB2 の設計上の決定についてチーム メンバーとの意見の相違をどのように処理したか説明できますか?

応募者に期待すること: 専門的に紛争を解決する能力。

回答例:
以前、大規模なDB2テーブルにテーブルパーティショニングを使用するかインデックスを使用するかについて意見が分かれていたチームに所属していました。そこで私は、現実的なワークロードで両方のオプションを測定するための、管理されたパフォーマンステストを実施することを提案しました。その結果、私たちのユースケースではパーティショニングの方がスケーラビリティに優れていることが明確に示されました。意見ではなくデータに基づいて決定を下すことで、合意に達し、良好な業務関係を維持することができました。