我正在编写一个对Postgres数据库进行大量写操作的程序.在一个典型的场景中,我会写出100,000行表示规范化(三个外部整数键,其组合是主键和表的索引).我正在使用PreparedStatements和executeBatch(),但我只能设法在我的笔记本电脑上大约70秒内推出100k行,当我们要替换的嵌入式数据库(具有相同的外键约束和索引)时10.
我是JDBC的新手,我不希望它超过自定义嵌入式数据库,但我希望它只慢2-3倍,而不是7倍.有什么明显的我可能会错过吗?写作的顺序是否重要?(即如果它不是索引的顺序?).需要注意的是要挤出更快的速度?
有没有人对流行的开源嵌入式SQL数据库进行任何基准测试/评估以获得性能,特别是写性能?我对sqlite,Firebird Embedded,Derby和HSQLDB(其他我缺少的?)进行了1:1的比较,但没有全面的比较......另外,我对这些中的任何一个开发人员的整体体验感兴趣(对于Java应用程序).
我不太清楚auto_ptr在这种情况下是否会帮助我:
class A
{
A(const B& member)
: _member(B)
{};
...
const B& _member;
};
A generateA() {
auto_ptr<B> smart(new B());
A myA(*smart);
return myA;
}
Run Code Online (Sandbox Code Playgroud)
离开其封闭范围myA._member时,引用是否有效smart?如果auto_ptr不是这里的答案,那是什么?
编辑:我看到我困惑每个人的地方; 我必须将myA返回到范围之外,这就是为什么我关心_member在智能退出范围后有效.
java ×2
auto-ptr ×1
c++ ×1
database ×1
firebird ×1
jdbc ×1
performance ×1
postgresql ×1
sqlite ×1