当前位置: 首页 > news >正文

H2数据库(tcp 服务器模式)调优

启用mvcc

MVCC优势‌:

通过维护数据行的多个版本实现读写并发,减少锁竞争,适合高并发场景412。

内存影响‌:
MVCC会占用更多内存存储版本数据,但显著提升并发性能

jdbc:h2:tcp://localhost/~/mydatabase;MVCC=TRUE
如果是1.4.x版本或者以上可以不用配置默认启用MVCC

调优h2数据库(tcp服务器模式)启动命令参数

配置内存堆大小

访问ip:8082 输入@memory; 可以查询数据库内存使用情况和大小

这就是总空间4g

1. JVM默认堆内存规则‌
‌初始堆大小(-Xms)‌:默认为物理内存的1/64,但不超过1GB

‌最大堆大小(-Xmx)‌:默认为物理内存的1/4,在物理内存小于192MB时为1/2

‌典型值示例‌:
8GB内存机器:初始堆约128MB,最大堆2GB
16GB内存机器:初始堆约256MB,最大堆4GB

‌2. H2的特殊内存行为‌
‌缓存占用‌:默认会占用JVM堆内存的50%作为数据缓存,但可通过CACHE_SIZE参数调整

‌MVCC模式影响‌:启用MVCC时需额外增加20%-30%内存用于版本链存储

建议配置显式设置固定堆大小,避免依赖不确定的默认值。实际值应根据数据量和并发需求调整,MVCC模式下建议不低于4GB

java -Xms2g -Xmx2g -cp h2*.jar org.h2.tools.Server...

配置G1垃圾收集器参数

1. -XX:+UseG1GC‌
启用G1(Garbage-First)垃圾收集器,这是JDK 9及以后版本的默认收集器。其核心设计目标是平衡吞吐量与低延迟:

‌分区域收集‌:将堆划分为多个等大小的Region(默认2048个),动态分配为Eden/Survivor/Old区
‌并行与并发结合‌:年轻代回收(STW)与老年代并发标记交替进行
‌适用场景‌:堆内存>4GB且需要稳定低延迟的应用(如H2数据库服务端)
‌2. -XX=100‌
设置G1收集器的目标最大停顿时间为100毫秒:

‌动态调整机制‌:G1会根据历史GC数据自动调整新生代/老年代比例,优先回收高收益Region以满足该目标
‌实际影响‌:该值设置过低(如<50ms)可能导致GC频率上升,建议生产环境设为50-200ms区间
‌3. -XX=4m‌
指定每个堆区域(Region)的大小为4MB:

‌默认行为‌:未设置时根据堆大小自动计算(1MB~32MB,堆≥4GB时通常为2MB)
‌大对象优化‌:增大Region尺寸可减少Humongous对象(占Region 50%以上的对象)的分配开销
‌权衡点‌:过大的Region会降低垃圾回收的粒度灵活性

适用于大多数应用,JVM会自动优化Region数量与停顿时间

如果需要手动配置

java -Xms8g -Xmx8g -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1HeapRegionSize=4m  -cp h2-1.4····

G1垃圾收集器并发线程数(ConcGCThreads)配置建议

生产环境推荐值
  • 通用场景‌:
    • 4核机器:建议值1~2
    • 8核机器:建议值2~4
    • 16核及以上:建议值4~8,但需结合业务负载调整
java -Xms16g -Xmx16g -XX:+UseG1GC -XX:ConcGCThreads=8 -cp h2····

http://www.dtcms.com/a/391821.html

相关文章:

  • C# 面试记录
  • 深度学习(十):逻辑回归的代价函数
  • FreeRTOS学习笔记(六):汇编指令笔记
  • 【复刻】中国城市数字经济发展对环境污染的影响及机理研究(2011-2021年)
  • Blazer:一个免费开源、基于SQL的数据分析与可视化工具
  • 软件体系架构——系统架构评估与ATAM
  • sam2 docker部署
  • 深度学习------卷积神经网络
  • Amazon SES + NestJS 实战:零成本打造高送达率邮箱验证方案
  • MySQL 8.0临时表空间深度解析
  • 低秩矩阵:揭示高维数据中的简约之美
  • QR Wizard for Mac 好用的二维码生成器
  • 【redis】redis知识点
  • C语言模版(机试666)
  • 高通camx架构学习(二)——深入理解高通Camx Hal
  • 戴尔笔记本的奇怪功能
  • Linux文件系统结构与用户管理完全指南
  • 鸿蒙保存图片到相册
  • 【C语言】喝汽水问题分析:20元能喝多少瓶汽水?
  • 二物理层-ADSL-思考题
  • PyQt6之滑动条
  • 虚拟机ubuntu安装中文输入法
  • 康奈尔大学视觉-语言-动作模型全面综述:概念、进展、应用与挑战
  • 单片机--中断实验
  • 嵌入式 - GPIO
  • 一款商用的基于SpringBoot+VUE的出货单智能比对系统
  • systemctl 在启动服务时的 常用参数
  • 【MySQL】SQL性能分析
  • 【软件测试Linux】详细Linux介绍和各种命令的场景应用
  • 【MySQL】使用C/C++链接mysql数据库