国产探花免费观看_亚洲丰满少妇自慰呻吟_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



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吴川市| 出国| 金昌市| 永年县| 微山县| 海伦市| 会昌县| 乌鲁木齐县| 红原县| 弋阳县| 丰原市| 松江区| 上高县| 台州市| 封丘县| 三门县| 镇远县| 乌鲁木齐县| 江津市| 云梦县| 新巴尔虎右旗| 平利县| 南漳县| 扬州市| 香港| 峡江县| 滨海县| 泊头市| 兴城市| 兴化市| 静宁县| 肥乡县| 梁平县| 安溪县| 循化| 贺州市| 建瓯市| 溆浦县| 若羌县| 绍兴市| 洞口县|