2016-01-15 29 views
-5

我正在做一個網站,它存儲用戶名,密碼,用戶圖片。現在來存儲用戶的圖片我有2種方法: -通過哪種方法將用戶圖像保存在MYSQL數據庫中?

方法-1)保存圖片數據庫的表中的每一行。

方法-2)將所有圖片保存到一個文件夾中,然後按用戶名重命名圖片名稱(這樣沒有2張圖片具有相同名稱),然後在數據庫的每一行表格中給出每張圖片 的位置地址。

那麼哪種方法更高效,爲什麼?

+0

方法2是你的答案優勢將立即消失。方法1,我不知道如何將圖片保存到數據庫中。也許這是讓任何人給你投票的理由。 –

+0

方法2非常流行。我不會評論效率,因爲這對不同的人來說意味着不同的事情,除非說圖像很小(大約<100 k)時方法1可能優於方法2。 – Strawberry

+0

在方法1中,這是我可以保存圖片的方式: - 我們可以通過BLOB數據類型在每一行中直接存儲圖像。 –

回答

0

效率可能意味着很多事情。設計解決方案時,可維護性和可擴展性與純粹性能一樣重要。

方法2依賴於磁盤上的文件,這意味着在生產環境中使用多臺服務器(其中每督促ENV應該有),你將不得不繼續將文件同步解決方案中的所有服務器之間。

你對你的問題有評論,說方法2更受歡迎。這可能是,但難以擴展並保持同步。

方法1(保持在數據庫中的圖片)是去作爲,使它們與位置無關的方式!但我會做一個改變:把所有的圖片放在一個單獨的表格中!爲什麼?所有數據庫讀取/寫入/搜索IO頁面中的數據往磁盤。通過保持用戶表小,您可以在該表上獲得更好的查詢性能。如果將圖片添加到用戶表中,則它的大小將會增加,從磁盤讀取時,更少的頁面可以放在同一頁上。

這是真的,當你需要閱讀的圖片就意味着另一個查詢,但如圖片幾乎永遠不會改變,你可以將它們緩存在本地的分佈式緩存,以便快速訪問。

性能呢? 方法2可以被視爲更快,因爲您不需要從數據庫上的磁盤讀取圖片,但仍需要從本地服務器上的磁盤讀取數據......所以確實沒有任何優勢。但是,即使有一個優點,即作爲最常見的圖片已被添加到緩存中,然後使用方法1甚至可能快於方法2

相關問題