資料庫優化最主要的目標是減少io,採用的方法為分布式儲存,合理優化表結構設計
快取redis,用記憶體替代io,適合對一致性要求不高的任務
資料庫優化
大資料切分的核心:把乙個資料庫切分成多個放到不同的資料庫(表)上,緩解資料庫壓力
根據資料的特性,把一堆的資料進行切分,避免從硬碟頻繁讀無效的資料
乙個資料庫有幾百張表,好查詢,在同乙個庫中,問題是表多定址就慢
方式:垂直切分(表多)在dao層改變,庫名.表名,在底層只需要修改庫名
規則避免資料重複,雜亂,適合耦合度低,相互影響小,業務邏輯清晰,拆分規則簡單
按表的相關性劃分,關係緊密表(比如某個模組的表)放在一起進入乙個庫,把乙個資料庫切分成幾個小庫(把資料庫分類,把錶分類,把類似的表放到同乙個庫,表量少,查詢快,幾個庫沒有關聯,耦合度低,對應用層影響不大減少io)
水平且分(單錶資料多)
id雜湊,id求餘,1000件衣服找1件,要難於100件找1件
切完方便程式的呼叫
某個欄位的某種規則分散到多個表中,每個表包含一部分資料,規則簡單,表不要太散
適合資料量巨大,變動不大的表
同乙個表的資料,切分到不同的資料庫或表中,對於應用程式,拆分規則本身和後期的資料維護有些複雜
表中有時間或日期字段,用日期歸檔適用於日增長量比較大
常用方法:
id雜湊,日期歸檔
垂直切分和水平切分柔和在一起,將資料庫切成分布式矩陣,先垂直在水平
大資料只是庫中某幾個表資料量大,如果所有表資料量都大,那資料庫設計有問題
切分帶來的常見問題
進行切分,跨庫(節點)的join(要盡量避免)
解決辦法,把join拆分兩個子查詢,第一次查詢的結果,作為第二次查詢的的條件
跨節點count,order by,group by(後兩者耗記憶體,在記憶體排序)
分別在各個節點查詢結果後,在記憶體中進行合併,切分好,join少,減少大量的跨節點操作,設計好切分規則
分布式儲存的思想,切完後存放即解決方案
不會影響資料庫效能,軟解析越多越好,快取命中率高,sql執行率高
問題如何針對websocket如何加壓?
在http協議上做了個性化新增,從客戶端在webhttp協議上新增了一些其他協議,http是無狀態,短連線的
當頁面不停的往伺服器請求,socket是長連線有狀態的,在web的協議上開放乙個socket埠,方便與伺服器輪迴的互動
效能測試過程中持續併發導致資料庫連線數不足,是測試方案不對(不應該持續應的併發)還是資料庫的io占用的太多頻繁呢
連線數不足,資料庫連線池配置等問題,占用資源沒有釋放等
資料庫優化 資料庫設計優化
一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...
資料庫引擎優化顧問優化資料庫
現在一直在做的專案,資料量相對也不小,開始的時候沒有覺得,因為是剛開始,資料量還很小,在程式使用過程中速度還挺快,但是隨著資料量的不停的增長,發現程式越來越慢,甚至出現了超時的問題,因此要對程式和資料庫進行優化,前期專案比較緊,沒有針對大資料量業務進行分析設計,所以索引等相關優化沒有做到位,通過後期...
資料庫優化
資料庫優化 1 合理使用索引 索引是資料庫中重要的資料結構,它的根本目的就是提高查詢效率。索引的使用要恰到好處,其使用原則如下 在經常進行連線,但是沒有指定為外來鍵的列上建立索引,而不經常連線的字段則由優化器自動生成索引 在頻繁進行排序或分組 即進行groupby或orderby操作 的列上建立索引...