Mysql效能優化需要考慮的因素

2021-06-05 18:15:29 字數 1710 閱讀 4486

對於程式設計師來說資料庫就是操作非常方便的資料儲存中心,希望什麼資料都存放在資料庫中,不論是需要持久化的資料,還是臨時存放的過程資料,不論是普通的純文字格式的字元資料,還是多**的二進位制資料,都喜歡全部塞如資料庫中。因為對於應用伺服器來說,資料庫很多時候都是一集中式的儲存環境,不像應用伺服器那樣可能有很多臺;而且資料庫有專門的dba 去幫忙維護,而不像應用伺服器很多時候還需要開發人員去做一些維護;還有一點很關鍵的就是資料庫的操作非常簡單統一,不像檔案操作或者其他型別的儲存方式那麼複雜。

其實正因為很多資料庫提供了豐富的儲存功能,反而一些不了解資料庫的程式設計師將一些不適合儲存在資料庫中的資料存放在資料庫中

以下幾種資料庫是不適合在資料庫中存放的

1.二進位制多**資料

2. 流水佇列資料:需要頻繁的向資料庫中

3. 超大文字資料

什麼資料適合被快取?變更較少,訪問頻繁的資料在web應用中有些活躍的資料是不經常改變的,既然不經常改變,我們就應該考慮是否每次都有必要去查詢資料庫,答案是沒有必要的,下面這幾類資料適合被快取

1.系統配置資訊和規則資料

2.活躍使用者的基本資訊,使用者登入之後很少去修改自己的基本資訊

3.使用者的個性化等值資料

4.準實時的統計資訊資料:就是基於一定時間段做一次更新操作

下面大概列舉了一些較為常見的架構設計實現不當帶來的效能問題和資源浪費情況。1、cache 系統的不合理利用導致cache 命中率低下造成資料庫訪問量的增加,同時也浪費了cache

系統的硬體資源投入;

2、過度依賴物件導向思想,對系統

3、對可擴充套件性的過渡追求,促使系統設計的時候將物件拆得過於離散,造成系統中大量的複雜join

語句,而mysql server 在各資料庫系統中的主要優勢在於處理簡單邏輯的查詢,這與其鎖定的機制也有

較大關係;

4、對資料庫的過渡依賴,將大量更適合存放於檔案系統中的資料存入了資料庫中,造成資料庫資源

的浪費,影響到系統的整體效能,如各種日誌資訊;

5、過度理想化系統的使用者體驗,使大量非核心業務消耗過多的資源,如大量不需要實時更新的資料

做了實時統計計算。

不同的sql語句被直譯器分析後執行的效率和占用的資源是不同的必要的時候資料庫設計可以用空間換時間

上面兩個表(貼子基本資訊表,和貼子內容表)是用來儲存使用者提交的貼子,我們從表中可以看到裡面有乙個user_id 和author欄位,二者是對應的,有人說了,通過user_id級聯到user表中可以得到姓名啊,那麼要author不是多餘麼? 因為一般情況下我們檢視貼子的內容都是只看姓名,如果又該字段就不用表之間的級聯了,對於大資料量訪問,提高的效能是很可觀的

另一種是將乙個表拆分成兩個表,我們觀察一下第二個表,只有兩個字段,有些人覺得把把這兩個表合在一起也行啊,我們知道貼子的內容一般很多的,這樣的話查詢帖子的時候我們需要遍歷每個條帖子的內容,如果貼子的數量成百上千萬,開銷是很大的,如果把帖子單獨放在乙個表中的話,我們可以通過基本資訊表的到貼子id,不需要遍歷複雜的內容字段,然後根據帖子id直接定位到內容表去查詢內容即可。

mysql的效能優化 mysql效能優化

檢視安裝指令碼 select version 非互動式超時時間,如jdbc show global variables like wait timeout 互動式超時時間,如資料庫工具 show global variables like interactive timeout show sessi...

mysql效能優化 mysql效能優化

優化方式 1.空間換時間 冗餘 2.時間換空間 字段優先使用型別 int date char varchar text 索引型別 btree索引 hash索引 索引的葉子下,存放乙個資訊指向所在行的資料位址。btree有利於範圍查詢,hash有利於精確查詢。btree用的更多一些。btree索引的常...

mysql 效能優化 命令 mysql效能優化

發現問題 當發現程式執行比較慢的時候,首先排除物力資源問題之後,就將注意力轉向mysq資料庫 1 首先確定執行慢的sql語句 mysql show full processlist 2 確認低效的查詢 多次執行第一步發現time耗費大的sql語句。檢視耗費的時間。3 分析效能 為sql生成乙個執行計...