91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-07 16:28:16 來源:ITPUB博客 閱讀:288 作者:darren__chan 欄目:關系型數據庫

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

 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表

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正安县| 唐河县| 安徽省| 博客| 正安县| 东莞市| 余姚市| 临安市| 阜阳市| 伊金霍洛旗| 肥城市| 乌兰察布市| 克拉玛依市| 海宁市| 宜州市| 鄂尔多斯市| 武穴市| 台中市| 濮阳市| 广宁县| 延吉市| 巍山| 涞源县| 仙桃市| 浙江省| 佛坪县| 沧源| 中西区| 兰州市| 江华| 洪雅县| 宜阳县| 牙克石市| 克什克腾旗| 汤阴县| 徐水县| 哈密市| 弋阳县| 敦煌市| 牡丹江市| 轮台县|