在上一輪的實驗中,oracle 11g r2版本下,在87縣市實驗數據的基礎上,比較了分表與分區的效率,得出了分區+全局索引效率較高的結論(見上一篇博客)。不過咱們還沒有比較過不一樣的分區粒度有什麼效率差別。這一輪的實驗,着重於如下幾個目的:算法
實驗數據爲全國2531個區縣,要素總數爲46982394。根據不一樣的數據組織+索引形式,造成了3個不一樣的實驗主體:緩存
在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種算法來進行查詢運算。另外,由於算法執行有前後順序,後執行的算法因爲緩存的緣由,會比先執行的算法有優點。爲了儘可能避免這種干擾,會將算法以不一樣的執行順序進行兩組實驗。性能
第一組實驗,其算法執行順序爲:spa
Part_query→Part_query2→Part_query3→Part_query_p→Part_query2_p→Part_query3_p索引
執行結果以下圖:博客
說明:表中藍色區域爲按縣分區+本地空間索引在不一樣比例尺、不一樣算法下的查詢效率;同理,紅色區域表明按縣分區+全局空間索引,綠色區域表明按省分區+本地空間索引。黃色斑塊表示該行的最小值。效率
根據黃色斑塊坐落的位置,可知:基礎
第二組實驗,其算法執行順序爲:
Part_query_p→Part_query2_p→Part_query3_p→Part_query→Part_query2→Part_query3
執行結果以下圖:
根據黃色斑塊坐落的位置,可知:
兩種實驗,分別得出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在小比例尺下命中率較高。這與咱們的認知一致,即在大任務做業時,並行纔會體現優點。
(未完待續)