欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

宜信的105條數(shù)據(jù)庫軍規(guī)

作為一家金融科技企業(yè),宜信的大量業(yè)務都依賴于數(shù)據(jù)庫。如何提高公司整體數(shù)據(jù)庫應用水平,是對DBA的一大挑戰(zhàn),也非常具有現(xiàn)實意義。筆者在宜信的多年工作中,與團隊一起總結整理了針對傳統(tǒng)關系型數(shù)據(jù)庫的使用規(guī)則,并借助自研的數(shù)據(jù)庫審核平臺落地,借此幫助研發(fā)團隊評估數(shù)據(jù)庫開發(fā)質量,達到盡早發(fā)現(xiàn)問題、解決問題之目的。下圖正是這一系統(tǒng)的簡單原理圖。

創(chuàng)新互聯(lián)建站2013年至今,是專業(yè)互聯(lián)網技術服務公司,擁有項目做網站、網站制作網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元遜克做網站,已為上家服務,為遜克各地企業(yè)和個人服務,聯(lián)系電話:18980820575

宜信的105條數(shù)據(jù)庫軍規(guī)

如上圖所示,針對規(guī)則部分又可細分為如下分類(部分)。簡單描述如下,后面將逐一詳細說明。

宜信的105條數(shù)據(jù)庫軍規(guī)

一、Oracle規(guī)則(對象)

1.1 表、分區(qū)

【規(guī)則1】

規(guī)則說明:超過指定規(guī)模且沒有分區(qū)的表。

規(guī)則閾值:2GB(物理大小超過指定閥值)。

規(guī)則描述:表的規(guī)模過大,將影響表的訪問效率、增加維護成本等。常見的解決方案就是使用分區(qū)表,將大表轉換為分區(qū)表。

【規(guī)則2】

規(guī)則說明:單表或單分區(qū)記錄數(shù)量過大。

規(guī)則閾值:1000000(單表或單分區(qū)記錄數(shù)超過指定閥值)。

規(guī)則描述:控制單個表或單個分區(qū)的數(shù)據(jù)規(guī)模,提高單一對象的訪問效率。如記錄數(shù)過多,應考慮分庫、分表、分區(qū)等策略。

【規(guī)則3】

規(guī)則說明:大表過多。

規(guī)則閾值:自定義(超過2G的表的數(shù)量過多)。

規(guī)則描述:大表在所有表中所占比例超過20%(OLTP)或95%(OLAP)。

【規(guī)則4】

規(guī)則說明:單表分區(qū)數(shù)量過多。

規(guī)則閾值:500(單表分區(qū)數(shù)量超過指定閥值)。

規(guī)則描述:分區(qū)表中分區(qū)數(shù)量過多,將導致整體維護成本過高,可調整分區(qū)粒度。

【規(guī)則5】

規(guī)則說明:分區(qū)表數(shù)量過多。

規(guī)則閾值:2000(分區(qū)表數(shù)量超過指定閥值)。

規(guī)則描述:分區(qū)表過多,常見原因是大表較多。因根據(jù)需求,考慮進行垂直拆分,減小單庫規(guī)模。

【規(guī)則6】

規(guī)則說明:復合分區(qū)數(shù)量過多。

規(guī)則閾值:5(復合分區(qū)數(shù)量超過指定閥值)。

規(guī)則描述:同上面分區(qū)表數(shù)量過多理由類似(含有復合分區(qū)表的數(shù)量)。

【規(guī)則7】

規(guī)則說明:存在啟用并行屬性的表。

規(guī)則閾值:1(表degree屬性不為1)。

規(guī)則描述:一般情況下不建議對表設置并行屬性。

1.2 索引

【規(guī)則8】

規(guī)則說明:外鍵沒有索引的表。

規(guī)則描述:外鍵沒有索引會導致主子表關聯(lián)查詢時,關聯(lián)效率很低。

【規(guī)則9】

規(guī)則說明:組合索引數(shù)量過多或沒有索引。

規(guī)則描述:組合索引過多,將導致空間消耗較大、索引維護成本較高。應考慮構建戰(zhàn)略性索引結構,不要針對每個需求都通過創(chuàng)建索引解決。

【規(guī)則10】

規(guī)則說明:單表索引數(shù)量過多。

規(guī)則閾值:3(單表索引數(shù)量超過指定閥值)。

規(guī)則描述:索引可以提高訪問速度,但數(shù)量過多將導致空間消耗過大,且索引維護成本較高,影響DML效率等問題。應控制索引數(shù)量。

【規(guī)則11】

規(guī)則說明:存在7天內沒有使用的索引。

規(guī)則描述:在數(shù)據(jù)庫一段時間內,該索引沒有被任何SQL語句使用。請評估此索引的有效性。

【規(guī)則12】

規(guī)則說明:字段重復索引。
規(guī)則描述:一個字段被多個索引引用,請考慮構建策略,刪除不必要的索引。

【規(guī)則13】

規(guī)則說明:存在全局分區(qū)索引。

規(guī)則描述:全局分區(qū)索引,存在維護成本較高問題。當分區(qū)發(fā)生變化時,需要維護全局索引的有效性。

【規(guī)則14】

規(guī)則說明:失效索引。
規(guī)則描述:索引狀態(tài)為INVALID、UNUSABLE。

【規(guī)則15】

規(guī)則說明:索引高度超過指定高度。

規(guī)則閾值:4。

規(guī)則描述:索引高度過高導致增加IO成本。

【規(guī)則16】

規(guī)則說明:存在位圖索引。

規(guī)則描述:OLTP環(huán)境中不建議使用位圖索引,如果表對象經查做DML操作,會在一定程度上阻塞相關操作。

【規(guī)則17】

規(guī)則說明:存在函數(shù)索引。

【規(guī)則18】

規(guī)則說明:存在啟用并行屬性的索引。

規(guī)則閾值:1(索引degree屬性不為1)。

規(guī)則描述:一般情況下不建議對索引設置并行屬性。

【規(guī)則19】

規(guī)則說明:存在聚簇因子過大的索引。

規(guī)則閾值:自定義。

規(guī)則描述:聚簇因子過大的索引,應該考慮優(yōu)化。

1.3 約束

【規(guī)則20】

規(guī)則類別:約束。

規(guī)則說明:沒有主鍵的表。

規(guī)則描述:主鍵是關系型數(shù)據(jù)庫中唯一確定一條記錄的依據(jù),沒有任何理由不定義主鍵。

【規(guī)則21】

規(guī)則類別:約束。

規(guī)則說明:使用外鍵的表。

規(guī)則描述:不建議使用外鍵約束,數(shù)據(jù)一致性通過應用端解決。

1.4 字段

【規(guī)則22】

規(guī)則說明:表字段過多。

規(guī)則閾值:100(字段數(shù)量超過指定閥值)。

規(guī)則描述:字段過多,會導致記錄長度過大。單個數(shù)據(jù)存儲單元將保存的記錄數(shù)過少,影響訪問效率。

【規(guī)則23】

規(guī)則說明:包含有大字段類型的表。

規(guī)則描述:大對象字段是關系型數(shù)據(jù)庫中應盡量避免的。如有需要,可考慮在外部進行存儲。

【規(guī)則24】

規(guī)則說明:記錄長度定義過長。

規(guī)則描述:記錄定義長度與實際存儲長度差異過大,請考慮字段類型定義是否合理,個別字段過長是否可分表存儲。

【規(guī)則25】
規(guī)則說明:不包含時間戳字段的表。

規(guī)則描述:時間戳,是獲取增量數(shù)據(jù)的一種方法。建議在表內增加創(chuàng)建時間、更新時間的時間戳字段。命名方式為CREATE_TIME、UPDATE_TIME。

【規(guī)則26】

規(guī)則說明:表字段類型不匹配。

規(guī)則描述:此規(guī)則會抽樣部分數(shù)據(jù),分析其定義類型與存儲類型是否相符。常見問題如用數(shù)字、文本保存日期等。

1.5 其他對象

【規(guī)則27】

規(guī)則說明:緩存過小的序列。

規(guī)則閾值:100(序列cache值小于指定閥值)。

規(guī)則描述:系統(tǒng)默認會緩存20,如過小將導致頻繁查詢數(shù)據(jù)字典,影響并發(fā)能力。

【規(guī)則28】

規(guī)則說明:存在存儲過程及函數(shù)度。

規(guī)則閾值:20(存儲過程和函數(shù)的數(shù)量超過指定閥值)。

規(guī)則描述:存儲過程及函數(shù),將影響數(shù)據(jù)庫的異構遷移能力,并存在代碼維護性較差等原因。

【規(guī)則29】

規(guī)則說明:存在觸發(fā)器。

規(guī)則閾值:20(觸發(fā)器數(shù)量超過指定閥值)。

規(guī)則描述:觸發(fā)器,將影響數(shù)據(jù)庫的異構遷移能力。如有數(shù)據(jù)一致性維護需求,請從應用端給予考慮。

【規(guī)則30】

規(guī)則說明:存在DBLINK。

規(guī)則描述:不建議在一個數(shù)據(jù)庫中訪問其他數(shù)據(jù)庫,請考慮在應用端解決。

二、Oracle規(guī)則(執(zhí)行計劃)

2.1 綁定變量

【規(guī)則31】

規(guī)則說明:未使用綁定變量。

規(guī)則閾值:自定義(執(zhí)行次數(shù))。

規(guī)則描述:執(zhí)行次數(shù)超過一定閥值的語句,謂詞右側存在常量值。

【規(guī)則32】

規(guī)則說明:綁定變量的數(shù)量過多。

規(guī)則閾值:自定義(綁定變量的個數(shù))。

規(guī)則描述:綁定變量數(shù)量過多會增加變量替換時間,在一定程度上增加sql執(zhí)行時間。

2.2 表間關聯(lián)

【規(guī)則33】

規(guī)則說明:笛卡爾積。

規(guī)則描述:缺少連接條件,導致表間關聯(lián)使用了笛卡爾積的連接方式,執(zhí)行計劃中包含"CARTESIAN|"字樣。

【規(guī)則34】

規(guī)則說明:嵌套循環(huán)層次過深。

規(guī)則閾值:自定義(層次數(shù))。

規(guī)則描述:嵌套循環(huán)層次過深,超過指定閥值。執(zhí)行計劃中嵌套多層"NESTED LOOP"或"FILTER"字樣。

【規(guī)則35】
規(guī)則說明:嵌套循環(huán)內層表訪問方式為全表掃描。

規(guī)則描述:嵌套循環(huán)的內層表訪問方式為全表掃描,效率很低。

【規(guī)則36】
規(guī)則說明:排序合并連接中存在大結果集排序。

規(guī)則描述:排序合并中兩個結果集都要排序,應調整為其他連接方式。

【規(guī)則37】

規(guī)則說明:多表關聯(lián)。

規(guī)則閾值:自定義(表個數(shù))。

規(guī)則描述:過多的表關聯(lián),影響性能。

2.3 訪問路徑

【規(guī)則38】

規(guī)則說明:大表全表掃描。

規(guī)則閾值:自定義(表大小,單位GB)。

規(guī)則描述:對大表執(zhí)行了全表掃描操作,執(zhí)行計劃中包含"TABLE ACCESS FULL"字樣。

【規(guī)則39】

規(guī)則說明:大索引全掃描。

規(guī)則閾值:自定義(索引大小,單位GB)。

規(guī)則描述:對大索引執(zhí)行了索引全掃描操作,執(zhí)行計劃中包含"INDEX FULL SCAN"字樣。

【規(guī)則40】

規(guī)則說明:大索引快速全掃描。

規(guī)則閾值:自定義(索引大小,單位GB)。

規(guī)則描述:對大索引執(zhí)行了索引快速全掃描操作,執(zhí)行計劃中包含"INDEX FAST FULL SCAN"字樣。

【規(guī)則41】

規(guī)則說明:索引跳躍掃描。

規(guī)則描述:對索引執(zhí)行跳躍掃描操作,執(zhí)行計劃中包含"INDEX SKIP SCAN"字樣。

【規(guī)則42】

規(guī)則說明:分區(qū)全掃描。

規(guī)則描述:對分區(qū)表進行了全分區(qū)掃描,執(zhí)行計劃中含有“PARTITION RANGE ALL”字樣。

【規(guī)則43】

規(guī)則說明:非連續(xù)分區(qū)掃描。

規(guī)則描述:非連續(xù)分區(qū)掃描,執(zhí)行計劃中含有“PARTITION RANGE INLIST”或“PARTITION RANGE OR”字樣。

【規(guī)則44】

規(guī)則說明:跨分區(qū)掃描。

規(guī)則描述:連續(xù)的分區(qū)掃描,執(zhí)行計劃中含有“PARTITION RANGE ITERATOR”字樣。

2.4 類型轉換

【規(guī)則45】

規(guī)則說明:存在隱式轉換。

規(guī)則描述:在條件判斷中使用了隱式數(shù)據(jù)類型轉換。

2.5 其他執(zhí)行計劃

【規(guī)則46】

規(guī)則說明:存在大結果集排序操作。

規(guī)則描述:可考慮通過引入索引等操作避免排序。

【規(guī)則47】

規(guī)則說明:存在并行訪問特征。

規(guī)則描述:并行很影響性能,一般情況下需要避免。

【規(guī)則48】

規(guī)則說明:存在視圖訪問。
規(guī)則描述:視圖操作一般可以合并、解嵌套等,如都不行應該排查視圖定義。

三、Oracle規(guī)則(執(zhí)行特征)

3.1 執(zhí)行特征

【規(guī)則49】

規(guī)則說明:掃描塊數(shù)與返回記錄數(shù)比例過低。

規(guī)則閾值:自定義(百分比)。

規(guī)則描述:掃描大量數(shù)據(jù)但返回記錄數(shù)很少,需要從邏輯上調整SQL語句。

【規(guī)則50】

規(guī)則說明:子游標過多。

規(guī)則閾值:自定義(子游標數(shù))。

規(guī)則描述:子游標過多,可能存在執(zhí)行計劃不穩(wěn)定的情況。

【規(guī)則51】

規(guī)則說明:elapsed_time。

規(guī)則閾值:自定義。

【規(guī)則52】

規(guī)則說明:cpu_time

規(guī)則閾值:自定義

【規(guī)則53】

規(guī)則說明:buffer_gets

規(guī)則閾值:自定義

【規(guī)則54】

規(guī)則說明:disk_reads

規(guī)則閾值:自定義

【規(guī)則55】

規(guī)則說明:direct_writes

規(guī)則閾值:自定義

【規(guī)則56】

規(guī)則說明:executions

規(guī)則閾值:自定義

四、MySQL規(guī)則(對象)

4.1 表、分區(qū)

【規(guī)則57】

規(guī)則說明:超過指定規(guī)模且沒有分區(qū)的表。

規(guī)則閾值:自定義(表大小,GB)。

規(guī)則描述:表的規(guī)模過大,將影響表的訪問效率、增加維護成本等。常見的解決方案就是使用分區(qū)表,將大表轉換為分區(qū)表。

【規(guī)則58】

規(guī)則說明:單庫數(shù)據(jù)表過多。

規(guī)則閾值:自定義(表個數(shù))。

規(guī)則描述:單庫數(shù)據(jù)表過多,將影響整體性能。必要時,進行業(yè)務邏輯的垂直拆分。

【規(guī)則59】

規(guī)則說明:單表(分區(qū))數(shù)據(jù)量過大。

規(guī)則閾值:自定義(數(shù)據(jù)規(guī)模,記錄數(shù))。

規(guī)則描述:單表(分區(qū))數(shù)據(jù)表過多,將影響整體性能。必要時,進行分庫、分表或定期清理、歸檔數(shù)據(jù)。

4.2 索引

【規(guī)則60】

規(guī)則說明:單表索引數(shù)量過多。

規(guī)則閾值:自定義(索引數(shù)量)。

規(guī)則描述:單表索引數(shù)量過多,不僅維護成本高,而且占用更多的空間。

【規(guī)則61】

規(guī)則說明:存在重復索引。

規(guī)則描述:索引能由另一個包含該前綴的索引完全代替,是多余索引。多余的索引會浪費存儲空間,并影響數(shù)據(jù)更新性能。

【規(guī)則62】

規(guī)則說明:索引選擇率不高。

規(guī)則閾值:自定義(選擇率,百分比)。

規(guī)則描述:索引選擇率不高,將導致索引低效,請調整索引字段。

4.3 約束

【規(guī)則63】

規(guī)則說明:表存在外鍵。

規(guī)則描述:外鍵資源將消耗數(shù)據(jù)庫的計算能力,建議通過應用層保證數(shù)據(jù)約束。

【規(guī)則64】

規(guī)則說明:表沒有定義主鍵。

規(guī)則描述:沒有定義主鍵,MySQL會自動創(chuàng)建主鍵。這不是一種好的設計方法。

4.4 字段

【規(guī)則65】

規(guī)則說明:存在大對象字段。

規(guī)則描述:大對象字段將影響存取性能、耗費較多空間,建議在數(shù)據(jù)庫之外存儲。

【規(guī)則66】

規(guī)則說明:單表字段數(shù)過多。

規(guī)則閾值:自定義(字段數(shù))。

規(guī)則描述:表字段數(shù)過多,將造成記錄過長,單頁存儲記錄數(shù)減少。可考慮拆表處理。

【規(guī)則67】

規(guī)則說明:單表字段定義長度過長。

規(guī)則閾值:自定義(字段長度,單位字節(jié))。

規(guī)則描述:應控制單表定義長度,避免過長記錄。

【規(guī)則68】

規(guī)則說明:單表主鍵字段定義長度過長。

規(guī)則閾值:自定義(字段長度,單位字節(jié))。

規(guī)則描述:應控制主鍵字段長度,過長的主鍵字段會造成索引空間消耗過大。

【規(guī)則69】

規(guī)則說明:表沒有定義時間戳字段。

規(guī)則描述:時間戳字段是獲取增量數(shù)據(jù)的最佳方法,請為表定義時間戳字段。

【規(guī)則70】

規(guī)則說明:字段數(shù)據(jù)類型定義錯誤。

規(guī)則閾值:自定義(記錄數(shù))。

規(guī)則描述:根據(jù)字段保存內容判斷,字段類型定義異常,建議選擇適合的數(shù)據(jù)類型。

4.5 其他對象

【規(guī)則71】

規(guī)則說明:單表存在函數(shù)、存儲過程、觸發(fā)器。

規(guī)則描述:存儲過程、函數(shù)、觸發(fā)器等都將消耗數(shù)據(jù)庫的計算能力,建議通過應用層保證數(shù)據(jù)約束。

五、MySQL規(guī)則(執(zhí)行計劃)

5.1 訪問路徑

【規(guī)則72】

規(guī)則說明:大表全表掃描。

規(guī)則閾值:自定義(表大小,單位GB)。

規(guī)則描述:對大表執(zhí)行了全表掃描操作。

5.2 SELECT_TYPE

【規(guī)則73】

規(guī)則說明:DEPENDENT UNION

【規(guī)則74】

規(guī)則說明:SUBQUERY

【規(guī)則75】

規(guī)則說明:DEPENDENT SUBQUERY

【規(guī)則76】

規(guī)則說明:MATERIALIZED

【規(guī)則77】

規(guī)則說明:UNCACHEABLE SUBQUERY

【規(guī)則78】

規(guī)則說明:UNCACHEABLE UNION

5.3 ACCESS_TYPE

【規(guī)則79】

規(guī)則說明:fulltext

【規(guī)則80】

規(guī)則說明:index_merge

【規(guī)則81】

規(guī)則說明:unique_subquery

【規(guī)則82】

規(guī)則說明:all

【規(guī)則83】

規(guī)則說明:index range

5.4 其他執(zhí)行計劃

【規(guī)則84】

規(guī)則說明:使用臨時表。

規(guī)則描述:執(zhí)行過程中使用了臨時表,執(zhí)行計劃中包括"using temporary"。

【規(guī)則85】
規(guī)則說明:使用磁盤排序。

規(guī)則描述:執(zhí)行計劃中使用了磁盤排序,執(zhí)行計劃中包含"using filesort"字樣。

六、MySQL規(guī)則(執(zhí)行特征)

6.1 執(zhí)行特征

【規(guī)則86】

規(guī)則說明:index_ratio

【規(guī)則87】

規(guī)則說明:lock_time_sum

七、Oracle+MySQL(語句級)

7.1 查詢類

【規(guī)則88】

規(guī)則說明:select *

規(guī)則描述:禁止使用select *,必須明確選擇所需的列。

【規(guī)則89】

規(guī)則說明:重復查詢子句。

規(guī)則描述:禁止使用重復的查詢子句,應使用with as替換子句(僅限Oracle)來提升SQL執(zhí)行效率。

【規(guī)則90】

規(guī)則說明:查詢字段引用函數(shù)。

規(guī)則描述:禁止在查詢字段中引用函數(shù)(類型轉換函數(shù)、函數(shù)索引情況可忽略)。

【規(guī)則91】

規(guī)則說明:嵌套select子句。

規(guī)則描述:禁止出現(xiàn)select子句的嵌套子查詢,避免出現(xiàn)性能問題。

【規(guī)則92】

規(guī)則說明:出現(xiàn)union。

規(guī)則描述:防止出現(xiàn)不必要的排序動作。

【規(guī)則93】

規(guī)則說明:多個過濾條件通過or連接。

規(guī)則描述:防止優(yōu)化器出現(xiàn)選擇異常。

【規(guī)則94】

規(guī)則說明:謂詞條件使用like '%xxx'

規(guī)則描述:無法使用索引。

【規(guī)則95】
規(guī)則說明:謂詞中存在負向操作符。

規(guī)則描述:!=,<>,!<,!>,not exists,not。

【規(guī)則96】

規(guī)則說明:存在子查詢情況。

規(guī)則描述:這個要區(qū)分位置(select、from、where、having等部分)。

【規(guī)則97】

規(guī)則說明:存在三個以上的表關聯(lián)。

【規(guī)則98】

規(guī)則說明:存在全連接或外連接。

規(guī)則描述:cross join或outer join情況。

7.2 變更類

【規(guī)則99】

規(guī)則說明:update中出現(xiàn)order by子句。

規(guī)則描述:防止更新過程中出現(xiàn)不必要的排序。

【規(guī)則100】

規(guī)則說明:update中必須出現(xiàn)where子句。

規(guī)則描述:防止出現(xiàn)意外的全部更新動作。

【規(guī)則101】
規(guī)則說明:更新主鍵。

規(guī)則描述:禁止出現(xiàn)更新主鍵的情況。

【規(guī)則102】

規(guī)則說明:delete中出現(xiàn)order by子句。

規(guī)則描述:防止刪除過程出現(xiàn)不必要的排序。

【規(guī)則103】

規(guī)則說明:delete中必須出現(xiàn)where子句。

規(guī)則描述:防止出現(xiàn)意外的全部刪除動作。

【規(guī)則104】

規(guī)則說明:新增SQL文本過長規(guī)則。

【規(guī)則105】

規(guī)則說明:新增IN List元素過多。

作者:韓鋒

首發(fā)于作者個人公號《韓鋒頻道》。

來源:宜信技術學院

網頁名稱:宜信的105條數(shù)據(jù)庫軍規(guī)
轉載來于:http://www.chinadenli.net/article18/jsgddp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供手機網站建設虛擬主機企業(yè)網站制作建站公司網站排名網站改版

廣告

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

成都做網站