a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 數據庫 > 文庫 > 正文

高手論數據庫設計優化策略教程

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

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 羞羞视频网站在线看 | 精品视频在线免费观看 | 久久九九国产精品 | 日韩av电影观看 | 中文字幕天天操 | 亚洲成人av在线播放 | 噜噜噜噜狠狠狠7777视频 | 中文字幕一区二区三区四区五区 | 伦理午夜电影免费观看 | 中文字幕a视频 | 亚洲成人激情在线观看 | 三级黄色网址 | 91中文在线观看 | 日韩成人三级 | 蜜臀av在线播放一区二区三区 | 国产成人精品视频 | 男人视频网站 | 中文字幕av亚洲精品一部二部 | 日本在线黄色 | 少妇被粗大的猛烈进大胸视频 | 日韩亚洲欧美一区二区 | 特级黄色毛片 | 超碰伊人网 | 日本在线观看视频 | 日韩精品一区二区三区中文在线 | caoporon| 手机看片福利视频 | 欧美日韩高清在线 | 精品三级在线观看 | 亚洲在线视频 | 亚洲视频在线一区二区 | 人人鲁人人莫一区二区三区 | 最新日韩在线观看视频 | 久久精品久久久久久久久久久久久 | 久久国产视频一区二区 | 欧洲精品久久久 | 91麻豆精品国产91久久久久久 | 国产成人在线视频网站 | 99re6在线 | 伊人狠狠干 | 日本成人午夜影院 |