MySQL 資料庫效能優化之表結構優化

2021-07-11 16:26:57 字數 563 閱讀 3622

很多人都將資料庫設計正規化作為資料庫表結構設計「聖經」,認為只要按照這個正規化需求設計,就能讓設計出來的表結構足夠優化,既能保證效能優異同時還能滿足擴充套件性要求。殊不知,在n年前被奉為「聖經」的資料庫設計3正規化早就已經不完全適用了。這裡我整理了一些比較常見的資料庫表結構設計方面的優化技巧,希望對大家有用。

由於mysql資料庫是基於行(row)儲存的資料庫,而資料庫操作 io 的時候是以 page(block)的方式,也就是說,如果我們每條記錄所占用的空間量減小,就會使每個page中可存放的資料行數增大,那麼每次 io 可訪問的行數也就增多了。反過來說,處理相同行數的資料,需要訪問的 page 就會減少,也就是 io 操作次數降低,直接提公升效能。此外,由於我們的記憶體是有限的,增加每個page中存放的資料行數,就等於增加每個記憶體塊的快取資料量,同時還會提公升記憶體換中資料命中的機率,也就是快取命中率。

上面幾點的優化都是為了減少每條記錄的儲存空間大小,讓每個資料庫中能夠儲存更多的記錄條數,以達到減少 io 操作次數,提高快取命中率。下面這個優化建議可能很多開發人員都會覺得不太理解,因為這是典型的反正規化設計,而且也和上面的幾點優化建議的目標相違背。

MySQL 資料庫效能優化之表結構優化

這是 mysql資料庫效能優化專題 系列的第二篇文章 mysql 資料庫效能優化之表結構 很多人都將 資料庫設計正規化 作為資料庫表結構設計 聖經 認為只要按照這個正規化需求設計,就能讓設計出來的表結構足夠優化,既能保證效能優異同時還能滿足擴充套件性要求。殊不知,在n年前被奉為 聖經 的資料庫設計3...

MySQL 資料庫效能優化之表結構優化

很多人都將 資料庫設計正規化 作為資料庫表結構設計 聖經 認為只要按照這個正規化需求設計,就能讓設計出來的表結構足夠優化,既能保證效能優異同時還能滿足擴充套件性要求。殊不知,在n年前被奉為 聖經 的資料庫設計3正規化早就已經不完全適用了。這裡我整理了一些比較常見的資料庫表結構設計方面的優化技巧,希望...

MySQL 資料庫效能優化之表結構優化

很多人都將資料庫設計正規化作為資料庫表結構設計 聖經 認為只要按照這個正規化需求設計,就能讓設計出來的表結構足夠優化,既能保證效能優異同時還能滿足擴充套件性要求。殊不知,在n年前被奉為 聖經 的資料庫設計3正規化早就已經不完全適用了。這裡我整理了一些比較常見的資料庫表結構設計方面的優化技巧,希望對大...