乙個簡單的sql語句:select count(1) from tablename with(nolock) where columna=a and columnb=b and columnc=c,被乙個關鍵頁面呼叫,雖然加了memcache快取,但由於資料結構設計問題,造成了資料庫伺服器cpu負載高達100%,關鍵頁面響應超時,造成極其不好的影響。
為了徹底解決該問題,花費了幾個工作日,血淋淋的教訓。如果開發之前設計好資料結構建好索引、如果開發測試的時候關注下資料量、如果把寫好的sql語句放到查詢分析器分析下效能...做設計寫程式,意識不能少,開發前的設計要做到位,開發流程要把握好,否則發生杯具只能自己埋單了。
上文摘自http://www.cnblogs.com/freshman0216/archive/2010/11/02/1866788.html
這裡結合自己最近的工作說明一下自己的體會。
正如上文所言。在資料庫設計之初建表之時的前提對業務流進行了很好的理解規劃,然後進行資料庫設計。
在需求的基礎上利用物件導向的概念和面向介面的概念提煉出相應的屬性對應的表及其字段。
其實對於這個階段把資料庫設計好後應該在結合第一階段的業務利用tdd思考
這個表的這個字段真的這麼有必要嗎?這個表是不是應該預留出一到2個字段以備擴充套件用
這個表在整個業務中使用是否頻繁,頻繁的話是否應該進行加鎖控制,或者說在讀取上效率如何保證
主鍵是否真的有必要,索引是否建立的及時和到位。因為開發人員或者說測試人員尤其是對於我們的公司而言能夠造就100條資料就不錯了。但是客戶呢 有沒有換位思考呢?
表資料量較多及併發量較大時,如何修改表結構
現在假設乙個場景 假設乙個系統已經執行一段時間,資料量已經很大,這時候系統公升級,有張表需要增加個字段,但是併發量白天晚上都很大,請問怎麼修改表結構?修改表結構會導致表鎖,資料量大修改資料很長,導致大量使用者阻塞,無法訪問該如何解決?首先建立乙個和你要執行的alter操作的表一樣的空的表結構。執行我...
表的資料量特別大時是怎麼處理的
1 索引優化和sql語句優化是必須的,避免模糊查詢和非索引查詢,刪改操作根據聚集索引進行,刪改操作太頻繁的話還是需要考慮分表 2 看需求,如果需求不限制,那就分表 分割槽會增加管理複雜度和成本這個很難理解,分割槽增加不了多少工作,如果需求要求必須單錶,分割槽是解決在千萬到幾億資料量的比較合適的方法 ...
大資料量的系統的資料庫結構如何設計?
1 把你表中經常查詢的和不常用的分開幾個表,也就是橫向切分 2 把不同型別的分成幾個表,縱向切分 3 常用聯接的建索引 4 伺服器放幾個硬碟,把資料 日誌 索引分盤存放,這樣可以提高io吞吐率 5 用優化器,優化你的查詢 6 考慮冗餘,這樣可以減少連線 7 可以考慮建立統計表,就是實時生成總計表,這...