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....