Java 如何使用数据库批量、高效和持久地存储数据?

Java 如何使用数据库批量、高效和持久地存储数据?,java,queue,Java,Queue,我想存储数据,实际上是一个1000个字符的文本数据,快速进入数据库。多快?假设每秒有1000个数据 为了提高效率,我使用了名为“批量插入”的数据库功能。这是实现它的代码片段 private Queue q; public void store(MyData data) { q.add(data); } public void onStarted() { new Thread() { public void run() { while(t

我想存储数据,实际上是一个1000个字符的文本数据,快速进入数据库。多快?假设每秒有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();
}

但这是一个糟糕的代码,因为未保存的数据只存在于内存中。当断电时,数据将丢失。我一直在考虑将JMS队列与persistent=true一起使用。但是我真的不知道推荐的方法。

如果断电是真正的威胁,你最好投资一些UPS设备。这不是一种可以或不应该通过不使用批插入来修复的情况。