mysql效能優化總結 三

2022-06-09 18:36:09 字數 2715 閱讀 1744

mysql體系結構

外掛程式式儲存引擎,將資料的查詢和儲存相分離.每一款儲存引擎都有各自的優缺點.可以靈活選用

架構: 客戶端 -> mysql服務層 -> 儲存引擎層

儲存引擎是針對表,不是針對庫,同一庫中的不同的表,可以使用不同的儲存引擎.(但是不建議這樣做),儲存引擎的不同會對效能產生直接的影響.

mysql常用的儲存引擎之myisam

mysql5.5之前版本預設的儲存引擎

myisam儲存引擎表由myd(資料檔案)和myi(索引檔案)組成,另外還有乙個frm檔案,並非myisam特有,是所有儲存引擎都有的檔案,用於儲存表結構

myisam特性

1.併發性與鎖級別

使用的是表級鎖,讀取資料的時候也是對全表加共享鎖.讀取和寫入是互斥的.

讀寫併發場景效能不佳

2.表損壞恢復

check table tablename;

repair table tablename;

3.myisam支援的索引型別

支援全文索引,並且是在5.7之前唯一支援全文索引的官方儲存引擎

支援對text和blob欄位簡歷前500字元的字首索引

4.myisam支援對唯讀表的資料壓縮,減少磁碟io(測試使用mariadb,發現壓縮之後仍然可以插入資料,myisam.old還在一直變大)

myisampack -b -f tablename.myi

myisam限制

不支援事務

5.0之前的版本預設表大小是4g

5.0之後的版本預設表大小是256tb

myisam適用場景

1.非事務型應用

2.唯讀類應用

3.空間類應用      myisam是5.7之前唯一支援空間函式的儲存引擎,例如gps資料

mysql常用的儲存引擎之innodb

5.5及之後預設的儲存引擎

特性:1.系統表空間和獨立表空間兩種儲存方式

由引數innodb_file_per_table決定,5.6之後預設on,使用獨立表

比較系統表空間無法簡單的收縮檔案大小  

獨立表空間可以通過optimize table指定來收縮系統檔案

使用系統表空間會產生io瓶頸,獨立表空間可以同時向多個檔案重新整理資料

2,是一種事務儲存引擎,完全支援acid特性

redo log 和 undo log實現acd,鎖實現i

3.支援行級鎖,最大程度的支援併發,行級鎖是在儲存引擎層實現的

鎖的型別

共享鎖(讀鎖)

獨佔鎖(寫鎖)

對於用一條記錄,讀鎖和寫鎖是互斥的,所以按道理來說如果對一條資料加上寫鎖,應該讀取不到才對.但是實際情況是仍然可以讀取到,這是為什麼呢?因為此時讀取的undo log 中的老的資料版本 \

鎖的粒度

表級鎖行級鎖

阻塞和死鎖

如何處理死鎖?

在多個事務中,按照相同的順序訪問多個資源,或者加上索引

innodb狀態檢查

show engine innodb status 

使用場景  innodb適用於大多數oltp應用

mysql常用的儲存引擎之csv

儲存特點

1.資料以csv格式進行儲存

2.所有列必須都是非null

3.不支援索引

5.可以對資料檔案直接編輯

使用場景:

適合作為資料交換的中間表

mysql常用的儲存引擎之archive

儲存特點

1.以zlib對錶資料進行壓縮,磁碟i/o更少,乙個幾t的innodb表,如果裡面的資料儲存到archive儲存引擎中,可能只需要幾百m

2.資料儲存在以arz為字尾的檔案中

3.只支援insert和select操作

4.只支援在自增id上建立索引

使用場景

日誌和資料採集類應用

mysql常用的儲存引擎之memory

也稱heap儲存引擎,資料儲存在記憶體中

儲存特點

1.支援hash索引和btree索引,建立索引時預設hash索引(等值查詢快,不支援範圍查詢),btree所以支援範圍查詢

2.所有欄位都為固定長度  varchar(10)=char(10)

3.不支援blob,text等大字段型別

4.使用表級鎖

5.最大大小由max_heap_table_size決定

使用場景

1.用於查詢或者是對映表(等值查詢快),例如郵編和地區的對應關係

2.用於儲存資料分析中產生的中間表

3.使用者快取週期性聚合資料的結果表

mysql常用的儲存引擎之federated

特性提供了訪問遠端mysql伺服器上表的方法(結盟表)

本地沒有資料,資料全部在遠端

本地需要儲存表結構和連線資訊

預設禁止

使用場景

偶爾的統計分析和手工查詢

mysql效能優化配置總結

看了一些優化mysql運維的一些書籍,在此記錄總結下 進入mysql客戶端輸入以下sql 1 連線設定 show variables like max connection show status like max used connections max used connections max ...

mysql效能優化總結 四

mysql資料庫結構設計和sql優化 資料庫設計對效能的影響 1.過分的反正規化化設計為表建立太多的列 服務層和儲存引擎層之間通過反衝格式來拷貝資料和解析成列,列過多,帶來額外的cpu消耗 2.過分正規化化造成過多的表關聯,mysq最多支援61張表的關聯查詢,需要控制在10個以內 3.使用不恰當的分...

mysql效能優化總結 一

一.什麼決定雙11大促的成敗?場景 原資料庫架構為1m15s,m伺服器效能很好,64核512g記憶體,io採用fushion io,比一般磁碟的讀寫能力高很多.缺點 1.只有乙個主庫,沒有主從切換中介軟體,每次如果主庫掛了,需要運維人員手動進行切換,然後同步給其他從庫,耗時高 超過半小時不可用 2....