3

TPC-H関連のことをやっています。

いくつかのファイルに sql ステートメントがあります。それらを実行し、実行時間を次のように記録する必要があります。

13 rows in set (0.00 sec)

正しい結果が得られたかどうかを確認するために、結果セットも必要です。
私のプラットフォームはlinux(centOS)です。

これを手動で行う場合、mysql で次のようなステートメントを入力します。

  shell> mysql -u tpch -p
  mysql> use tpch;
  mysql> source /home/liova/download/tpch/queries/Q1.sql;
  mysql> source /home/liova/download/tpch/queries/Q2.sql;
4

2 に答える 2

5

実行時間を見つけるには、プログラムの開始時に日付オブジェクトを初期化し、プログラムの終了時にそれを別の日付オブジェクトと比較する必要があります。これにより、実行にかかった時間の整数値が得られます。次に、必要な場所でこの int を使用します (たとえば、コンソールやファイルに出力するなど)。

Date startDate = new Date();
//Run the rest of the program
Date endDate = new Date();
int msElapsedTime = startDate.getTime() - endDate.getTime();

クエリの結果に関連して Java プログラムで何もする必要がない場合は、runtime.exec()mysql にクエリを実行させることを使用して、これを非常にシンプルに保つことができます。ここでの唯一の大きな欠点は、結果として影響を受ける行数を出力できないことです。

Date startDate = new Date();
runtime.exec("mysql db_name < /home/liova/download/tpch/queries/Q1.sql");
Date endDate = new Date();
int msElapsedTime = startDate.getTime() - endDate.getTime();

実際に結果に対して何かをする必要がある場合は、runtime.exec()十分ではありません。読む...

SQL ソースを読み取るには、テキスト ファイルとして読み取るだけです。SQL の各行を個別の SQL クエリとして持つと最も簡単です。そうしないと、解析と調整を行う必要があります。以下は、一度に 1 行ずつファイルを読み取る例です。

SQL を実行するには、JDBC を使用します。ここにそれに関するチュートリアルがあります。項目 1 から 5 では、SQL を実行して結果を使用するために必要なすべての詳細を説明します (SQL 接続の確立からクエリの実行、返される resultSet オブジェクトの処理まで)。これらの手順のいずれかで問題が発生した場合は、プロセスで発生している特定の問題に合わせて別の質問をすることをお勧めします。

于 2012-05-10T14:31:20.030 に答える
0

正しい結果が得られていることを確認してください。

オプション 1 スポット テスト。レコード数のように単純なものにすることも、Fred の名前を Bloggs にすることもできます。

オプション 2 上記を微妙に拡張すると、同じ結果が得られる別のクエリになります。私が異なると言うとき、列を並べ替えるのではなく、異なるという意味です。

オプション 3、私の個人的なお気に入り。期待する結果 (csv、xml?) を含むファイルがあり、得られた結果をそれと比較します。

したがって、Test1 は SQLTest1.sql を実行して、それを便利な形式で SQLTest1.Actual に出力し、それを SQLTest1.Expected と比較します。

結果ファイルの受け入れ可能な形式を取得したら、ジョブはほぼ完了し、より多くのテストを簡単に追加できます。

于 2012-05-10T14:17:24.007 に答える