MySQL資料庫優化及負載均衡

2021-10-24 14:00:45 字數 2280 閱讀 5996

mysql 存在4種資料庫引擎

innodb儲存引擎。

myisam儲存引擎。

memory儲存引擎。

archive儲存引擎。

本章內容主要針對 innodb和myisam這兩個最常見的做乙個講解和優化。

在優化之前我們需要了解這兩個引擎分別的作用是什麼。

myisam儲存引擎

myisam基於isam儲存引擎,並對其進行擴充套件。它是在web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。myisam擁有較高的插入、查詢速度,但不支援事物。myisam主要特性有:

1、大檔案(達到63位檔案長度)在支援大檔案的檔案系統和作業系統上被支援

2、當把刪除和更新及插入操作混合使用的時候,動態尺寸的行產生更少碎片。這要通過合併相鄰被刪除的塊,以及若下乙個塊被刪除,就擴充套件到下一塊自動完成

3、每個myisam表最大索引數是64,這可以通過重新編譯來改變。每個索引最大的列數是16

4、最大的鍵長度是1000位元組,這也可以通過編譯來改變,對於鍵長度超過250位元組的情況,乙個超過1024位元組的鍵將被用上

5、blob和text列可以被索引

6、null被允許在索引的列中,這個值佔每個鍵的0~1個位元組

7、所有數字鍵值以高位元組優先被儲存以允許乙個更高的索引壓縮

8、每個myisam型別的表都有乙個auto_increment的內部列,當insert和update操作的時候該列被更新,同時auto_increment列將被重新整理。所以說,myisam型別表的auto_increment列更新比innodb型別的auto_increment更快

9、可以把資料檔案和索引檔案放在不同目錄

10、每個字元列可以有不同的字符集

11、有varchar的表可以固定或動態記錄長度

12、varchar和char列可以多達64kb

使用myisam引擎建立資料庫,將產生3個檔案。檔案的名字以表名字開始,副檔名之處檔案型別:frm檔案儲存表定義、資料檔案的擴充套件名為.myd(mydata)、索引檔案的副檔名時.myi(myindex)

innodb儲存引擎

innodb是事務型資料庫的首選引擎,支援事務安全表(acid),支援行鎖定和外來鍵,上圖也看到了,innodb是預設的mysql引擎。innodb主要特性有:

1、innodb給mysql提供了具有提交、回滾和崩潰恢復能力的事物安全(acid相容)儲存引擎。innodb鎖定在行級並且也在select語句中提供乙個類似oracle的非鎖定讀。這些功能增加了多使用者部署和效能。在sql查詢中,可以自由地將innodb型別的表和其他mysql的表型別混合起來,甚至在同乙個查詢中也可以混合

2、innodb是為處理巨大資料量的最大效能設計。它的cpu效率可能是任何其他基於磁碟的關係型資料庫引擎鎖不能匹敵的

3、innodb儲存引擎完全與mysql伺服器整合,innodb儲存引擎為在主記憶體中快取資料和索引而維持它自己的緩衝池。innodb將它的表和索引在乙個邏輯表空間中,表空間可以包含數個檔案(或原始磁碟檔案)。這與myisam表不同,比如在myisam表中每個表被存放在分離的檔案中。innodb表可以是任何尺寸,即使在檔案尺寸被限制為2gb的作業系統上

4、innodb支援外來鍵完整性約束,儲存表中的資料時,每張表的儲存都按主鍵順序存放,如果沒有顯示在表定義時指定主鍵,innodb會為每一行生成乙個6位元組的rowid,並以此作為主鍵

5、innodb被用在眾多需要高效能的大型資料庫站點上

innodb不建立目錄,使用innodb時,mysql將在mysql資料目錄下建立乙個名為ibdata1的10mb大小的自動擴充套件資料檔案,以及兩個名為ib_logfile0和ib_logfile1的5mb大小的日誌檔案

innodb優化:

我們可以給資料庫對應表,

left join 等關聯語句中的關聯字段建立對應的索引來提高查詢效率。

在業務中如果需要區分時間段內的大資料可以採用分庫分表的操作來對資料進行分割處理。

分庫分表需要先詳細閱讀innodb和myisam兩者引擎的作用。

分庫分表詳情操作可以參考:

當熱資料量遠遠大於冷資料量時,可以考慮使用mycat對資料庫進行讀寫分離。

拓展延伸內容haproxy,keepalived。

haproxy功能是tcp 和http 的應用**。

keepalived是服務活性監控。

keepalived用於對應服務的活性,來提高服務負載均衡分離的準確合理度。

這裡就不做詳細介紹了

資料庫負載均衡(上)

雖然搭建了集群,但是不使用資料庫負載均衡,單節點處理所有請求,負載高,效能差 使用haproxy做負載均衡,請求被均勻分發給每個節點,單節點負載低,效能好 1.安裝haproxy映象 從docker倉庫拉取haproxy映象 docker pull haproxy2.建立haproxy配置檔案 ha...

資料庫負載均衡(下)

單節點haproxy不具備高可用,必須要有冗餘設計 雙機就是兩個請求處理程式,比如兩個haproxy,當乙個掛掉的時候,另外 乙個可以頂上。linux系統可以在乙個網絡卡中定義多個ip位址,把這些位址分配給多個應用程式,這些位址就是虛擬ip,haproxy的雙機熱備方案最關鍵的技術就是虛擬ip。定義...

SQL Server資料庫實現負載均衡

微軟官方方案 1 通過分庫分表 分庫磁碟io share disk架構 2 alwayson 第三方軟體服務 1 dbtwin 2 負載均衡產品moebius for sql server 3 資料庫路由器軟體icx 提供ms sql server資料庫伺服器的集群功能,可以實現資料庫伺服器的並行處...