`

hsqldb Cached Table转变

阅读更多
       之前,使用HSQLDB的时候没有考虑客户端内存的大小,建立的表都是Memory Table。这样,将表加载到客户端的时候,就会出现关于内存大小不够用的问题。昨天,打32个项目的PCB基线的时候,就出现了内存溢出的事情。
       虽然,可以通过设置JVM的大小改变JVM所能占有的内存大小。btw:这里需要设置服务器端和客户端。
java 代码
  1. set JAVA_OPTS=-server -Xms512m -Xmx512m -XX:PermSize=256m -XX:MaxPermSize=256m  
       在客户端,直接设置JAVA控制台的JRE内存大小设置就可以了。能解决一定问题,但是不能解决所有的问题。

        今天仔细查看了HSQLDB的说明文档,原来Memory Table表在数据库初始化的时候会被完全读写到内存当中,假设我的数据库有60M的话,这60M的内存将一下就读入到内存中去,当然就会占用大量的内存资源。等数据库关闭的时候,内存中的数据就会写到.Script文件当中去。当然还不包括对数据库进行的操作所耗费的资源等等,这么一下来,客户端耗费的资源就相当大了。

       一个比较好的方法是将这种Memory Table转变为Cached Table。这样的话

       “ CACHED 表是在使用CREATE CACHED TABLE 命令的时候生成的。它只有索引或部分数据是驻留在内存中的,所以可以允许生成容量为几百兆的表空间。CACHED 表的另外一个优点,即使它存储了大量的数据,数据库引擎只需花费很短的时间就可以启动。它的不足是在速度上有所降低。如果你的数据集相对小的时候,尽量不要使用CACHED 表。在小容量和大容量表共存的实际应用中,最好对哪些小容量的表使用默认的MEMORY 表。” --摘自HSQLDB用户指南

       " If only memory tables (CREATE TABLE or CREATE MEMORY TABLE) are used then the database is limited by the memory. A minimum of about 100 bytes plus the actual data size are required for each row. If you use CREATE CACHED TABLE, then the size of the table is not limited by the memory beyond a certain minimum size. The data and indexes of cached tables are saved to disk. With text tables, indexes are memory resident but the data is cached to disk."  --摘自HSQLDB FAQ

       也就是说,如果我把其中比较大的Memory Table转换为Cached Table的话,占用的内存资源会相对较少,但是速度是会降低。测试了一下,导出单个项目的数据到HSQLDB数据库中,如果使用Memory的话,需要32s,但是,使用Cached Table的话,需要45s,数据文件有6M。
   
       由于产品马上就要发布了,这个时候修改可能不是很恰当。先评估一下可能的影响吧。
  1. 需要备份的数据。以前就单单备份了一个.script文件,现在需要将这些文件都要备份起来。〔修改备份文件的逻辑,改为备份文件夹,压缩为zip文件〕
  2. 数据传输到客户端,需要将备份的压缩文件夹,先解压缩。
  3. 不能根据Scipt文件来创建内存数据库。如果加入了Cached Table的话,scipt文件中的信息不全,不能通过这种方式去Rebuild内存数据库。现有内存数据库使用方式需要改变为文件数据库的使用方式。
  4. SHUTDOWN COMPACT替换原来的SHUTDOWN命令。这样会使得生成的数据库文件大小稍微小一点。
      
       这种统计的需求放到客户端去进行,真是难为客户端了,希望客户端的内存大点:)
真想把统计业务和系统常规业务分开,单独的统计系统来处理这些统计需求,就不会对常规业务系统造成影响了。不知道各位在处理统计需求的时候怎么处理?


          
分享到:
评论

相关推荐

    给HSQLDB的text table增加对Excel的读取

    原代码和测试,我已经以Patch方式提交了原代码给HSQLDB opensource,去那里down也可以。 博文链接:https://manzuosteve.iteye.com/blog/243452

    Hsqldb的缓存分析及调试步骤

    **Cached Table**:缓存表结合了内存表和文本表的优点,数据首先存储在内存中,当内存满时,数据会被写入磁盘。关闭数据库后,数据仍然保留。 ### 三、启动过程分析 HSQLDB的启动过程涉及几个关键步骤: A. **实例...

    基于51单片机protues仿真的多功能万用表设计(仿真图、源代码、AD原理图、流程图)

    基于51单片机protues仿真的多功能万用表设计(仿真图、源代码、AD原理图、流程图) 数字多用表既可以测量电压,也可以测量电流、电阻,功能齐全,使用便捷。 本选题采用8位8路A/D转换器ADC0808和8051单片机设计一台数字多用表,能进行电压、电流和电阻的测量,测量结果通过LED数码管显示,通过安检进行测量功能转换。电压测量范围0~5V,测量误差约为±0.02V,电流测量范围为1~100mA,测量误差约为±0.5mA,电阻测量范围0~1000Ω,测量误差约为±2Ω。 1、通过按键设置测量模式; 2、电压采用直接测量方式;电流使用差压放大测量;电阻使用恒流源把阻值转换成电压。 预计难易程度:难度适中预计工作量大小:8周 1.熟练掌握单片机设计基本原理;熟悉8051单片机的工作原理; 2.熟练掌握Proteus软件的使用方法; 3.利用Proteus软件仿真实现数字多用表的测量功能。

    综合能源系统中阶梯式碳交易与供需灵活响应的优化调度模型及其实现

    内容概要:本文详细探讨了综合能源系统(IES)中引入阶梯式碳交易和供需灵活响应机制后的优化调度方法。首先介绍了碳排放计算的分段线性化处理,通过Python代码实现了燃气机组的碳排放曲线计算。接着讨论了电、热、气负荷之间的替代关系及其在不同场景下的应用,展示了如何利用替代矩阵进行负荷调整。此外,文章还介绍了有机朗肯循环(ORC)技术的应用,使热电联产机组能够灵活调整出力。最后,通过混合整数线性规划(MILP)构建了优化模型,并采用CPLEX求解器进行了求解,展示了如何通过分解时间段和预处理变量来提升求解效率。实验结果显示,该模型能使某园区的碳排量降低18%,运行成本节省12%。 适合人群:从事综合能源系统研究和开发的技术人员,以及对碳交易和能源优化感兴趣的学者和工程师。 使用场景及目标:适用于需要优化能源调度、降低成本并减少碳排放的工业和商业园区。目标是通过合理的碳交易机制和灵活的供需响应,实现经济效益和环境效益的最大化。 其他说明:文中提供了详细的代码片段,帮助读者理解和实现具体的优化算法。同时强调了在实际应用中需要注意的历史数据分析和设备物理限制等问题。

    【Delphi网络编程】解决IdHTTPServer TIdHTTP请求HTTP1.1 0 Unknown Response Code报错:指定返回状态及代码示例

    内容概要:本文主要探讨了在Delphi环境下使用IdHTTPServer时遇到的TIdHTTP请求报错HTTP1.1 0 Unknown Response Code的问题及其解决方案。错误的根本原因在于未指定返回状态码,解决方法是在IdHTTPServer1CommandGet事件处理程序中明确设置AResponseInfo.ResponseNo为200(或其他适当的HTTP状态码),并设置AResponseInfo.ResponseText。文中还提供了HTTP服务器端和客户端的具体代码实例,包括GET和POST请求的处理逻辑,以及如何正确配置字符集、内容类型和响应内容。此外,文章最后列出了常见的HTTP状态码及其在Delphi中使用IdHTTP控件时的处理方式,帮助开发者更好地理解和解决类似问题。; 适合人群:具有一定Delphi编程经验,特别是对网络通信和HTTP协议有一定了解的开发人员。; 使用场景及目标:①解决Delphi中IdHTTPServer组件使用过程中出现的HTTP1.1 0 Unknown Response Code错误;②掌握正确的HTTP状态码设置方法;③学习如何构建简单的HTTP服务器和客户端进行数据交互。; 阅读建议:重点理解IdHTTPServer的事件处理机制,特别是如何正确设置响应状态码和响应文本,同时参考提供的代码示例进行实际操作和调试。

    基于滑膜控制的ARS与DYC协同策略提升车辆在复杂路面的稳定性

    内容概要:本文详细介绍了利用滑膜控制和模糊推理系统实现后轮主动转向系统(ARS)与直接横摆力矩控制(DYC)的协同控制方法。通过多段代码实例展示了如何在不同路面条件下(如冰面与柏油路交界),通过上层模糊控制决策、滑膜控制快速响应以及下层精确的力矩分配,使车辆保持稳定的行驶状态。具体措施包括采用三层模糊推理系统进行实时姿态参数处理,使用滑膜控制实现非线性切换,以及构建三维查找表进行力矩分配。 适合人群:从事汽车工程、自动控制领域的研究人员和技术人员,尤其是关注车辆稳定性控制系统的专业人士。 使用场景及目标:适用于研究和开发能够应对复杂道路环境的高级驾驶辅助系统(ADAS)。主要目标是在极端天气或特殊路况下提高车辆的安全性和操控性能。 其他说明:文中提到的技术不仅限于理论探讨,还包括大量实车测试数据支持,证明了所提出的方法能够在实际应用中有效降低横摆角速度误差并抑制钟摆效应。此外,作者展望了未来结合轨迹跟踪和强化学习进一步优化控制策略的可能性。

    tesseract-langpack-ara-4.0.0-6.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统tesseract-langpack-ara-4.0.0-6.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf tesseract-langpack-ara-4.0.0-6.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    员工离职通知单-模板.doc

    员工离职通知单-模板.doc

    高通量计算Ni-Cr-Al合金液固相线与相含量变化的Python实现及应用

    内容概要:本文详细介绍了如何利用Pandat工具进行镍基合金(Ni-Cr-Al系)的高通量计算,以确定液相线、固相线以及相含量的变化。通过编写Python脚本,实现了成分空间的大规模自动扫描,解决了传统手动计算耗时费力的问题。文中不仅提供了完整的代码示例,还涵盖了数据预处理、错误排查、结果验证等多个方面,并展示了如何使用Matplotlib、Seaborn等工具进行数据可视化的技巧。此外,作者强调了选择正确热力学数据库的重要性,并分享了一些实用的经验和优化建议。 适合人群:从事材料科学尤其是合金研究的专业人士,熟悉Python编程语言的研究人员。 使用场景及目标:适用于需要快速探索大量合金成分组合及其物性变化的研究项目,旨在提高科研效率,减少重复劳动,为后续实验提供理论依据和技术支持。 其他说明:文章中提到的技术手段可以推广应用于其他类型的合金系统或其他物理化学性质的高通量计算。

    模拟IC设计:解析国际知名大厂的SAR、Sigma-Delta和Pipeline ADC逆向工程

    内容概要:本文详细介绍了对国际知名大厂的三个逆向ADC电路(SAR ADC、Sigma-Delta ADC和Pipeline ADC)进行深入剖析。作者通过Cadence Virtuoso平台研究了这些电路的标准单元库设计,探讨了各个电路的关键技术和实现细节。对于24bit Sigma-Delta ADC,重点讨论了其调制器部分的时钟相位分配和噪声整形技术;对于16bit SAR ADC,则关注其比较器阵列的独特设计以及动态锁存比较器的应用;而对于14bit Pipeline ADC,着重分析了其级间放大器设计和电荷共享技术。此外,文中还提到了在将这些设计适配到自家工艺过程中遇到的问题及其解决方案,如电容寄生效应、时序约束调整、运放结构优化等。 适合人群:从事模拟集成电路设计的专业人士,尤其是对ADC设计感兴趣的工程师和技术研究人员。 使用场景及目标:帮助读者深入了解高精度ADC的工作原理和设计技巧,掌握逆向工程技术在实际项目中的应用,提高对不同工艺节点下ADC设计的理解和适应能力。 其他说明:文中提供了大量具体的代码片段和仿真命令,便于读者理解和实践。同时,作者分享了许多宝贵的经验教训,强调了在逆向工程中需要注意的技术细节和潜在风险。

    新能源汽车车载充电机PWM整流器仿真模型及双闭环PFC控制研究

    内容概要:本文详细介绍了基于PWM整流器的3.3kW新能源汽车车载充电机仿真模型的设计与实现。前级采用双闭环PFC控制,确保直流母线电压稳定并使网侧电流呈正弦波形,后级则使用移相全桥开环控制来调节输出电压。文中探讨了电压环和电流环的PI参数整定方法,以及如何通过坐标变换提高电流跟踪精度。此外,还讨论了仿真过程中遇到的问题及其解决方案,如不同仿真软件之间的步长同步问题和滤波器的应用。最终,仿真结果显示整机效率可达92%-94.7%。 适合人群:从事新能源汽车充电技术研发的工程师和技术爱好者。 使用场景及目标:适用于需要深入了解车载充电机电能转换机制的研究人员,旨在优化充电机性能,提升电能转换效率。 其他说明:文中提供了具体的MATLAB和PLECS代码片段,帮助读者更好地理解和复现实验结果。同时强调了仿真过程中需要注意的关键技术和常见陷阱。

    tdb-tools-1.4.3-1.el8.x64-86.rpm.tar.gz

    1、文件说明: Centos8操作系统tdb-tools-1.4.3-1.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf tdb-tools-1.4.3-1.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm

    电力系统中风光水火储多能系统分层优化调度策略研究

    内容概要:本文探讨了风光水火储多能系统的分层优化调度策略,旨在提高系统灵活性和经济效益。文章详细介绍了上层优化(主要针对储能系统)和下层优化(主要针对火电机组)的具体实现方法及其相互协作机制。上层优化通过最小化净负荷波动并考虑储能收益,确保电网稳定性;下层优化则关注火电机组的成本最小化以及应对可再生能源的不确定性。文中还讨论了交替方向乘子法(ADMM)用于协调上下层优化的过程,并展示了基于改进IEEE30节点系统的实验结果。 适合人群:从事电力系统优化、智能电网研究的专业人士和技术爱好者。 使用场景及目标:适用于希望深入了解多能系统优化调度策略的研究人员,尤其是那些致力于提高电力系统灵活性和经济效益的人群。目标是掌握如何利用数学模型和算法解决实际工程问题。 其他说明:文章强调了在构建优化模型时不仅要考虑理论上的最优解,还要兼顾设备的实际物理特性。此外,作者提醒读者在设置模型参数时应注意避免不合理配置导致设备损坏等问题。

    电子硬件课程设计项目资源

    电子硬件课程设计项目资源

    数学建模_Matlab_SPSS_教程分享_学习用途_1742838826.zip

    线性代数

    按需激励――荣誉点激励法.doc

    按需激励――荣誉点激励法

    Delphi 12.3控件之DBTreed7.rar

    Delphi 12.3控件之DBTreed7.rar

    2025年节假日工作日.xls文件

    标注工作日,非工作日,调休,可以直接使用

    Delphi 12.3控件之android-hls-slice-master.zip

    Delphi 12.3控件之android_hls_slice-master.zip

    delphi 12.3 QFLazarus带交叉编译.zip

    delphi 12.3 QFLazarus带交叉编译.zip

Global site tag (gtag.js) - Google Analytics