如何設計一個日訪問量千萬層級的系統,談oracle的進階設計和開發(1)

來源:互聯網
上載者:User

標籤:互連網   資料庫設計   oracle   語言編程   

假如要開發一個日訪問量百萬層級、甚至千萬層級訪問量的互連網平台,效能和安全是首要考慮的因素。單從效能上講,主要從以下幾個方面考慮:

1)       硬體及網路裝置;

2)       分布式、叢集、讀寫分離、CDN加速等;

3)       使用優秀的開發架構,充分利用緩衝機制;

4)       良好的資料庫設計規劃,包括資料庫叢集,關係型資料庫+非關係型資料庫結合;

5)       高效能的開發語言編程,特別是資料庫部分的編程;

等等。

 

建設一個中大型互連網平台,是有技術含金量的,拋開硬體、網路環境不說,系統的效能很大程度上取決於系統構建是否合理,系統的設計是否優良,其中資料庫端的設計和開發又是關鍵中的關鍵。

本人一直從事互連網平台的開發,也經常參與公司技術人員面試工作,針對資料庫(oracle)部分我通常會問對方二個問題:

1)       請說明char(10)、varchar2(10)和nvarchar2(10)的區別;

2)       請說出十種以上對效能最佳化有影響的做法。

面試下來的結果往往讓人失望,真正能將這兩個問題回答比較好的鳳毛麟角,這主要是因為即使是有很多工作經驗的開發人員,能有機會接觸大一點的互連網平台的機會並不多,更多的是做一些企業管理系統,幾十個,幾百個使用使用者的平台,現在的伺服器效能完全可以彌補設計上效能缺陷的不足。

 

為了能向高手們學習,針對oracle的設計及開發領域,本人將十來年互連網項目建設經驗和大家分享,不當之處,請指出,大家相互交流學習。

 

開篇之前,先簡要回答上面兩個問題。

問題1)char(10)、varchar2(10)、nchar(10)和nvarchar2(10)的區別?

Char類型是定長的,不管你是存3個字母還是9個字母,char(10)都是儲存10個位元組,不夠的部分用空格補充;varchar2(10)類型變長,存3個字母就是佔三個位元組。

錯誤觀點:varchar2類型完全可以替代char,能有效節省資料的儲存空間。

糾正:雖然從儲存空間的角度考慮,varchar2確實比char合理,但系統在處理變長類型時,需要額外的資源開銷,當然這種開銷是非常微小的,可以忽略,但當資料量大,需要處理的資料多時,累積的開銷就不能忽略了。因此,當業務明確欄位長度時,應該明確定義為char類型,如郵遞區號char(6)、性別char(1)[F表示女,M表示男]。

Nvarchar類型是針對不同字元集儲存的位元組數不同而產生的。假如要存放最多10個中文,那麼就應該定義為Nvarchar2(10),而不是varchar2(20),因為在UNICODE下一個中文由2個位元組表示,但編碼為UTF-8時,很可能是3個位元組,導致varchar2(20)無法儲存10個中文。當需要存放中文內容的時候,建議定義為nchar或nvarchar2類型。

 

問題2)請說出十種以上對效能最佳化有影響的做法。

A)有效定義索引

B)普通表資料對應的資料表空間和索引表對應的資料資料表空間分離

C)資料量大的表做分區表設計

D)資料量大的表,依據業務實際情況分拆為當前表和曆史資料表

E)欄位多的大表依據業務實際情況分拆成多個表

F)合理的欄位設計,如能char(2)的就不要定義為char(4),能number(6)明確定義的就不要定義為number或number(10),要記住1000萬條記錄的表,一個多一個位元組就是多10M

G)合理利用oracle的緩衝區,如將頻繁訪問的基礎資料表資料載入到記憶體中

H)盡量減小事務的粒度

I)合理使用物化視圖

J)必要時可以考慮表的壓縮屬性

 

待續。。。


本文出自 “知行合一” 部落格,請務必保留此出處http://connieguo.blog.51cto.com/9959230/1617573

如何設計一個日訪問量千萬層級的系統,談oracle的進階設計和開發(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.