亚洲一区精品自拍_2021年国内精品久久_男同十八禁gv在线观看_免费观看a级性爱黄片

Article / 文章中心

最強(qiáng)MySQL數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范...(三)

發(fā)布時(shí)間:2022-02-16 點(diǎn)擊數(shù):865

2.2.2 多表銜接

  1. 【強(qiáng)制】制止跨db的join句子。由于這樣可以減少模塊間耦合,為數(shù)據(jù)庫(kù)拆分奠定堅(jiān)實(shí)基礎(chǔ)。
  2. 【強(qiáng)制】制止在業(yè)務(wù)的更新類(lèi)SQL句子中運(yùn)用join,比方update t1 join t2…。
  3. 【主張】不主張運(yùn)用子查詢(xún),主張將子查詢(xún)SQL拆開(kāi)結(jié)合程序多次查詢(xún),或運(yùn)用join來(lái)替代子查詢(xún)。
  4. 【主張】線上環(huán)境,多表join不要超越3個(gè)表。
  5. 【主張】多表銜接查詢(xún)推薦運(yùn)用別號(hào),且SELECT列表中要用別號(hào)引用字段,數(shù)據(jù)庫(kù).表格局,如select a from db1.table1 alias1 where …。
  6. 【主張】在多表join中,盡量選取結(jié)果集較小的表作為驅(qū)動(dòng)表,來(lái)join其他表。

2.2.3 業(yè)務(wù)

  1. 【主張】業(yè)務(wù)中INSERT|UPDATE|DELETE|REPLACE句子操作的行數(shù)操控在2000以?xún)?nèi),以及WHERE子句中IN列表的傳參個(gè)數(shù)操控在500以?xún)?nèi)。
  2. 【主張】批量操作數(shù)據(jù)時(shí),需求操控業(yè)務(wù)處理間隔時(shí)間,進(jìn)行必要的sleep,一般主張值5-10秒。
  3. 【主張】對(duì)于有auto_increment屬性字段的表的刺進(jìn)操作,并發(fā)需求操控在200以?xún)?nèi)。
  4. 【強(qiáng)制】程序設(shè)計(jì)有必要考慮“數(shù)據(jù)庫(kù)業(yè)務(wù)阻隔級(jí)別”帶來(lái)的影響,包括臟讀、不可重復(fù)讀和幻讀。線上主張業(yè)務(wù)阻隔級(jí)別為repeatable-read。
  5. 【主張】業(yè)務(wù)里包含SQL不超越5個(gè)(付出業(yè)務(wù)除外)。由于過(guò)長(zhǎng)的業(yè)務(wù)會(huì)導(dǎo)致鎖數(shù)據(jù)較久,MySQL內(nèi)部緩存、銜接耗費(fèi)過(guò)多等雪崩問(wèn)題。
  6. 【主張】業(yè)務(wù)里更新句子盡量基于主鍵或unique key,如update … where id=XX; 否則會(huì)發(fā)生間隙鎖,內(nèi)部擴(kuò)展確定規(guī)模,導(dǎo)致系統(tǒng)功能下降,發(fā)生死鎖。
  7. 【主張】盡量把一些典型外部調(diào)用移出業(yè)務(wù),如調(diào)用webservice,拜訪文件存儲(chǔ)等,然后防止業(yè)務(wù)過(guò)長(zhǎng)。
  8. 【主張】對(duì)于MySQL主從推遲嚴(yán)格靈敏的select句子,請(qǐng)敞開(kāi)業(yè)務(wù)強(qiáng)制拜訪主庫(kù)。

2.2.4 排序和分組

  1. 【主張】減少運(yùn)用order by,和業(yè)務(wù)溝通能不排序就不排序,或?qū)⑴判蚍诺匠绦蚨巳プ?。order by、group by、distinct這些句子較為耗費(fèi)CPU,數(shù)據(jù)庫(kù)的CPU資源是極端名貴的。
  2. 【主張】order by、group by、distinct這些SQL盡量運(yùn)用索引直接檢索出排序好的數(shù)據(jù)。如where a=1 order by可以運(yùn)用key(a,b)。
  3. 【主張】包含了order by、group by、distinct這些查詢(xún)的句子,where條件過(guò)濾出來(lái)的結(jié)果集請(qǐng)保持在1000行以?xún)?nèi),否則SQL會(huì)很慢。

2.2.5 線上制止運(yùn)用的SQL句子

  1. 【高?!拷胾pdate|delete t1 … where a=XX limit XX;這種帶limit的更新句子。由于會(huì)導(dǎo)致主從不一致,導(dǎo)致數(shù)據(jù)錯(cuò)亂。主張加上order by PK。
  2. 【高?!恐浦惯\(yùn)用關(guān)聯(lián)子查詢(xún),如update t1 set … where name in(select name from user where…);功率極端低下。
  3. 【強(qiáng)制】禁用procedure、function、trigger、views、event、外鍵約束。由于他們耗費(fèi)數(shù)據(jù)庫(kù)資源,下降數(shù)據(jù)庫(kù)實(shí)例可擴(kuò)展性。推薦都在程序端完成。
  4. 【強(qiáng)制】禁用insert into …on duplicate key update…在高并發(fā)環(huán)境下,會(huì)造成主從不一致。
  5. 【強(qiáng)制】制止聯(lián)表更新句子,如update t1,t2 where t1.id=t2.id…。