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

首頁 > 學院 > 開發設計 > 正文

技巧-優化Derby數據庫

2019-11-18 15:36:34
字體:
來源:轉載
供稿:網友

摘要:
    Derby這個完全java開發的開源的數據庫也不例外,因此你必須保證它不會成為你程序的一個瓶頸。盡管人們可以在Derby的手冊中找到關于這個話題全面的資料,我還是想更詳盡的關注一下這些問題,基于我的經驗提供一些具體的例子。

本文將著重于那些由在大的數據表中選擇查詢數據而產生的程序性能問題。數據庫在操作少量測試數據和大量數據的時候,表現行為上有很大的差異。通常,在開發過程前期,人們不會關注數據庫性能的問題,但是隨著時間的發展,人們必須采取一些措施來保證數據庫在大量數據的情況下正常工作。

    Derby這個完全Java開發的開源的數據庫也不例外,因此你必須保證它不會成為你程序的一個瓶頸。盡管人們可以在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.

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

分頁Result Sets

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

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



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东阳市| 罗田县| 西和县| 临湘市| 惠州市| 翁源县| 洛南县| 镶黄旗| 晋城| 大理市| 永春县| 南召县| 社旗县| 永定县| 安泽县| 定西市| 拉孜县| 景宁| 平泉县| 千阳县| 杭州市| 镇巴县| 公主岭市| 司法| 麻栗坡县| 沂源县| 曲松县| 清水河县| 大兴区| 壶关县| 临猗县| 新野县| 上饶市| 铁岭县| 旅游| 五华县| 丹凤县| 特克斯县| 临颍县| 句容市| 正宁县|