教你七步优化数据库
? ? ? ?用戶現(xiàn)在不僅需要更復(fù)雜和靈活的分析,還需要更及時的信息——數(shù)據(jù)必須全天候可用,并且在許多業(yè)務(wù)中用戶要求在事件發(fā)生的幾小時內(nèi)(在某些情況下,幾分鐘甚至幾秒)內(nèi)可以訪問支持決策的數(shù)據(jù)。公司還意識到,許多不同的流程需要使用相同的數(shù)據(jù),因此需要使用不同的配置文件。
? ? ? ?理想情況下,公司應(yīng)在功能中立的數(shù)據(jù)模型中以盡可能小的形式保留詳細數(shù)據(jù),這可以讓商業(yè)公司可以從廣泛的觀點和流程中提出任意數(shù)量的問題。基本前提是:始終可以聚合明細數(shù)據(jù),但永遠不能分解摘要數(shù)據(jù)。這并不意味著你永遠不應(yīng)使用摘要表;相反,它意味著您不應(yīng)僅用摘要數(shù)據(jù)替換明細數(shù)據(jù)。
? ? ? ?如果所需分析需要明細數(shù)據(jù),則無論技術(shù)如何,僅使用摘要表將會失敗。實施者和用戶必須共同努力,以了解業(yè)務(wù)需求及其驅(qū)動因素;然后他們需要使用最低侵入性的過程來滿足這些要求。
? ? ? ?構(gòu)建摘要表,添加索引,強制執(zhí)行優(yōu)先級和非規(guī)范化數(shù)據(jù)的主要原因是提高性能。如果您可以使用任意數(shù)量的數(shù)據(jù)來提出任何問題,并獲得即時響應(yīng),那么您將永遠不需要構(gòu)建摘要或索引。
? ? ? ?這些結(jié)構(gòu)可以作為其他限制情況的解決方法。它們的存在需要更多的空間、數(shù)據(jù)管理以及事件發(fā)生和采取有效行動之間的時間。問題是:如何在提高性能、最小化數(shù)據(jù)復(fù)制和數(shù)據(jù)管理之間取得平衡。
優(yōu)化的七個步驟
一、從中性數(shù)據(jù)模型開始,該模型被規(guī)范化并且不特定于任何函數(shù)或組
l??提供支持業(yè)務(wù)目標所需的最低級別的詳細信息
l??通過定義的詳細程度解決未來需求
l??使用定義詳細信息表的視圖以獲得安全性和并發(fā)性
l??啟用訪問視圖,允許對正在更新的表進行選擇(無意圖讀取)以避免鎖定問題
二、實現(xiàn)視圖以簡化導(dǎo)航
l??幫助工具使用第三方工具和操作視圖以創(chuàng)建更好的結(jié)構(gòu)化查詢語言(SQL)
l??提供前端工具可能需要的結(jié)構(gòu),以創(chuàng)建優(yōu)化的SQL并消除對前端工具的依賴,了解市場上的每個數(shù)據(jù)庫
l??在視圖中嵌入優(yōu)化的連接技術(shù)
l??為表格集成一層安全性
l??為每個業(yè)務(wù)部門提供其自己的邏輯功能化-?以用戶希望看到的方式呈現(xiàn)數(shù)據(jù)
l??允許數(shù)據(jù)存儲一次,然后通過視圖轉(zhuǎn)換,減少數(shù)據(jù)冗余,確保一致性并簡化數(shù)據(jù)管理
三、添加索引,范圍從簡單的技術(shù)(如二級索引)到復(fù)雜的結(jié)構(gòu)(如覆蓋索引,連接索引或聚合索引)
l??提供一個主要優(yōu)點,因為系統(tǒng)與基礎(chǔ)數(shù)據(jù)表在同時維護它們
l??為索引附加一些開銷,因此要知道影響和權(quán)衡,并在成本與收益分析中識別它們
四、使用數(shù)據(jù)庫優(yōu)先級框架強制確定優(yōu)先級,以便在必要時使用資源保護關(guān)鍵的工作負載
l??優(yōu)化SQL后,優(yōu)化索引和視圖結(jié)構(gòu)
l??提供更佳的可用容量使用,但不能提供更多容量
l??提供對工作負載的更好理解
l??系統(tǒng)擁擠時吸引人注意;在擁擠時代,要有優(yōu)先級
l??讓商業(yè)公司提供優(yōu)先方向
五、只有當對更高性能的需求超過分析靈活性時,才進行理性總結(jié)和非規(guī)范化
l??遵循共存而非替換的策略,保留詳細信息表以進行擴展分析,同時添加非規(guī)范化結(jié)構(gòu)
l??滿足多種需求,可以為各種用戶和部門提供服務(wù),證明管理成本合理
l??滿足用戶社區(qū)的更大利益而不要堅持功能目的
l??數(shù)據(jù)量和波動率的結(jié)果在成本效益分析中起著重要作用
?
六、考慮“非理性”摘要和非規(guī)范化來定制特定業(yè)務(wù)流程或報告的數(shù)據(jù)模型
l??當期望的性能超過靈活分析的需求時,需要結(jié)構(gòu)來解決單個功能時
l??在考慮成本效益分析時,包括更高的數(shù)據(jù)管理和資源成本
l??通過維護基礎(chǔ)細節(jié)數(shù)據(jù)來最小化影響;當條件在未來發(fā)生變化時,這種不合理的結(jié)構(gòu)可以在幾乎沒有影響的情況下消除
? ? ? ?如果您還沒有達到預(yù)期的性能,那么還有一個步驟。但是,它的成本相對較高。因此,在繼續(xù)之前,請確保預(yù)期的業(yè)務(wù)價值將超過使提取的數(shù)據(jù)與明細數(shù)據(jù)保持一致所需的額外數(shù)據(jù)移動和管理的成本。
七、探索,擴展和導(dǎo)出
l??探索答案集的業(yè)務(wù)使用情況,并驗證業(yè)務(wù)成果的變化是否會推動預(yù)期的收入增長或成本降低,具體取決于應(yīng)用程序。企業(yè)用戶是否愿意支持這些期望,并且增強的性能是否能夠證明成本合理?
l??展開當前平臺。性能要求是否至關(guān)重要,以確保新容量?
l??將數(shù)據(jù)從主數(shù)據(jù)倉庫導(dǎo)出到特定于應(yīng)用程序的平臺。在這種情況下,專門針對其應(yīng)用調(diào)整的專用環(huán)境將提供對單個應(yīng)用程序的更多控制。請記住重復(fù)數(shù)據(jù)的所有成本,增加時間延遲,以及需要管理和支持的新平臺、軟件環(huán)境的成本。
反證以上步驟
? ? ? ?采取這七個步驟需要了解每個步驟所涉及的成本以及這樣做帶來的好處。它還需要做出支持長期和短期需求的決策。在某些情況下,您可以創(chuàng)建摘要表或添加后來會丟棄的非規(guī)范化數(shù)據(jù)模型。只要丟棄表不會導(dǎo)致中斷或大量應(yīng)用程序更改,這是可以接受的。確保這一點的一種方法是盡可能避免使用匯總或非規(guī)范化表作為更多下游應(yīng)用程序的輸入。
? ? ? ?在應(yīng)用這七個步驟時,對每個提議的步驟執(zhí)行成本效益分析,包括物理方面,例如磁盤空間,管理結(jié)構(gòu)的資源以及由于時間延遲而導(dǎo)致維護機會丟失。
可以從下面幾處考慮改進:
l??查詢性能和響應(yīng)速度
l??用戶并發(fā)率
l??吞吐量
l??用戶滿意度和生產(chǎn)力
l??利用第三方工具
l??用于執(zhí)行查詢的資源消耗
總結(jié)
- 上一篇: [雪峰磁针石博客]python网络基础工
- 下一篇: MySQL执行计划解析