我从AUTO_SERVER=TRUE开始使用H2作为嵌入式数据库。
刚开始的时候,我只有几条记录,即使没有定义索引,性能也不是问题。
当表中有更多的记录时,性能会严重下降,这可以通过添加索引来解决。
然后,db表现得非常好,直到最近当no。的记录达到了800多万,现在我已经无法从数据库中获得任何正常的性能,并尝试更改cache_size等。但没有任何改进。我看到一些帖子说人们正在使用H2,有数百万甚至数十亿条记录,那么我是不是遗漏了什么基本的东西呢?即使是像select count(*) from HISTORICALDATA2这样的基本查询也需要很长时间,所以我最终取消了查询。
下面是表的定义:
CREATE TABLE "PUBLIC"."HISTORICALDATA2"
(
REQUESTID integer,
SYMBOL varchar(50) NOT NULL,
EXCHANGE varchar(20),
SECTYPE varchar(10),
CURRENCYNAME varchar(5),
ENDDATETIME varchar(20),
DURATION varchar(20),
BARSIZE varchar(20),
WHATTOSHOW varchar(20),
USERTH integer,
FORMATDATE integer,
CHARTOPTIONS varchar(50),
DATETIMEDATA timestamp,
OPEN_PRICE decimal(20,2),
HIGH_PRICE decimal(20,2),
LOW_PRICE decimal(20,2),
CLOSE_PRICE decimal(20,2),
VOLUME integer,
COUNT_FIELD integer,
WAP integer,
HASGAPS boolean,
TSTAMP timestamp DEFAULT CURRENT_TIMESTAMP()
);和索引:
CREATE INDEX HD_MAIN ON "PUBLIC"."HISTORICALDATA2"
(
SYMBOL,
EXCHANGE,
ENDDATETIME,
WHATTOSHOW,
DURATION,
BARSIZE
);发布于 2020-02-05 18:44:16
H2与生产
H2通常不用作生产数据库。有关更多详细信息,请参阅Are there any reasons why h2 database shouldn't be used in production?。许多答案给出了不这样做的合理理由。
迁移到另一个数据库
您可以将记录从h2迁移到Postgres、MySQL或Oracle。
请参阅:How to convert H2Database database file to MySQL database .sql file?
https://stackoverflow.com/questions/60073926
复制相似问题