首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当表包含900万条记录时,H2数据库不可用

当表包含900万条记录时,H2数据库不可用
EN

Stack Overflow用户
提问于 2020-02-05 18:38:38
回答 1查看 618关注 0票数 0

我从AUTO_SERVER=TRUE开始使用H2作为嵌入式数据库。

刚开始的时候,我只有几条记录,即使没有定义索引,性能也不是问题。

当表中有更多的记录时,性能会严重下降,这可以通过添加索引来解决。

然后,db表现得非常好,直到最近当no。的记录达到了800多万,现在我已经无法从数据库中获得任何正常的性能,并尝试更改cache_size等。但没有任何改进。我看到一些帖子说人们正在使用H2,有数百万甚至数十亿条记录,那么我是不是遗漏了什么基本的东西呢?即使是像select count(*) from HISTORICALDATA2这样的基本查询也需要很长时间,所以我最终取消了查询。

下面是表的定义:

代码语言:javascript
复制
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()
);

和索引:

代码语言:javascript
复制
CREATE INDEX HD_MAIN ON "PUBLIC"."HISTORICALDATA2"
(
  SYMBOL,
  EXCHANGE,
  ENDDATETIME,
  WHATTOSHOW,
  DURATION,
  BARSIZE
);
EN

回答 1

Stack Overflow用户

发布于 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?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60073926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档