64bitアプリケーションで大量データにアクセス
続いて、64bitアプリケーションのメリットを最大限に生かしたメモリをフルに活用した大量データアクセスを試してみましょう。
Oracle Databaseのサンプルスキーマである「sh」スキーマには、元々サンプルデータとして「sales」テーブルに約90万レコード以上のデータが格納されています。このデータを[Dataset]に10回格納し、合計約900万レコードのデータにアクセスするサンプルアプリケーションを実行します。サンプルアプリケーションのコードは以下のようになっています。既存のフォームに新規に「Button」コントロールを追加して、クリックイベントに以下のコードを追記してみてください。アプリケーションの実行プロセスのみでメモリを約4Gバイト消費するので、8Gバイト以上のメモリを搭載した環境での実行を推奨します。
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();
}
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 タスク マネージャー]の[パフォーマンス]タブから メモリの使用量を確認すると、徐々に使用量が増加しているのが確認できます。
[プロセス]一覧からは、実行中のアプリケーションが最終的に約4GByte近くメモリを使用していることが確認できます。

![[Windows タスク マネージャー]の[パフォーマンス]タブからの確認(64bit)](http://cz-cdn.shoeisha.jp/static/images/article/5914/5914_fig13.gif)
