2011-03-22 69 views
0

所以我決定我想我的圖像名稱存儲在MySQL中。所以我會將 中的「1」保存在我的mysql數據庫中。簡單的問題關於mySQL的速度

現在爲止,我打算名字我iamges的只是數字,在自動增量實際。但是,我應該說出我的形象嗎?因爲我聽說mysql可能相當慢,而且我不想在我的數據庫中添加大量圖像名稱,如果這會讓我的數據庫運行速度變慢。特別是因爲圖像名稱確實不那麼重要。

此外,將自動遞增使我的數據庫的運行速度,而不是手動編號?

編輯:完全無關的問題。我注意到有些人/網站將他們的圖像分成更小的塊。就像一件很容易成爲一個圖像的東西一樣,被分成多個圖像文件?我不明白,特別是因爲每個「獲得」亞馬遜圖像hositng服務費。就像每張照片的亞馬遜收費一樣。那麼爲什麼人們分割圖像呢?我有我的假設,但我相信還有更多。

回答

0

我想基於回答你的澄清迴應。由於技術上會存儲更多的數據,因此在技術上會使其變慢。如果您將可能具有文件名的列編入索引,那麼由於使用更多內存,這也可能會導致性能下降。如果或當成爲一個問題取決於你的服務器有多少內存等

在這兩種情況下,我懷疑這是不是您需要什麼,現在擔心和陷入過早優化的範疇。除非我大大低估了您的桌面尺寸和/或流量,否則這種差異幾乎沒有什麼區別,您現在不會注意到有什麼區別。

這是第二部分的更新。 這取決於你正在看到的,但我會傾向於它是少數事情之一。

1)圖像的某些部分可能需要動態更改,它只允許加載/更改需要更改的位而不是整個圖像。

2)通過以較小的幾個圖像塊發送大圖像,它可以使圖像在客戶端上更快地開始顯示,從而提供更好的響應速度和更快加載的印象。

3)網站來自作爲psd文件提供的模板。這些都是可怕的事情,有人在photoshop或類似的網站上製作網站的圖像,然後將它切成一堆小圖像,然後將它們分別裝入一個或多個表格中。

+0

謝謝!完美的迴應!另外,你可以回答我的編輯問題嗎? (我認爲堆棧用戶都知道一切了) – user657847 2011-03-22 19:19:53

0

從你的問題來看,你打算做什麼並不是很清楚。但我覺得我應該分享我的經驗。

予存儲的圖像的文件名(用戶的個人資料照片)作爲用戶表的字符串,在_profile_pic.jpeg約定。問題是,由於瀏覽器緩存了圖像,當用戶在「更新配置文件」表單中更改他/她的個人資料圖片時,出現了相同的圖像。由於圖像的文件名是相同的,所以瀏覽器認爲它是相同的資源並由緩存提供,而不是通過HTTP獲取。所以我們最終將圖像放到了另一個表格上,其中自動增量字段爲主鍵,圖像文件名重命名爲相應的PK。

自動增量將不嚴格使數據庫更快,但你還是應該避免人爲

+0

這實際上是非常有用的,知道使另一個表可以解決一些問題。無論如何,但我不清楚的問題是,如果它會減慢我的頁面速度,是否值得命名圖像。就好像我的所有記錄都有很長的圖像名稱,比如「蝴蝶飛翔」,「男生提問老師」,而不是將圖片編號爲「1」和「2」,是否會讓我的頁面運行速度變慢?特別是如果我的桌子上有100張圖像名稱,它會加起來嗎?另外,你可以回答我的編輯問題= p – user657847 2011-03-22 18:46:08

1

嗯....不知道你的問題的情況下,但大致來說,MySQL是最快的數據庫引擎之一您可以獲得適度的使用(對於Oracle和MS SQL Server等產品的付費通常更適合極端的需求)。 將字符串存儲爲字符串不會比將其存儲爲整數慢得多 - 但它有助於獲得更多關於實際應用程序的想法。 自動增量是自動分配主鍵的明智選擇;它保證了數字的唯一性,即使兩個進程在同一時間訪問表。在表現方面,再次 - 我認爲你不能衡量差異。

概括地講,數據庫這樣的東西,我建議建立一個邏輯乾淨的實施,創造合適的索引結構,並儘可能則可對其進行優化;然後衡量表現。如果這種表現不令人滿意,那麼找出替代方案。擔心那種你問的風險優化的東西都已經閃電般的速度的東西,在維修的費用和可能經常介紹其他更爲嚴重的性能問題...

+0

@ user657847:Neville K回答了你的問題,你可能不會看到有意義的圖像名稱和自動遞增數字之間的性能差異。有意義的圖像會在您第一次調試問題時得到名稱首先讓系統正常工作,然後擔心性能 – 2011-03-22 19:06:23

+0

是的,如果表變得很大,MySQL會變得更慢 - 但通常情況下,只有當您獲得數百萬條記錄時,而不是如果記錄本身很大如果你的文件名適合varchar字段,你幾乎肯定不會看到整數或varchar選項之間的任何區別如果你必須使用文本字段,因爲你的文件名太大,搜索時會遇到性能問題。當然,現代版本的MySQL支持高達65K的varchar列,所以這不太可能會成爲問題... – 2011-03-23 09:48:45