oracle分區表之hash分區表的使用及擴展建站知識
導讀:1建站知識Hash分區是Oracle實現表分區的三種基本分區方式之一。對于那些無法有效劃分分區范圍的大表,或者出于某些特殊考慮網站建設哪家好公司網站建設。
Hash分區是通過對分區鍵運用Hash算法從而決定數據的分區歸屬。使用Hash分區有什么優點呢?
常用的分區表所具有的優點:如提高數據可用行,減少管理負擔,改善語句性能等優點,hash分區同樣擁有。此外,由于Hash分區表是按分區鍵的hash計算結果來決定其分區的,而特定的分區鍵其hash值是固定的,也就是說Hash分區表的數據是按分區鍵值來聚集的,同樣的分區鍵肯定在同一分區。比如,在證券行業,我們經常查詢某一只股票的K線,假設表的結構如下:
復制代碼 代碼如下:
create table equity(id number,trade_date date,……);
Equity表可能會很大,對equity表的查詢通常都是指定id,查詢某一交易日期或者某段時期內的其他信息。這種情況下我們需要如何為equity表選擇分區呢?單從表本身結構來看,似乎trade_date列很適合被選擇用來作范圍分區。但如果我們這樣分區的話,前面需求中的查詢:指定某一id,查詢其某一范圍內的交易信息,比如看1年內的K線,則這種查詢常常需要跨分區。我們知道,對分區表作跨分區查詢,很多時候其性能并不會太好,特別是這種查詢很可能還要跨很多分區。你也可能會說,我們再在id, trade_date列上建個索引不就行了,仔細想想是不是這樣呢?這時候的equity表中的數據是按trade_date值來聚集的,同樣trade_date值的數據常常在一個數據塊中,這樣前面需求中所描述的查詢即使通過索引訪問,最終讀表時也常常是去讀離散的數據塊,即每一條記錄需要對應讀一個表數據塊。如果建成Hash分區表,則數據按hash分區鍵聚集,就更適合需求中描述的查詢,因為同樣id的記錄必定在同一分區,同時,同樣 id值的記錄落在同一數據塊的幾率也增大了,從而“一定程度上”減少了IO。上面對hash分區減少IO的描述加了引號,因為僅依靠Hash分區表試圖實現大范圍減少IO操作是不現實的,特別是當equity表中記錄的股票數非常多時,同一股票發生在不同交易日的記錄在物理上也很難聚集到相同數據塊中。實際上,如果我們在Hash分區的基礎上再對equity表采用IOT表的組織方式,則前面描述的查詢性能就可大為提高。IOT表不在該文討論的范圍之內,這里就不作進一步討論了。當我們決定使用Hash表之前,我們還需要確定我們的所選擇的分區鍵值是連續分布的,或者接近連續分區,此外,分區的個數需要是2的整數冪,比如2,4,8… 這些要求是由Hash函數的特點決定的,這樣我們分區表的各個分區所包含的數據量才會比較平均。
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章oracle分區表之hash分區表的使用及擴展建站知識主要講述分區表,標簽,oracle分區表之hash分區表的使用及擴網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_5714.html