Bing_sama 2022-12-16 10:27 采纳率: 50%
浏览 82
已结题

H2数据库用持久为mv.db文件数据量很大时效率非常慢

问题描述
使用jdbc:h2:file:path
大概连续插入2万+条数据,可能更多
前面插入速度还正常,大概一万条以上mv.db文件应该接近100mb,突然插入效率变得非常慢,db文件出现压缩的样子变成几MB的
全部插入完以后只有17MB
通过日志查看每条插入用时接近1秒,不知道描述的清楚吗,总的问题就是,插入2w以上条数据进db文件,插入到一定量后就会变得非常慢。

我不了解h2关于文件储存这种模式,是因为什么配置问题吗,不知道是不是因为自动压缩了db文件大小导致插入效率变低了。
我现在只需要文件正常插入数据的速度,不用压缩文件

  • 写回答

1条回答 默认 最新

  • bin9wei 2022-12-17 18:37
    关注

    我写了一个demo程序测试你描述的场景。

    按照这个表结构,每行记录是10000字节,插入3000行记录,文件大小约300M。

    CREATE TABLE student (
    id INT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    body CHAR(10000) NOT NULL -- fixed size of 10000 bytes
    );
    

    插入速度没有明显变慢。

    inserted 29992 record, used: 0 ms
    inserted 29993 record, used: 0 ms
    inserted 29994 record, used: 0 ms
    inserted 29995 record, used: 0 ms
    inserted 29996 record, used: 0 ms
    inserted 29997 record, used: 0 ms
    inserted 29998 record, used: 0 ms
    inserted 29999 record, used: 84 ms
    Total used: 6411 ms
    

    数据库文件大小288M

    img

    代码上传到git code https://gitcode.net/bin9wei/play-h2/,你看看?

    你的问题可能还跟表结构和代码也有关,你可以分享下你的表结构和代码。

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 专家已采纳回答 12月22日
  • 创建了问题 12月16日