Isl*_*ind 6 database sqlite performance serialization
我正在进行一些性能比较,无论是序列化数据还是将它们存储在数据库中.该应用程序收到大量数据(x GB)的地狱,需要以最低18mb/s的速度持续存在(现在)
在DB中存储可以在以后搜索和访问数据,数据快照,数据迁移等方面提供更简单的功能,但到目前为止我的测试显示了性能时间的巨大差异.
该测试可以节省1000个物体(每个物体大约7个数百kb).通过将它们保存为通用列表,将它们分别放到表中的各个列或磁盘上.(SQLite最后会有更多数据)
我没有对SQLite进行任何性能调整,只需使用Fluent nHibernate和SQLite.Data适配器(没有事务)开箱即用,但起初认为这是一个巨大的差异.
显然我知道,与序列化相比,通过ORM映射器和DB写入磁盘会产生开销,但这很多.
另外考虑的是在收到数据时立即保留数据.如果出现电源故障,我需要收到最后的数据.
有什么想法吗?
-----更新(我继续研究解决方案)------
我有一个类似的问题,我建议你去SQLite路线.
至于你的性能问题,我很确定你会得到一个非常显着的提升,如果你:
CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');
INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty');
... 995 lines omitted
INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine');
INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two');
INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two');
Run Code Online (Sandbox Code Playgroud)
BEGIN;
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t2 VALUES(1,59672,'fifty nine thousand six hundred seventy two');
... 24997 lines omitted
INSERT INTO t2 VALUES(24999,89569,'eighty nine thousand five hundred sixty nine');
INSERT INTO t2 VALUES(25000,94666,'ninety four thousand six hundred sixty six');
COMMIT;
Run Code Online (Sandbox Code Playgroud)
***这些基准测试适用于SQLite 2,SQLite 3应该更快.
| 归档时间: |
|
| 查看次数: |
3641 次 |
| 最近记录: |