Oracle Spatial分區應用研究之二:按縣分區與按省分區對比測試報告

  1. 一、實驗目的

在上一輪的實驗中,oracle 11g r2版本下,在87縣市實驗數據的基礎上,比較了分表與分區的效率,得出了分區+全局索引效率較高的結論(見上一篇博客)。不過咱們還沒有比較過不一樣的分區粒度有什麼效率差別。這一輪的實驗,着重於如下幾個目的:算法

  1. 使實驗場景更接近真實使用場景——使用oracle 12c,用更大的數據量進行實驗。
  2. 對比分析按縣分區與按省分區的查詢效率。
  3. 繼續比較本地空間索引與全局空間索引在不一樣算法下的查詢效率。
  1. 二、實驗數據

實驗數據爲全國2531個區縣,要素總數爲46982394。根據不一樣的數據組織+索引形式,造成了3個不一樣的實驗主體:緩存

  • 分區+本地空間索引
  • 分區+全局空間索引
  • 分區+本地空間索引
  1. 三、實驗方法

在1:500、1:2000、1:10000、1:25000、1:50000、1:100000比例尺下,隨機從全國範圍內選擇3個樣本範圍,做爲空間查詢時的查詢範圍。將6*3個樣本範圍分別與3個實驗主體進行空間查詢運算,記錄每次查詢的耗時。oracle

空間查詢所用的算法仍然同於上一篇博客《Oracle Spatial分區應用研究之一:分表與分區性能對比》中介紹的、適用於分區的3種算法,即part_query、part_query二、part_query3。同時,本次實驗中,還將經過並行框架對3種算法進行衍生,獲得另外3種算法,標記爲part_query_p、part_query2_p、part_query3_p。框架

所以,對每個實驗主體來講,在每一種比例尺樣本下均須要用6種算法來進行查詢運算。另外,由於算法執行有前後順序,後執行的算法因爲緩存的緣由,會比先執行的算法有優點。爲了儘可能避免這種干擾,會將算法以不一樣的執行順序進行兩組實驗。性能

  1. 四、實驗結果

    1. 4.1 第一組實驗結果

第一組實驗,其算法執行順序爲:spa

Part_queryPart_query2Part_query3Part_query_pPart_query2_pPart_query3_p索引

執行結果以下圖:博客

說明:表中藍色區域爲按縣分區+本地空間索引在不一樣比例尺、不一樣算法下的查詢效率;同理,紅色區域表明按縣分區+全局空間索引,綠色區域表明按省分區+本地空間索引。黃色斑塊表示該行的最小值。效率

    根據黃色斑塊坐落的位置,可知:基礎

  1. 在全部比例尺下,按省分區+本地空間索引效率最高,全部耗時最小的查詢均發生在該區域。
  2. Part_query_p算法的查詢效率最高,18個實驗樣本,耗時最小命中17次。
  1. 4.2 第二組實驗結果

第二組實驗,其算法執行順序爲:

Part_query_pPart_query2_pPart_query3_pPart_queryPart_query2Part_query3

執行結果以下圖:

    根據黃色斑塊坐落的位置,可知:

  1. 在全部比例尺下,按省分區+本地空間索引效率最高,全部耗時最小的查詢均發生在該區域。
  2. Part_query算法的查詢效率最高,18個實驗樣本,耗時最小命中18次。
  1. 4.3 補充說明

兩種實驗,分別得出Part_query_p與Part_query算法效率最高的結論。這看似矛盾,實際上正是上文提到的,當算法執行有前後順序時,會受到緩存的緣由。那麼對於Part_query_p與Part_query,誰的效率更高呢?

在兩組實驗中,Part_query_p與Part_query分別是最早執行的算法。分別從兩組實驗結果中取出Part_query_p與Part_query的實驗數據,就可幾乎徹底排除緩存的影響。

兩種算法,各命中9次。說明效率至關。但很明顯的是,part_query在大比例尺下(大於1:25000)命中率較高;part_query_p在小比例尺下命中率較高。這與咱們的認知一致,即在大任務做業時,並行纔會體現優點。

  1. 五、實驗結論

    1. Oracle 12c環境下,在要素量爲四千萬級別時,按省分區+本地空間索引效率較高。
    2. 採用按省分區+本地空間數據組織方式時,Part_query算法較爲高效。

 

(未完待續)

相關文章
相關標籤/搜索