CodeZine(コードジン)

特集ページ一覧

64bitに対応した「ODP.NET」を使ってみよう!

64bit環境のメリットを生かしたOracle データベース対応アプリケーション開発

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/06/15 14:00

目次

64bitアプリケーションで大量データにアクセス

 続いて、64bitアプリケーションのメリットを最大限に生かしたメモリをフルに活用した大量データアクセスを試してみましょう。

 Oracle Databaseのサンプルスキーマである「sh」スキーマには、元々サンプルデータとして「sales」テーブルに約90万レコード以上のデータが格納されています。このデータを[Dataset]に10回格納し、合計約900万レコードのデータにアクセスするサンプルアプリケーションを実行します。サンプルアプリケーションのコードは以下のようになっています。既存のフォームに新規に「Button」コントロールを追加して、クリックイベントに以下のコードを追記してみてください。アプリケーションの実行プロセスのみでメモリを約4Gバイト消費するので、8Gバイト以上のメモリを搭載した環境での実行を推奨します。

Oracle Databaseから大量データを取得するサンプルコード(C#)
private void button2_Click(object sender, EventArgs e)
{
  // Oracle Databaseへの接続設定とデータ取得SQLの設定
  OracleConnection conn = new OracleConnection("user id=sh;password=oracle;data source=orcl11gr2");
  OracleCommand cmd = new OracleCommand("select * from sales", conn);
  OracleDataAdapter da = new OracleDataAdapter(cmd);
  DataSet dt = new DataSet();

  
  // ストップウォッチ・スタート
  System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
  sw.Start();

  // 約100万行データの取得を10回繰り返す
  for (int iCnt = 0; iCnt < 10; iCnt++)
  {
    da.Fill(dt);
  }

  // ストップウォッチ・ストップと経過時間をメッセージで表示
  sw.Stop();
  MessageBox.Show(sw.Elapsed.ToString());

  // 終了処理
  conn.Close();

  da.Dispose();
  cmd.Dispose();
  conn.Dispose();
}
Oracle Databaseから大量データを取得するサンプルコード(VB)
Private Sub button2_Click(sender As System.Object, e As System.EventArgs) Handles button2.Click
  '// Oracle Databaseへの接続設定とデータ取得SQLの設定
  Dim conn As OracleConnection = _
    New OracleConnection("user id=sh;password=oracle;data source=orcl11gr2")
  Dim cmd As OracleCommand = New OracleCommand("select * from sales", conn)
  Dim da As OracleDataAdapter = New OracleDataAdapter(cmd)
  Dim dt As DataSet = New DataSet()


  '// ストップウォッチ・スタート
  Dim sw As System.Diagnostics.Stopwatch = New System.Diagnostics.Stopwatch()
  sw.Start()


  '// 約100万行データの取得を10回繰り返す
  For iCnt As Integer = 1 To 10
    da.Fill(dt)
  Next

  '// ストップウォッチ・ストップと経過時間をメッセージで表示
  sw.Stop()
  MessageBox.Show(sw.Elapsed.ToString())

  '// 終了処理
  conn.Close()

  da.Dispose()
  cmd.Dispose()
  conn.Dispose()

End Sub

 アプリケーションを実行し[Windows タスク マネージャー]の[パフォーマンス]タブから メモリの使用量を確認すると、徐々に使用量が増加しているのが確認できます。

[Windows タスク マネージャー]の[パフォーマンス]タブからの確認(64bit)
[Windows タスク マネージャー]の[パフォーマンス]タブからの確認(64bit)

 [プロセス]一覧からは、実行中のアプリケーションが最終的に約4GByte近くメモリを使用していることが確認できます。

プロセス一覧からのメモリ使用量確認
プロセス一覧からのメモリ使用量確認

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Oracle Tips

もっと読む

著者プロフィール

  • 日本オラクル 大田(オオタ ヒロシ)

    日本オラクル株式会社 Oracle Directテクニカルサービス部所属。開発者の視点から、Oracle Databaseの機能を最大限に活かすための手法を日々研究しながら、プリセールス活動やオンラインセミナー等による情報発信を行う。現在はWindows Server上でのOracle製品活用を推進...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5