SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

Security Online Day 2024 春の陣

2024年3月13日(水)10:00~17:10

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

マイクロソフト古賀啓一郎の「今月のケースファイル」

新米SQL Serverエンジニアを襲った「メモリが足りない」現象とは?!

001


こんにちは。日本マイクロソフト Premier Field Engineeringの古賀です。今回から新しく始まる連載「今月のケースファイル」は、私がこれまでに扱った印象に残っている案件を紹介していきます。基本的に紹介する内容は事実に基づいていますが、脚色をしていますし、場合によっては一部実際に起きた内容と異なる部分があるかもしれません。あまり硬い内容にするつもりはないので、気楽に読んでもらえたら幸いです。これといって何か勉強できることがあるかはわかりませんが、ひょっとしたら、少しは教訓みたいなものがあるかもしれません。

案件の概要

  今回取り上げる話は、私が日本マイクロソフトに入社したばかりのころに担当した案件です。

 内容は、SSISパッケージのパフォーマンスが急激に低下するというもの。入力データが400万件の時は数分で終わるのに、460万件になると急激におそくなり2.3時間もかかるというのです。遅延の原因究明と回避策を提示する必要がありました。

仮説と再現

 この話を最初に聞いたとき、「ああ、460万件になってデータがメモリに乗り切らなくなったんだなぁ」と思いました。つまり、400万件の処理では、メモリが足りていたけれど、徐々に件数が増えてきて460万件となった時にデータが全部メモリに乗り切らなくなったのだと思いました。

 私はこの仮説を証明するために、まずは再現環境を構築することから始めようと思いました。同じような現象が再現できれば、自分の手元で詳細な調査ができるし回避策の有効性も検証できると思ったからです。

 再現環境を構築するためにいろいろとヒアリングしてみると、どうやらお客様は64ビットのマシンでSSISパッケージを32ビットモードで実行しているらしいことがわかりました。詳しい理由は覚えていませんが、確か64ビットモードで実行すると何か問題があって、32ビットモードだとその問題が発生しないとか、そんなことが理由だったと思います。問題のSSISパッケージはというと、複数のテキストファイルを読み込んでいろいろな加工をした後、マージ結合変換タスクを使用してデータを抽出し、最終的にSQL Serverへ一括登録するという内容でした。

図1: パッケージのイメージ図。実際はSQL Server 2005のSSISで作られており、もっと複雑なパッケージでした。
▲図1: パッケージのイメージ図。実際はSQL Server 2005のSSISで作られており、もっと複雑なパッケージでした

 一通りヒアリングを終えると、早速、再現環境の構築を行いました。お客様から入手したSSISパッケージを自分の環境でも動作するように変更します。2,3件のデータ入力で正しく動作することを確認し、続いてダミーの入力ファイルを生成するプログラムを書きました。460万件のデータを手作業で生成するのは大変だからです。プログラムを書き終えた後、まずは遅延が発生しないという400万件のデータで実行してみました。お客様の環境とは違って数分ではありませんでしたが、私の環境では十数分で終了します。

 続いて460万件のデータで実行してみます。やはり、処理はなかなか終了しません。なかなか終了しないどころか、結局その日のうちに処理は終了しませんでした。あまりに遅いのでちょっと困ったなと思いましたが、ひとまずこれで「急激に遅くなる」という現象は再現できたようでした。

  あとは、「460万件になってメモリに乗り切らなくなった」という仮説を証明するだけです。まず、遅延している箇所がSSISパッケージの処理なのか、それ以外の処理なのかを切り分けることにしました。パッケージの処理には、SQL Serverへ一括登録する処理もあるので、ひょっとしたらSSISパッケージの処理ではなく、SQL Server側の処理が遅延しているのかもしれません。

 こうしたことを確認するため、現象が再現しているときのSSISパッケージの実行ログを確認することにしました。現象が再現しているときに実行ログの出力状況を確認すると、入力ファイルをいろいろと加工しているところまではスムーズにログが出力されるのですが、それらの処理がすべて終了してマージ結合変換タスクの処理に入るところから一向にログが出力されなくなります。どうやらマージ結合変換タスクの処理が遅延しているようだということがわかりました。マージ変換タスクはSQL Serverを使用していないので、SQL Server側の問題でないことがわかります。これで調査対象をSSISに絞ることができます。

次のページ
詳細調査の開始

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
マイクロソフト古賀啓一郎の「今月のケースファイル」連載記事一覧

もっと読む

この記事の著者

古賀 啓一郎(コガ ケイイチロウ)

日本マイクロソフト株式会社勤務。きままなエンジニア。
謎があると解決せずにはいられない性格。
週末は家事に従事。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/5238 2013/10/18 14:16

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2024年3月13日(水)10:00~17:10

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング