Mysql

如何防止性能問題和去規範化

  • September 23, 2016

我們打算做一個PHP-MYSQL結合的電子商務購物網站。

我閱讀了幾乎所有與 Normalization & Denormalization 相關的連結:Normalize until it hurts, denormalize until it works.

我理解的一件事是標準化對於良好的性能是必須的,對嗎?

只有在遇到性能問題時才需要進行非規範化

$$ the very low page speed $$,否則不需要非規範化。 100% 會受到傷害 - 標準化?我們能做些什麼來防止$$ not to hurt. $$除了再次反規範化和重構完整數據庫之外,我們能否採取一些措施來提高性能。

我們可以在不進行規範化的情況下進行非規範化嗎?

學分:弗拉基米爾·奧塞爾斯基

規範化絕不是為了讀取性能,而是為了數據完整性和寫入性能。您通過在不同位置存在相同的數據來規範化以避免冗餘數據和產生問題。如果您想要最驚人的性能,您可以通過將所有內容放入單個表並創建大量索引來進行非規範化。這就是為什麼對於報告 (DW),它是一種非規範化以提高讀取性能的做法。為自己省去很多麻煩,並大量閱讀其他人如何解決同樣的問題。

我堅信 3NF,但在我的書中超越它是荒謬的,我還沒有看到一個有效的商業案例來做任何事情。遲早你會發現需要針對特定流程進行非規範化,通常是為了報告、數據倉庫的需要。一個好的規則是 OLTP = Normalize,OLAP = Denormalize。

這是數據庫設計和業務請求的本質。每當您設計一個系統時,您都是在為特定目的進行設計,然後其他人出現並請求您可能沒有準備好提供的資訊,在這種情況下,您需要進行非規範化以提供最佳性能。

要提高性能,請使用“索引、查詢調整、硬體升級、伺服器配置等”……

引用自:https://dba.stackexchange.com/questions/150152