2013-07-24 116 views
0

我懷疑哪個數據庫引擎選擇我的表中的幾個。我已經學習了幾篇文章,書籍和類似的數據庫構建,但仍然不確定。對於非常繁忙的表,哪個MySQL數據庫引擎(MyISAM vs InnoDB)?

網站特點 - 讓年輕音樂製作人與其他人分享他們的作品(音樂)。正如你所猜測的,上傳和下載音樂時會有很多疑問。

下面是我的DB兩個主表:「用戶」 - 27列和「文件」 - 22列

這裏是我的問題,其發動機將得到更好的MyISAM VS InnoDB的兩個表?

的MyISAM鎖定整個表,所以如果我理解正確的話,當有人上傳文件的MySQL鎖表寫入文件的數據,然後,如果在同一時間有人請求下載甚至其他文件申請要等到Mysql的解鎖表吧?

回答

4

正如你自己所說,MyISAM表使用表級鎖定。所以如果流量很高,InnoDB將是正確的選擇。通過MyISAM,每次只能有一個用戶進行交互。您必須確保您的硬件能夠跟上這些流量,以避免被超載。

這表明你需要一個支持行級鎖定的存儲引擎,即InnoDB。

+0

謝謝,我還有一個問題,我有一個數據類型爲tinyint(3)的列,爲了測試,我更新了這個columnt值200,令我驚訝的是它顯示了這個值。所以我的問題是爲什麼和顯示寬度的工作原理,如果安排後,我只需要從0 -3的值我可以看到更大的。 – DannyS

+0

謝謝,如果數百萬行使用tinyint(1)而不是tinyint(3),那麼數據庫的大小是否也有差異? – DannyS

+1

讓我澄清一下。在tinyint(m)中,m表示SELECT語句中的列寬;但是,它不控制該領域的可接受的數字範圍。 TinyINT(M)的範圍始終爲-128 .. + 127。 M的大小是多少並不重要。是的,tinyint(1)和tinyint(3)在數據庫大小方面沒有任何區別:) –

相關問題