影響MySql效能的因素

2021-08-28 07:19:23 字數 1487 閱讀 4972

哪些資料不適合存在資料庫中?

流水佇列資料(一些系統中,每次交易,存放等都會產生流水佇列資料,資料量非常龐大)

那些資料存放在cache(快取)中?

減少資料庫的互動次數

在這裡我們列舉乙個n+1的問題,總所周知,在使用mybatis的時候當a物件中包含b物件(也就是乙個物件存在乙個關聯物件),a物件列表中顯示關聯物件b的屬性,使用一條sql去查詢a物件,那麼使用n條sql把n個對應的屬性查出來(查詢所有資料的時候會產生這樣的問題)。

優點:解決了n+1的問題,減少了和資料庫的互動次數,從而降低了磁碟的io次數

缺點:如果內聯的表過多,那麼會使效能下降;如果存在n個物件在表中關聯1個物件,結果集會增加,從資料庫到應用的響應的時間會變大,結果集增加,排序也會影響效能。

a表中冗餘b表中的字段,使用一條sql就可以查詢出來我們想要的結果,但是如果b中的資訊更新,那麼a表也會對應的更新。

使用1條sql去查詢a表中的物件,得到b表所對應的id,存在一對多的關係,在程式中把結果集中的b列id去重,使用sql語法查詢出b表中的資訊,再通過程式設值。這樣既解決了n+1的問題,程式是在記憶體中執行的,響應的速度大大提高了。

過度的依賴sql的功能,在適當的時候我們使用程式來進行處理可以有效的提高效率。

1、客戶端傳送一條查詢到服務端

2、伺服器通過許可權檢驗後,首先檢驗查詢快取,如果在快取中得到了結果,那麼立即返回。否則執行下一步

3、mysql服務端進行sql的解析,預處理,再由優化器根據該sql所涉及到的資料表的統計資訊進行計算,生成對應的執行計畫

4、mysq根據優化器生成的執行計畫,呼叫儲存引擎的api來執行查詢

5、將結果返回給客戶端

sql執行的最大瓶頸在於磁碟的io,即資料的讀取;不同sql的寫法,會造成不同的執行計畫的執行,而不同的執行計畫在io的上面臨完全不一樣的數量級,從而造成效能的差距。

通過圖中我們可以清晰的觀察出來,影響查詢根本的原因是io,但io的次數又是執行計畫所決定的,執行計畫是解析器解析語法產生的,我們通過檢視cup的使用率,io的次數,從而來優化sql語句。

schema(表結構)對效能的影響

適當的資料冗餘可以提高系統的整體查詢的效率

關係型資料的三種正規化;

第一正規化:對關係模型的基本要求,不滿足第一正規化的資料庫就不是關係型資料庫,資料庫表的每一列都是不可分割的基本資料項,同一列中不能存在多個值。

第二正規化:資料庫表中每個例項或行必須可以被唯一的區分

第三正規化:要求乙個資料庫表中不包含已在其他表中包含的非關鍵字資訊(不允許存在冗餘資料的現象)

在乙個資料庫中一般不會設定屬性過多的表

存在大資料的列單獨存在小表當中(提高查詢等語句的效率)

1、減少查詢是所需要的列

2、便於常用屬性的集中快取

影響hashMap效能的因素

首 先算得key得hashcode值,然後跟陣列的長度 1做一次 與 運算 看上去很簡單,其實比較有玄機。比如陣列的長度是2的4次方,那麼hashcode就會和2的4次方 1做 與 運算。很多人都有這個疑問,為什麼hashmap的陣列初始化大小都是2的次方大小時,hashmap 的效率最高,我以2的...

影響軟體效能的因素

軟體效能是軟體的一種非功能特性,它關注的不是軟體是否能夠完成特定的功能,而是在完成該功能時展示出來的及時性。由於感受軟體效能的主體是人,不同的人對於同樣的軟體能有不同的主觀感受,而且不同的人對於軟體效能關心的視角也不同。目前,大部分系統都是為多使用者 跨地域 多部門機構提供服務的,目前一般中小企業的...

mysql優化之影響mysql效能因素一

mysql優化之影響mysql效能因素一 web伺服器可以進行橫向擴充套件,每台伺服器只要配置相同就可以進行橫向擴充套件,理論上可以無限制的增加web伺服器增加mysql的訪問效能。資料庫伺服器才是大資料量訪問時延遲高效率低的主要原因,沒有穩定的資料庫就沒有穩定的訪問。影響資料庫因素主要因素主要有一...