2014-04-08 43 views
1

我經歷了各種有關哈希分區的網站,但我無法理解它的優點。 我開始知道,即使有時使用範圍分區,數據也可能分佈不均勻。 所以我們要進行哈希分區。爲什麼在Oracle中引入哈希分區?有什麼優勢

所以任何人請解釋什麼是散列分區,散列分區的必要性?

我們爲什麼要進行哈希分區?

爲什麼我們使用2頁n次方的表空間中創建散列分區

當我們做散列分區會發生什麼情況到底如何?

請任何人都可以詳細解釋我嗎?

在此先感謝。

回答

1

那麼,分區會給你帶來很多東西。忘了分區消除 了片刻:

  • 而不是有100演出表備份,你有100個,1G的表空間。 (每個表空間在備份模式下花費的時間更少,可減少潛在的額外重複次數,減少在 備份期間實例失敗時需要執行的手動恢復量)。與恢復相同。

  • 而不是在100個演出表上有一個索引,你可以在1個演出表上說100個索引。你可以快速地重建每一個....(並且在線以最小的開銷)。
    在100個演出表上重建單個索引 - 這可能需要延長100倍 然後每個單獨的重建(真正的並行查詢可能會減少)。

  • 您可以快速分析每個分區,而不是在100個演出表上運行分析。

  • 可以REORG每個分區獨立於任何其他分區

  • 你可以很容易地重新分配了許多磁盤的負載,你現在有均勻分佈的 的數據爲100個1G的分區,隨意移動它們。如果你手動完成這項工作 - 你將會有一段時間移動這些東西。

  • 等等(您對分區做的每個管理員選項都適用於散列 分區)。

  • 作爲獎勵,您不再需要將數據以直接路徑模式加載到此文件, 將數據導入該文件等等。只需讓軟件爲您工作即可。真的, 我們人類可以做很多東西 - 但 - 當軟件可以爲我做....也許 甚至更​​好,那麼我可以...它的價值一槍。

現在讓我們重新引入分區消除。假設你是一個OLTP系統。你會 選擇在大多數所有查詢中使用的PARTITION鍵(例如CUSTOMER_ID,ORDER_ID, )。這是很難區分分區(幾乎不可能像ORDER_ID那樣的東西 ),但對散列分區非常微不足道。

+0

謝謝你的回答。我明白你的意思。基本上我需要在內部創建散列分區時如何分配數據。 – user3493717

+0

在當今的SAN(存儲區域網絡)中,關於備份或磁盤加載的大部分觀點在我看來都是無效的。重建索引只對全局索引有意義,但它沒有區別。分區索引只有在知道存儲數據的分區時纔有用,默認情況下不是HASH值的情況。否則,Oracle必須掃描(在你的例子中)100個索引分區,這幾乎等於100個單獨的索引。這顯着降低了您的查詢速度。 –

相關問題