資料庫優化

2022-05-04 02:18:12 字數 1467 閱讀 1844

資料庫優化最主要的目標是減少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操作 的列上建立索引...