derby mysql 性能,专家讲解优化Derby数据库程序性能

本文探讨了在Derby数据库中处理大型数据表时遇到的性能问题,尤其是针对100,000行以上的表格进行查询。通过分析一个简单的JDBC查询示例,指出内存消耗可能导致`java.lang.OutOfMemoryError`。强调了优化程序设计和数据库配置的重要性,而非仅仅调整Derby的属性。提出在优化前需先进行性能测量,并提供了一些优化技术。
摘要由CSDN通过智能技术生成

Derby这个完全开发的开源的数据库也不例外,因此你必须保证它不会成为你程序的一个瓶颈。尽管人们可以在Derby的手册中找到关于这个话题全面的资料,我还是想更详尽的关注一下这些问题,基于我的经验提供一些具体的例子。本文将着重于那些由在大的数据表中选择查询数据而产生的程序性能问题。

首先,有很多关于调整Derby属性(诸如页面大小和缓存大小等)的技巧。修改这些参数可以在一定程度上调整数据库的性能,但是在通常情况下,更主要的问题来自与你的程序和数据库的设计,因此,我们必须首先关注这些问题,最后再来考虑Derby的属性。

在接下来的段落里,我将介绍一些能够优化程序中有问题部分的技术。但是,和其他性能优化操作一样,我们需要在优化前先测量并确认问题所在。

一个简单的例子

让我们从一个简单的例子开始:假设我们Web程序中拥有一个“search/list”的页面,要处理一个有接近100,000行的表,并且那个表不是很小的(至少有10栏)。用简单的JDBC来写一个例子,这样我们可以专注在数据库和JDBC问题上来。这篇文章中介绍的所有准则对所有的面向对象的映射工具都适用。

为了使得用户能够列出一个大的表,通常使用下面简单的查询语句。

select * from tbl

对应的JDBC语句如下:

Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();

Connection connection = DriverManager.getConnection (

"jdbc:derby://localhost:1527/testDb;");

Statement stmt = connection.createStatement();

ResultSet rs = stmt.executeQuery("select * from tbl");

ArrayList allResults = new ArrayList();while (rs.next()) {

// Object-Relation mapping code to populate your

// object from result set row

DomainObject domainObject = populate(rs);

allResults.add(modelObject);

}

System.out.println("Results Size: " + allResults.size());

在这儿,我们碰到了第一个问题。执行这样的代码,并产生100,000(或更多)个domain对象将肯定会导致java用完堆栈空间,产生一个“java.lang.OutOfMemoryError”的错误。对于初学者来说,我们首先必须找到一个方法来使得这个程序工作。

[1]

【责编:Peng】

--------------------next---------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值