麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 數(shù)據(jù)庫(kù) > 文庫(kù) > 正文

高手論數(shù)據(jù)庫(kù)設(shè)計(jì)優(yōu)化策略教程

2024-09-07 22:12:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  數(shù)據(jù)庫(kù)設(shè)計(jì)是建立數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)的技術(shù),是信息系統(tǒng)開發(fā)和建設(shè)中的核心技術(shù),由于數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的復(fù)雜性,為了支持相關(guān)程序運(yùn)行,數(shù)據(jù)庫(kù)設(shè)計(jì)就變得異常復(fù)雜,因此最佳設(shè)計(jì)不可能一蹴而就,而只能是一種“反復(fù)探尋,逐步求精”的過(guò)程.
 
  1)范式和反范式
 
  第一范式:每一列都是一個(gè)不可分割的原子數(shù)據(jù)項(xiàng).
 
  第二范式:第一范式基礎(chǔ)上消除部分依賴.
 
  第三范式:第二范式基礎(chǔ)上消除傳遞依賴.
 
  反范式是針對(duì)第三范式來(lái)說(shuō)的,通過(guò)添加冗余的方式破壞了第三范式,前兩個(gè)范式還是要遵循的.
 
  范式的優(yōu)點(diǎn):
 
  a.寫入快,因?yàn)椴恍枰獙懭哂鄶?shù)據(jù),所以減少了寫的負(fù)擔(dān).
 
  b.更新快,因?yàn)橥ǔV恍枰赂俚臄?shù)據(jù).
 
  c.由于沒(méi)有冗余,所以不會(huì)造成數(shù)據(jù)不一致.
 
  d.更少的需要GROUP BY和DISTINCT。
 
  缺點(diǎn)是:需要關(guān)聯(lián).
 
  范式的缺點(diǎn),就是反范式的優(yōu)點(diǎn),不需要關(guān)聯(lián),并且因?yàn)樵谕粋€(gè)表中,可以設(shè)計(jì)合適的索引,實(shí)際應(yīng)用中通常不會(huì)采用完成的范式,而是放置一些冗余,以減少表與表的關(guān)聯(lián),加快查詢速度.
 
  筆者之前所從事的項(xiàng)目中,數(shù)據(jù)包含定義態(tài)的和實(shí)例態(tài)的,實(shí)例態(tài)的冗余了定義態(tài)的數(shù)據(jù),實(shí)例態(tài)又分多個(gè)級(jí)別,低級(jí)別的實(shí)例表,冗余了高級(jí)別表的數(shù)據(jù),這樣在一個(gè)事務(wù)中都是單表查詢,減少了表關(guān)聯(lián).
 
  2)分表
 
  如果表中的數(shù)據(jù)有狀態(tài),比如完成態(tài)和運(yùn)行態(tài),那么可以考慮將表分為運(yùn)行態(tài)和完成態(tài)數(shù)據(jù),數(shù)據(jù)轉(zhuǎn)換到完成態(tài)時(shí)可以將數(shù)據(jù)歸檔到完成態(tài)表中,由于數(shù)據(jù)總是要運(yùn)轉(zhuǎn)到完成態(tài),所以這樣無(wú)論系統(tǒng)運(yùn)行多長(zhǎng)時(shí)間,運(yùn)行態(tài)表中的數(shù)據(jù)幾乎都是恒定的,而且完成態(tài)的數(shù)據(jù)除了統(tǒng)計(jì)分析用外,幾乎不不需要查詢,這樣就大大提高了系統(tǒng)運(yùn)行的速度,表中的數(shù)據(jù)量得到了控制。
 
  另外對(duì)于統(tǒng)計(jì)分析的場(chǎng)景,為了減少表的union 可以要求業(yè)務(wù)查詢從運(yùn)行態(tài)和完成態(tài)兩種狀態(tài)中二選一,對(duì)于一些海量數(shù)據(jù),也可以考慮根據(jù)某個(gè)字段的值做hash,來(lái)分表存儲(chǔ),當(dāng)然這加大了應(yīng)用的復(fù)雜度,這沒(méi)辦法,通常沒(méi)有十全十美的辦法,架構(gòu)就是根據(jù)實(shí)際應(yīng)用場(chǎng)景做權(quán)衡,正所謂忠孝不能兩全,只是某種辦法更合適而已。
 
  另外可以通過(guò)分布式數(shù)據(jù)庫(kù)解決分表的問(wèn)題,由分布式數(shù)據(jù)庫(kù)自動(dòng)分表存儲(chǔ),查詢時(shí)自動(dòng)合并,由分布式數(shù)據(jù)庫(kù)中間件類屏蔽復(fù)雜性,各種臟活、累活交給它就是了。
 
  3)匯總表
 
  對(duì)于一些大數(shù)據(jù)量的報(bào)表統(tǒng)計(jì)工作,如果不是要求實(shí)時(shí)的話,可以定期匯總,比如每小時(shí)匯總一次或者每天匯總一次,如果要求實(shí)時(shí)的話,由于各種大表,各種group by,不但統(tǒng)計(jì)非常慢,而且容易影響正常的業(yè)務(wù)操作。筆者之前待的公司,每天晚上都開各種各樣的定時(shí)任務(wù)進(jìn)行數(shù)據(jù)匯總,在數(shù)據(jù)庫(kù)不太忙的晚上,從12點(diǎn)干到早上6點(diǎn),定時(shí)任務(wù)排的滿滿的,真是累死它的節(jié)奏啊,還好計(jì)算機(jī)不會(huì)鬧脾氣,發(fā)飆。。當(dāng)然這樣報(bào)表統(tǒng)計(jì)的數(shù)據(jù)是截止到昨天的,每次都晚一天,通常這是允許的。
 
  4)計(jì)數(shù)器表
 
  web應(yīng)用為了記錄點(diǎn)擊次數(shù),可以設(shè)計(jì)一個(gè)點(diǎn)擊次數(shù)表,create table hit_counter(cnt int unsigned not null);由于只有一條記錄這樣鎖爭(zhēng)用太嚴(yán)重,想到了什么解決方案,同concurrenthashmap一樣做鎖拆分。
 
  表結(jié)構(gòu)修改為:
 
  create table hit_counter(slot tinyint unsigned not null primary key,cnt int unsigned not null);--phpfensi.com
 
  預(yù)先放入100條數(shù)據(jù),這樣修改的時(shí)候可以使用如下語(yǔ)句,update hit_counter set cnt = cnt+1 where slot = RAND()*100;獲取的時(shí)候求和就可以了,select sum(cnt) cnt from hit_counter;不知道iteye的博客計(jì)數(shù)是不是也采用了類似的設(shè)計(jì).
 
 

(編輯:武林網(wǎng))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 特黄一区二区三区 | 亚洲欧美在线视频免费 | 欧美精品毛片 | h视频在线播放 | 中文在线国产 | 免费午夜视频 | 欧美日韩亚洲成人 | 在线观看国产一区二区 | 国产亚洲精品影达达兔 | 久久亚洲美女视频 | 97伦理| 成人wxx视频免费 | 久久黄色影院 | 成人情欲视频在线看免费 | 91在线视频播放 | 亚洲一区免费观看 | 在线成人免费网站 | 免费a级观看 | 黄色一级片在线免费观看 | 99影视在线视频免费观看 | 视频h在线 | 欧洲伊人网 | 视频二区国产 | 男女无遮挡羞羞视频 | 欧美日韩亚洲成人 | 国产免费久久久久 | 欧美一级在线看 | 羞羞网站 | 欧美aaaaa一级毛片在线 | 九九热九九 | 亚州欧美在线 | 鲁丝一区二区三区不属 | 欧美女孩videos | 综合日韩av | 亚洲影院在线 | 色玖玖综合 | 视频一区 中文字幕 | 欧美日韩在线视频观看 | 欧美成人做爰高潮片免费视频 | 久久亚洲精品久久国产一区二区 | 视频一区二区中文字幕 |