欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
宜信的105條數據庫軍規

摘要:本文介紹宜信105條數據庫軍規,幫助研發(fā)團隊評估數據庫開(kāi)發(fā)質(zhì)量,達到盡早發(fā)現問(wèn)題解決問(wèn)題的目標。

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

如上圖所示,針對規則部分又可細分為如下分類(lèi)(部分)。簡(jiǎn)單描述如下,后面將逐一詳細說(shuō)明。

一、Oracle規則(對象)

1.1 表、分區

【規則1】

規則說(shuō)明:超過(guò)指定規模且沒(méi)有分區的表。

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

規則描述:表的規模過(guò)大,將影響表的訪(fǎng)問(wèn)效率、增加維護成本等。常見(jiàn)的解決方案就是使用分區表,將大表轉換為分區表。

【規則2】

規則說(shuō)明:?jiǎn)伪砘騿畏謪^記錄數量過(guò)大。

規則閾值:1000000(單表或單分區記錄數超過(guò)指定閥值)。

規則描述:控制單個(gè)表或單個(gè)分區的數據規模,提高單一對象的訪(fǎng)問(wèn)效率。如記錄數過(guò)多,應考慮分庫、分表、分區等策略。

【規則3】

規則說(shuō)明:大表過(guò)多。

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

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

【規則4】

規則說(shuō)明:?jiǎn)伪矸謪^數量過(guò)多。

規則閾值:500(單表分區數量超過(guò)指定閥值)。

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

【規則5】

規則說(shuō)明:分區表數量過(guò)多。

規則閾值:2000(分區表數量超過(guò)指定閥值)。

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

【規則6】

規則說(shuō)明:復合分區數量過(guò)多。

規則閾值:5(復合分區數量超過(guò)指定閥值)。

規則描述:同上面分區表數量過(guò)多理由類(lèi)似(含有復合分區表的數量)。

【規則7】

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

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

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

1.2 索引

【規則8】

規則說(shuō)明:外鍵沒(méi)有索引的表。

規則描述:外鍵沒(méi)有索引會(huì )導致主子表關(guān)聯(lián)查詢(xún)時(shí),關(guān)聯(lián)效率很低。

【規則9】

規則說(shuō)明:組合索引數量過(guò)多或沒(méi)有索引。

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

【規則10】

規則說(shuō)明:?jiǎn)伪硭饕龜盗窟^(guò)多。

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

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

【規則11】

規則說(shuō)明:存在7天內沒(méi)有使用的索引。

規則描述:在數據庫一段時(shí)間內,該索引沒(méi)有被任何SQL語(yǔ)句使用。請評估此索引的有效性。

【規則12】

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

【規則13】

規則說(shuō)明:存在全局分區索引。

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

【規則14】

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

【規則15】

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

規則閾值:4。

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

【規則16】

規則說(shuō)明:存在位圖索引。

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

【規則17】

規則說(shuō)明:存在函數索引。

【規則18】

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

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

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

【規則19】

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

規則閾值:自定義。

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

1.3 約束

【規則20】

規則類(lèi)別:約束。

規則說(shuō)明:沒(méi)有主鍵的表。

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

【規則21】

規則類(lèi)別:約束。

規則說(shuō)明:使用外鍵的表。

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

1.4 字段

【規則22】

規則說(shuō)明:表字段過(guò)多。

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

規則描述:字段過(guò)多,會(huì )導致記錄長(cháng)度過(guò)大。單個(gè)數據存儲單元將保存的記錄數過(guò)少,影響訪(fǎng)問(wèn)效率。

【規則23】

規則說(shuō)明:包含有大字段類(lèi)型的表。

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

【規則24】

規則說(shuō)明:記錄長(cháng)度定義過(guò)長(cháng)。

規則描述:記錄定義長(cháng)度與實(shí)際存儲長(cháng)度差異過(guò)大,請考慮字段類(lèi)型定義是否合理,個(gè)別字段過(guò)長(cháng)是否可分表存儲。

【規則25】 規則說(shuō)明:不包含時(shí)間戳字段的表。

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

【規則26】

規則說(shuō)明:表字段類(lèi)型不匹配。

規則描述:此規則會(huì )抽樣部分數據,分析其定義類(lèi)型與存儲類(lèi)型是否相符。常見(jiàn)問(wèn)題如用數字、文本保存日期等。

1.5 其他對象

【規則27】

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

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

規則描述:系統默認會(huì )緩存20,如過(guò)小將導致頻繁查詢(xún)數據字典,影響并發(fā)能力。

【規則28】

規則說(shuō)明:存在存儲過(guò)程及函數度。

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

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

【規則29】

規則說(shuō)明:存在觸發(fā)器。

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

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

【規則30】

規則說(shuō)明:存在DBLINK。

規則描述:不建議在一個(gè)數據庫中訪(fǎng)問(wèn)其他數據庫,請考慮在應用端解決。

二、Oracle規則(執行計劃)

2.1 綁定變量

【規則31】

規則說(shuō)明:未使用綁定變量。

規則閾值:自定義(執行次數)。

規則描述:執行次數超過(guò)一定閥值的語(yǔ)句,謂詞右側存在常量值。

【規則32】

規則說(shuō)明:綁定變量的數量過(guò)多。

規則閾值:自定義(綁定變量的個(gè)數)。

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

2.2 表間關(guān)聯(lián)

【規則33】

規則說(shuō)明:笛卡爾積。

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

【規則34】

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

規則閾值:自定義(層次數)。

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

【規則35】 規則說(shuō)明:嵌套循環(huán)內層表訪(fǎng)問(wèn)方式為全表掃描。

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

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

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

【規則37】

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

規則閾值:自定義(表個(gè)數)。

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

2.3 訪(fǎng)問(wèn)路徑

【規則38】

規則說(shuō)明:大表全表掃描。

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

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

【規則39】

規則說(shuō)明:大索引全掃描。

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

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

【規則40】

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

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

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

【規則41】

規則說(shuō)明:索引跳躍掃描。

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

【規則42】

規則說(shuō)明:分區全掃描。

規則描述:對分區表進(jìn)行了全分區掃描,執行計劃中含有“PARTITION RANGE ALL”字樣。

【規則43】

規則說(shuō)明:非連續分區掃描。

規則描述:非連續分區掃描,執行計劃中含有“PARTITION RANGE INLIST”或“PARTITION RANGE OR”字樣。

【規則44】

規則說(shuō)明:跨分區掃描。

規則描述:連續的分區掃描,執行計劃中含有“PARTITION RANGE ITERATOR”字樣。

2.4 類(lèi)型轉換

【規則45】

規則說(shuō)明:存在隱式轉換。

規則描述:在條件判斷中使用了隱式數據類(lèi)型轉換。

2.5 其他執行計劃

【規則46】

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

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

【規則47】

規則說(shuō)明:存在并行訪(fǎng)問(wèn)特征。

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

【規則48】

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

三、Oracle規則(執行特征)

3.1 執行特征

【規則49】

規則說(shuō)明:掃描塊數與返回記錄數比例過(guò)低。

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

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

【規則50】

規則說(shuō)明:子游標過(guò)多。

規則閾值:自定義(子游標數)。

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

【規則51】

規則說(shuō)明:elapsed_time。

規則閾值:自定義。

【規則52】

規則說(shuō)明:cpu_time

規則閾值:自定義

【規則53】

規則說(shuō)明:buffer_gets

規則閾值:自定義

【規則54】

規則說(shuō)明:disk_reads

規則閾值:自定義

【規則55】

規則說(shuō)明:direct_writes

規則閾值:自定義

【規則56】

規則說(shuō)明:executions

規則閾值:自定義

四、MySQL規則(對象)

4.1 表、分區

【規則57】

規則說(shuō)明:超過(guò)指定規模且沒(méi)有分區的表。

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

規則描述:表的規模過(guò)大,將影響表的訪(fǎng)問(wèn)效率、增加維護成本等。常見(jiàn)的解決方案就是使用分區表,將大表轉換為分區表。

【規則58】

規則說(shuō)明:?jiǎn)螏鞌祿磉^(guò)多。

規則閾值:自定義(表個(gè)數)。

規則描述:?jiǎn)螏鞌祿磉^(guò)多,將影響整體性能。必要時(shí),進(jìn)行業(yè)務(wù)邏輯的垂直拆分。

【規則59】

規則說(shuō)明:?jiǎn)伪?分區)數據量過(guò)大。

規則閾值:自定義(數據規模,記錄數)。

規則描述:?jiǎn)伪?分區)數據表過(guò)多,將影響整體性能。必要時(shí),進(jìn)行分庫、分表或定期清理、歸檔數據。

4.2 索引

【規則60】

規則說(shuō)明:?jiǎn)伪硭饕龜盗窟^(guò)多。

規則閾值:自定義(索引數量)。

規則描述:?jiǎn)伪硭饕龜盗窟^(guò)多,不僅維護成本高,而且占用更多的空間。

【規則61】

規則說(shuō)明:存在重復索引。

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

【規則62】

規則說(shuō)明:索引選擇率不高。

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

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

4.3 約束

【規則63】

規則說(shuō)明:表存在外鍵。

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

【規則64】

規則說(shuō)明:表沒(méi)有定義主鍵。

規則描述:沒(méi)有定義主鍵,MySQL會(huì )自動(dòng)創(chuàng )建主鍵。這不是一種好的設計方法。

4.4 字段

【規則65】

規則說(shuō)明:存在大對象字段。

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

【規則66】

規則說(shuō)明:?jiǎn)伪碜侄螖颠^(guò)多。

規則閾值:自定義(字段數)。

規則描述:表字段數過(guò)多,將造成記錄過(guò)長(cháng),單頁(yè)存儲記錄數減少??煽紤]拆表處理。

【規則67】

規則說(shuō)明:?jiǎn)伪碜侄味x長(cháng)度過(guò)長(cháng)。

規則閾值:自定義(字段長(cháng)度,單位字節)。

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

【規則68】

規則說(shuō)明:?jiǎn)伪碇麈I字段定義長(cháng)度過(guò)長(cháng)。

規則閾值:自定義(字段長(cháng)度,單位字節)。

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

【規則69】

規則說(shuō)明:表沒(méi)有定義時(shí)間戳字段。

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

【規則70】

規則說(shuō)明:字段數據類(lèi)型定義錯誤。

規則閾值:自定義(記錄數)。

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

4.5 其他對象

【規則71】

規則說(shuō)明:?jiǎn)伪泶嬖诤瘮?、存儲過(guò)程、觸發(fā)器。

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

五、MySQL規則(執行計劃)

5.1 訪(fǎng)問(wèn)路徑

【規則72】

規則說(shuō)明:大表全表掃描。

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

規則描述:對大表執行了全表掃描操作。

5.2 SELECT_TYPE

【規則73】

規則說(shuō)明:DEPENDENT UNION

【規則74】

規則說(shuō)明:SUBQUERY

【規則75】

規則說(shuō)明:DEPENDENT SUBQUERY

【規則76】

規則說(shuō)明:MATERIALIZED

【規則77】

規則說(shuō)明:UNCACHEABLE SUBQUERY

【規則78】

規則說(shuō)明:UNCACHEABLE UNION

5.3 ACCESS_TYPE

【規則79】

規則說(shuō)明:fulltext

【規則80】

規則說(shuō)明:index_merge

【規則81】

規則說(shuō)明:unique_subquery

【規則82】

規則說(shuō)明:all

【規則83】

規則說(shuō)明:index range

5.4 其他執行計劃

【規則84】

規則說(shuō)明:使用臨時(shí)表。

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

【規則85】 規則說(shuō)明:使用磁盤(pán)排序。

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

六、MySQL規則(執行特征)

6.1 執行特征

【規則86】

規則說(shuō)明:index_ratio

【規則87】

規則說(shuō)明:lock_time_sum

七、Oracle+MySQL(語(yǔ)句級)

7.1 查詢(xún)類(lèi)

【規則88】

規則說(shuō)明:select *

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

【規則89】

規則說(shuō)明:重復查詢(xún)子句。

規則描述:禁止使用重復的查詢(xún)子句,應使用with as替換子句(僅限Oracle)來(lái)提升SQL執行效率。

【規則90】

規則說(shuō)明:查詢(xún)字段引用函數。

規則描述:禁止在查詢(xún)字段中引用函數(類(lèi)型轉換函數、函數索引情況可忽略)。

【規則91】

規則說(shuō)明:嵌套select子句。

規則描述:禁止出現select子句的嵌套子查詢(xún),避免出現性能問(wèn)題。

【規則92】

規則說(shuō)明:出現union。

規則描述:防止出現不必要的排序動(dòng)作。

【規則93】

規則說(shuō)明:多個(gè)過(guò)濾條件通過(guò)or連接。

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

【規則94】

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

規則描述:無(wú)法使用索引。

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

規則描述:!=,<>,!<,!>,not exists,not。

【規則96】

規則說(shuō)明:存在子查詢(xún)情況。

規則描述:這個(gè)要區分位置(select、from、where、having等部分)。

【規則97】

規則說(shuō)明:存在三個(gè)以上的表關(guān)聯(lián)。

【規則98】

規則說(shuō)明:存在全連接或外連接。

規則描述:cross join或outer join情況。

7.2 變更類(lèi)

【規則99】

規則說(shuō)明:update中出現order by子句。

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

【規則100】

規則說(shuō)明:update中必須出現where子句。

規則描述:防止出現意外的全部更新動(dòng)作。

【規則101】 規則說(shuō)明:更新主鍵。

規則描述:禁止出現更新主鍵的情況。

【規則102】

規則說(shuō)明:delete中出現order by子句。

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

【規則103】

規則說(shuō)明:delete中必須出現where子句。

規則描述:防止出現意外的全部刪除動(dòng)作。

【規則104】

規則說(shuō)明:新增SQL文本過(guò)長(cháng)規則。

【規則105】

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

作者:韓鋒

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

來(lái)源:宜信技術(shù)學(xué)院

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Power Query 數據豐富,依然輕松搞定!
SQL優(yōu)化解決思路
PostgreSQL數據庫的日常維護工作 | LinuxSir.Org
java面試題 --- MySQL④
數據庫表的設計總結
你會(huì )累計求和嗎?這5個(gè)技巧簡(jiǎn)直太好用了!
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久