2013-07-24 78 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)在数据库大小方面没有任何区别:) –

相关问题