欢迎来到天天文库
浏览记录
ID:50161326
大小:371.38 KB
页数:9页
时间:2020-03-08
《最佳实践:使用JAVA内存数据库H2DATABASE性能优化.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、软件体系最佳实践文档最佳实践:使用JAVA内存数据库h2database性能优化分类:Java性能优化作者:凡彬勇日期:2011-08-1导读:使用JAVA内存数据库h2database性能优化,提高数据处理速度,解决IO瓶颈问题1.问题我们在开发应用都知道IO是系统性能的瓶颈,在应用开发中,我们会经常碰到以下问题:1.系统在不断实时地访问数据库时,一秒钟对同一个表操作几千,几万次以上,导致数据表死锁或则处理太慢;2.对数据实时计算,而且数据量很大时,比如电信系统的电信的二次批价和实时累账3.需实时统计数据,监控海量数据问题,比如ATM监控系统的可疑交易监控(广东
2、中行)单笔金额上限:在银行ATM上单笔交易金额超过规定的最大交易金额。交易金额累计上限:在某个时间段及XX小时内(可单选或同时选择),同一卡号或BIN号卡在同一ATM终端上,累计成功取现金额大于等于XXX元人民币,且失败交易金额大于等于XX元;卡交易笔数累计上限:在某个时间段及XX小时内(可单选或同时选择),同一卡号或BIN号卡在同一ATM终端上,成功取现交易笔数大于等于X笔,且失败交易笔数大于等于X笔;第1页共9页软件体系最佳实践文档终端交易笔数累计上限:在某个时间段及XX小时内(可单选或同时选择),同一ATM终端发生失败取现或查询交易(回应码等于非法交
3、易、没收卡、过期卡、密码错误)大于等于XX笔的;交易频率上限:对单卡每日交易频率、交易时间间隔进行监控,如在交易间隔时间2分钟内单卡(同一账户)连续取现3次;单卡当日交易频率5次;累计取现上限:单卡每日在银行ATM累计取现限额监控:内k卡超过限额和外卡超过限额;密码错次数超限:单卡每日密码输入错误次数超过限额,例如3次(含3次);4.在很短的时间多线程对表进行很多DML操作,比如中信银行监控系统的交易与清机加钞处理,每条交易与清机加钞有3条报文,分别是请求,授权,完成报文,在处理时分别把这三条报文存在三个表中,为了对这三条报文合并成一条交易与清机加钞,至少要
4、执行18条DMLSQL语句,并且接收报文的线程不断地对这三表进行insert操作。这样在数据压力大的时候导致db2的这几个表总是死锁,改为表锁后就不断地出现锁超时,引起数据的丢失。……传统的数据库系统是关系型数据库,数据是存储在磁盘上,对磁盘数据库而言,由于磁盘存取、内外存的数据传递、缓冲区管理、排队等待及锁的延迟等使得事务实际平均执行时间与估算的最坏情况执行时间相差很大。如果将整个数据库或其主要的“工作”部分放入内存,使每个事务在执行过程中没有I/O,则为系统较准确估算和安排事务的运行时间,使之具有较好的动态可预报性提供了有力的支持。有什么好的方法能让数据放入到
5、内存中处理并且使用又简单高效呢?这就是本文要探讨的问题与实践。2.解决办法JAVA项目中解决的办法是采用内存数据库h2database来处理实际应用中处理实时性强的业务逻辑处理数据,以内存空间换取数据处理性第2页共9页软件体系最佳实践文档能的提升。本文将以中信银行ATM监控系统用h2database来处理交易与清机加钞记录为示例,来讲解用h2database来解决数据处理性能问题。2.1.H2database启动H2database内存数据库可分为嵌入模式与控制台两种启动模式。本文档将在随后重点介绍嵌入模式。1)控制台模式是和所有其他通用数据库一样单独启动服务。如
6、下图所示:WebBrowser是h2内置的一个web客户端管理工具,是一个管理h2的界面,登录后可创建执行SQL以及查看模式,表等等;H2ConsoleServer是控制中心,用来启动与关闭h2内存数据库的H2Database是整个数据库的核心引擎通过org.h2.tools.Server这个cLass进行启动。示例脚本如下h2.sh(中信银行ATM监控系统示例):#!/bin/shexportJAVA_HOME=/home/feelview/SDK/jdkexportCLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOM
7、E/jre/libexportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHcp=h2-1.2.141.jarif[-n"$H2DRIVERS"];then第3页共9页软件体系最佳实践文档cp="$cp:$H2DRIVERS"fiif[-n"$CLASSPATH"];thencp="$cp:$CLASSPATH"finohupjava-Xms128m-Xmx1000m-XX:+PrintGC-Xloggc:JVM.svc-cp"$cp"org.h2.tools.Server&2)嵌入模式将在2.2节中详细介绍2.2.H2d
8、ataba
此文档下载收益归作者所有