簡體   English   中英

當表包含 900 萬條記錄時,H2 數據庫無法使用

[英]H2 database unuseable when table contains 9 million records

我使用 H2 作為以AUTO_SERVER=TRUE的嵌入式數據庫。

一開始我只有幾條記錄,即使沒有定義索引,性能也不是問題。

當表有更多記錄時,性能嚴重下降,通過添加索引解決了這個問題。

然后數據庫表現得非常好,直到最近沒有。 記錄達到超過 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
);

H2 和生產

H2 通常不用作生產數據庫。 請參閱是否有任何原因不應該在生產中使用 h2 數據庫? 更多細節。 許多答案給出了不這樣做的正當理由。


遷移到另一個數據庫

您可以將記錄從 h2 遷移到 Postgres、MySQL 或 Oracle。

請參閱: 如何將 H2Database 數據庫文件轉換為 MySQL 數據庫 .sql 文件?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM