介紹:
主要目的為 傳統的oltp應程式和web程式,經常執行大量的小資料更改操作,并發操作,提升速度。主要考慮因素,寫入大量資料并使用索引保持最新I/O
insert 優化
- 1.理想情況使用單個連結進行操作,如果一次性有多條新資料要加入,可以嘗試 将索引更新和一緻性放到延遲到最後
插入行所需的時間由以下因素決定,其中數字表示大緻比例:
- 連接配接:(3)
- 向伺服器發送查詢:(2)
- 解析查詢:(2)
- 插入行:(1×行的大小)
- 插入索引:(1×索引數)
- 結束:(1)
這沒有考慮打開表的初始開銷,每個并發運作的查詢都會執行一次。
N
假設B樹索引, 表的大小會減慢日志插入索引的速度。
您可以使用以下方法來加速插入:
- 如果同一用戶端插入多行,使用insert 包含多個value的方式插入 ,這個比單行插入快特别多倍。
- 如果要将資料添加到非空表中,可以調整bulk_insert_buffer_size 變量 讓資料執行更快
- 從文本檔案加載時,使用load data 比普通insert 快20倍
- 利用預設值,隻有插入時與預設值不同才插入,可以減少mysql必須的解析操作,可以提高插入速度
優化update
- update 優化類似于select 具有寫入額外的查詢開銷。
- 寫入速度取決于要更新的資料量和更新的索引數量。未更愛的索引不會更新。
- 采用延遲更新,然後聯系執行許多更新。如果鎖定表,一次更新多個比單多次執行要快很多。
- 對應MyISAM 使用動态行格式的表,将行更新 改外 更長的中長度可能會才分該行,如果經常這樣做可以使用 optimize table 。
優化delete
- 删除MyISAM表中各行所需要的時間 和索引數量完全成比例。
- 要更快的删除行,可以通過增加key_buffer_size 系統變量增加秘鑰緩存的大小來實作。
- 删除MyISAM表中所有行,要快于 ,截段操作的事物,執行要快很多
上一篇優化《二》 之 select 優化 where 字句優化
文章持續更新,轉發表明出處,友善更新!