国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

專家講解優(yōu)化Derby數(shù)據(jù)庫程序性能

2019-11-18 15:36:42
字體:
供稿:網(wǎng)友

    Derby這個(gè)完全java開發(fā)的開源的數(shù)據(jù)庫也不例外,因此你必須保證它不會(huì)成為你程序的一個(gè)瓶頸。盡管人們可以在Derby的手冊中找到關(guān)于這個(gè)話題全面的資料,我還是想更詳盡的關(guān)注一下這些問題,基于我的經(jīng)驗(yàn)提供一些具體的例子。

本文將著重于那些由在大的數(shù)據(jù)表中選擇查詢數(shù)據(jù)而產(chǎn)生的程序性能問題。

    首先,有很多關(guān)于調(diào)整Derby屬性(諸如頁面大小和緩存大小等)的技巧。修改這些參數(shù)可以在一定程度上調(diào)整數(shù)據(jù)庫的性能,但是在通常情況下,更主要的問題來自與你的程序和數(shù)據(jù)庫的設(shè)計(jì),因此,我們必須首先關(guān)注這些問題,最后再來考慮Derby的屬性。

    在接下來的段落里,我將介紹一些能夠優(yōu)化程序中有問題部分的技術(shù)。但是,和其他性能優(yōu)化操作一樣,我們需要在優(yōu)化前先測量并確認(rèn)問題所在。


一個(gè)簡單的例子

    讓我們從一個(gè)簡單的例子開始:假設(shè)我們Web程序中擁有一個(gè)“search/list”的頁面,要處理一個(gè)有接近100,000行的表,并且那個(gè)表不是很小的(至少有10欄)。用簡單的JDBC來寫一個(gè)例子,這樣我們可以專注在數(shù)據(jù)庫和JDBC問題上來。這篇文章中介紹的所有準(zhǔn)則對(duì)所有的面向?qū)ο蟮挠成涔ぞ叨歼m用。

為了使得用戶能夠列出一個(gè)大的表,通常使用下面簡單的查詢語句。
select * from tbl

對(duì)應(yīng)的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.

    在這兒,我們碰到了第一個(gè)問題。執(zhí)行這樣的代碼,并產(chǎn)生100,000(或更多)個(gè)domain對(duì)象將肯定會(huì)導(dǎo)致java用完堆棧空間,產(chǎn)生一個(gè)“java.lang.OutOfMemoryError”的錯(cuò)誤。對(duì)于初學(xué)者來說,我們首先必須找到一個(gè)方法來使得這個(gè)程序工作。

分頁Result Sets

    隨著程序中數(shù)據(jù)量的增多,你首先想到的應(yīng)該做的事就是為特定的記錄(通常是視圖)提供分頁支持。正如你在這個(gè)介紹性的例子中看到的,簡單地去獲取龐大的result sets很輕易導(dǎo)致 out of memory的錯(cuò)誤。

    許多數(shù)據(jù)庫服務(wù)器支持特定的SQL結(jié)構(gòu),它們可以用于獲得一個(gè)查詢結(jié)果的特定的子集。例如,在MySQL中,提供了LIMIT和OFFSET要害字,它們可以用于select查詢。因此,假如你執(zhí)行類似下面的查詢
select * from tbl LIMIT 50 OFFSET 100



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 苍溪县| 龙井市| 花莲市| 乡城县| 长顺县| 宝山区| 乌海市| 墨竹工卡县| 衡南县| 黑山县| 汶上县| 长岛县| 通化市| 望奎县| 嘉善县| 巴林左旗| 新巴尔虎左旗| 望江县| 电白县| 陆良县| 林甸县| 象州县| 威信县| 柯坪县| 蒙城县| 义马市| 融水| 甘谷县| 香港 | 西林县| 沙坪坝区| 尉犁县| 通城县| 博野县| 宁城县| 长寿区| 衡阳市| 云林县| 闻喜县| 嵊泗县| 芜湖市|