2010-12-02 9 views
0

データベースに対していくつかの挿入を実行するJavaアプリケーションがある場合、コミットされたバイト数を取得する簡単な方法すべてのフィールドのデータ)を手動で計算する必要はなく/結果セットのサイズを取得してチェックする必要はありませんか?JDBC:コミットされたデータのサイズをバイト単位で取得することはできません

-

luchoは、PreparedStatementのの上に統計を意識した文のクラスが移動するための方法であるかもしれない実装、指摘しているように。それに固執し、これがどれほどうまくいくかを見てみましょう。

+3

私には分かりません。聞いたことがない;どうして重要なのかわからない。それが起こる前にディスクをいっぱいにすることを予期しようとしていますか? – duffymo

+0

私は、データベースに1秒間にコミットするデータの量をユーザーに近似させようとしています。 – Nikita

+0

今日の2TBのコストを考えると、より多くのディスクを購入する方が簡単かもしれません。 –

答えて

0

私が知る限り、

あなたはデータベースにその質問をする必要があります。おそらく、あなたが挿入したのと同じものを照会することなく(それは少し無意味なので)それを行うことは可能です。

+0

ええ、それは私には無意味です;)データベースは私に答えを与えますが、リアルタイムではありません(例えば、私は統計コマンドを実行して結果を確認できますが、 – Nikita

+1

次に、独自のJDBC文を実装し、統計機能を追加し、残りをドライバの実装に委譲することができます。このアプローチをパフォーマンス監視に使用しました。 –

+0

これは面白いアイデアのように聞こえる、ありがとう:) – Nikita

0

興味深い問題です。私はluchoのソリューションを好むが、私は2より速く(hackier)のオプションがあります。

  1. あなたはInnoDBののテーブルの表示STATUSを使用して、データサイズの走行ログを維持しようとすることができます。それはあなたに知ってもらえますが、私の開発マシンでは1つのデータベースでそれを呼び出すには5.3秒(56テーブル)かかるので、1つまたは2つのテーブルのデータだけを必要としない限り、おそらく遅すぎます。

  2. DBプロセスを監視し、OSを使用して書き込み量を伝えることができます。私はWindowsがあなたにこれを伝えることができることを知っています、そして、私はLinuxが同様にできると確信しています。しかし、3つのデータベースをホストする場合、合計を取得するだけで、トランザクションなどの理由で一部は無効になります。

ランダムなアイデア。

関連する問題