bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

如果你的系統需要在一張很大的表上創建一個索引,你會考慮哪些因素?-創新互聯

如果你的系統需要在一張很大的表上創建一個索引,你會考慮哪些因素?

成都創新互聯公司成立于2013年,我們提供高端網站建設、成都網站制作成都網站設計公司、網站定制、網絡營銷推廣微信小程序開發、微信公眾號開發、成都網站推廣服務,提供專業營銷思路、內容策劃、視覺設計、程序開發來完成項目落地,為陽臺護欄企業提供源源不斷的流量和訂單咨詢。

 1)關于大表創建索引,如果從綜合考慮多個維度來看,我會考慮:

1. 為什么需要創建索引,即索引創建的之后的性能是否能夠提升

2. 創建什么樣的索引,即索引的類型

3. 創建索引的影響,此時需要了解索引的創建過程,以及如果優化索引的創建效率以減少對業務的影響

4. 什么時候創建索引

5. 有沒有其他方式來替代這個過程

 2)以下關于幾種考慮因素的分析過程: 1.為什么需要創建索引

A. 結合應用查詢場景,比如是否存在相應關鍵業務的SQL需要使用到索引相關字段的條件,其SQL執行頻繁是否較大;該部分業務SQL根據索引所返回的結果集大小,比如一個表有一個億,每次根據相應條件返回了幾千萬的結果集,那創建該索引是否真正有效

B. 結合表數據分布情況,第一個是列數據選擇性問題,如果選擇性不高,有時索引回表的cost比全表掃描大,優化器選擇執行計劃路徑是可能不選擇索引。第二個列數據較為無序,導致創建索引后集群因子較高,增加索引回表成本等。

C. 結合表數據變化情況,,增加一個索引便需要多維護一個索引,對一張數據變化頻率較高的表,索引太多會增加dml操作特別是insert時的索引維護成本,影響執行效率

   2.創建什么樣的索引

      A.如果使用多個條件便可以創建復合索引

      B.如果業務sql條件存在函數,那就要考慮函數索引

      C.如果一個列基數較低,那是否考慮選擇位圖索引,前提是其列數據很少更新

      D.分區表是否創建本地索引

   3.創建索引的影響

       我們都知道創建索引會與dml操作相互影響以及還有大量的IO操作等。

   首先,是了解創建索引的過程,才能解決創建索引帶來的問題,我做了個創建索引的實驗,并通過10046追蹤,創建索引的主要過程如下:

A. 開始讀取數據字典如統計信息,對象信息等

B. 使用share mode nowait將表鎖住,此時其他會話只可讀該表但無法修改該表。

  如果你的系統需要在一張很大的表上創建一個索引,你會考慮哪些因素?

C. 讀取一些信息等判斷后在obj$初始化索引對象信息

  如果你的系統需要在一張很大的表上創建一個索引,你會考慮哪些因素?

  D.開始抓取表數據等一系列大量IO操作,該過程時間相對較長:

  如果你的系統需要在一張很大的表上創建一個索引,你會考慮哪些因素?

E.往seg$,icol$,ind$等信息表中插入相應信息

如果你的系統需要在一張很大的表上創建一個索引,你會考慮哪些因素?

完成整個索引排序創建索引,掃描表

  如果你的系統需要在一張很大的表上創建一個索引,你會考慮哪些因素?

從以上索引的創建過程,我們可以考慮的問題點總結是:

   A.此過程會加共享鎖以至于阻塞dml操作,因此創建索引盡量選擇業務空閑期進行,同時也可以考慮online方式創建。

  B.此過程需要大量讀取表數據并排序操作,以及insert update操作,此時需要考慮存儲IO性能

  C.此過程會產生大量redo,可以考慮nologing模式

  D.同時需要考慮索引的空間大小,關注表空間和臨時表空間

  E.同時可以使用并行加快操作,這也是我們常做的。

4. 什么時候創建索引

     不用考慮,業務空閑期

5. 有沒有其他方式來替代這個過程

可以考慮數據遷移方式,創建一張新表添加索引,在線遷入數據后 rename表

文章名稱:如果你的系統需要在一張很大的表上創建一個索引,你會考慮哪些因素?-創新互聯
URL地址:http://vcdvsql.cn/article48/ejjhp.html

成都網站建設公司_創新互聯,為您提供ChatGPT營銷型網站建設App開發、響應式網站、云服務器電子商務

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設