MySQL效能優化

2023-01-28 06:45:51 字數 1619 閱讀 7552

1、 避免**頁面出現訪問錯誤

由於資料庫連線timeout產生頁面5xx錯誤

由於慢查詢造成頁面無法載入

由於阻塞造成資料無法提交

2、 增加資料庫的穩定性

很多資料庫問題都是由於低效的查詢引起的

3、 優化使用者體驗

流暢頁面的訪問速度

良好的**功能體驗

可以從哪幾個方面進行資料庫的優化?如下圖所示:

a、 sql及索引優化

根據需求寫出良好的sql,並建立有效的索引,實現某一種需求可以多種寫法,這時候我們就要選擇一種效率最高的寫法。這個時候就要了解sql優化

b、 資料庫表結構優化

根據資料庫的正規化,設計表結構,表結構設計的好直接關係到寫sql語句。

c、 系統配置優化

大多數執行在linux機器上,如tcp連線數的限制、開啟檔案數的限制、安全性的限制,因此我們要對這些配置進行相應的優化。

d、 硬體配置優化

選擇適合資料庫服務的cpu,更快的io,更高的記憶體;cpu並不是越多越好,某些資料庫版本有最大的限制,io操作並不是減少阻塞。

注:通過上圖可以看出,該金字塔中,優化的成本從下而上逐漸增高,而優化的效果會逐漸降低。

1、資料庫設計規範(三大正規化)

2、新增索引(普通索引,唯一索引,全文索引等等)

3、 分庫分表(垂直分割和水平分割)

4、 讀寫分離

5、 儲存過程

6、 配置mysql連線引數

7、 sql語句優化

8、 清理碎片化

9、 mysql伺服器優化

第一正規化:保證每一個列的原子性,不可再分

第二正規化: 在滿足第一正規化基礎之上,保證表中資料的唯一,每一個列都和主鍵相關,一張表只描述一件事情

注:在實際開發場景當中,根據業務需求來定,沒有必要非得嚴格按照三大正規化

1、垂直拆分定義

所謂的垂直拆分,就是把原來一個有很多列的表拆分成多個表,這解決了表的寬度問題。

2、垂直拆分原則

通常垂直拆分可以按以下原則進行:

①把不常用的欄位表單獨存放到一個表中。

②把大欄位獨立存放到一個表中。

③ 把經常一起使用的欄位放到一起。

1、為什麼水平拆分

表的水平拆分是為了解決單表資料量過大的問題,水平拆分的表每一個表的結構都是完全一致的

2、水平不拆分原因

如果單表的資料量達到上億條,那麼這時候我們儘管加了完美的索引,查詢效率低,寫入的效率也相應的降低。

3、如何將資料平均分為n份

通常水平拆分的方法為:

①對customer_id進行hash運算,如果要拆分為5個表則使用mod(customer_id,5)取出0-4個值。

②針對不動的hashid把資料儲存到不同的表中。

4、水平拆分面臨的挑戰

①誇分割槽表進行資料查詢

前端業務統計:

業務上給不同的使用者返回不同的業務資訊,對分割槽表沒有大的挑戰。

②統計及後臺報表操作

但是對後臺進行報表統計時,資料量比較大,後臺統計時效性比較低,後臺就用匯總表,將前後臺的表拆分開。

MySQL 效能優化

訪問量越來越大,mysql 自然成為瓶頸,因此最近我一直在研究mysql的優化,第一步自然想到的是mysql系統 引數的優化,作為一個訪問量很大的 日20萬人次以上 的資料庫 系統,不可能指望mysql預設的系統引數能夠讓mysql執行得非常順暢。通過在網路上查詢資料和自己的嘗試,我認為以下系統引數...

MySQL 效能優化

做點東西要用到mysql故近來在學習mysql,和學習其他的資料庫一樣,總覺得建表容易,但是要讓資料庫良好的執行卻不那麼簡單.下面是一些mysql效能優化方面的知識 看了一下,受益非淺.注意 index name,age 表示在name,age兩列上建立聯合索引 由於索引對資料庫的查詢效能有著至關重...

MySQL效能優化

效能優化是通過某些有效的方法來提高mysql的執行速度,減少佔用的磁碟空間。效能優化包含很多方面,例如優化查詢速度,優化更新速度和優化mysql伺服器等。本文介紹方法的主要有 資料庫管理人員可以使用show status語句來查詢mysql資料庫的效能。語法 show statue like val...