実際には1000文字のテキストデータであるデータをデータベースにすばやく保存したいと考えています。どのくらい速いのか?1 秒あたり 1000 データとしましょう。
効率的にするために、「バッチ挿入」と呼ばれるデータベース機能を使用します。これは、それを実現するためのスニペット コードです。
private Queue q;
public void store(MyData data) {
q.add(data);
}
public void onStarted() {
new Thread() {
public void run() {
while(true) {
if (q.notEmpty()) {
List someData = new ArrayList();
q.drainTo(someData, BATCH_SIZE);
storeWithSqlBatch(someData);
}
sleep(100);
}
}
}.start();
}
しかし、保存されていないデータはメモリ内にしか存在しないため、これは悪いコードです。停電すると、データが失われます。私は、persistent=true で JMS Queue を使用することを考えていました。しかし、私は推奨される方法を本当に知りません。