SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Oracle Tips

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

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


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近くメモリを使用していることが確認できます。

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

次のページ
おわりに

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

Oracle Tips連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5914 2011/08/25 16:01

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー