MySQL表锁

时间:2012-09-13 15:15:12

标签: mysql relational-database normalization database-deadlocks

当我注意到他们有奇怪的设计时,我被要求在MySQL DB上做一些PHP脚本来显示一些数据。 他们希望进行一项研究,要求每个用户最多收集2000条记录,并且它们会自动为每个注册用户创建一个新表。这是一个在这个阶段的试点研究,所以他们有大约30个表,但他们应该有3000个用户进行真正的研究。

我想建议在一个表中收集所有这些,但由于在研究期间每分钟可能有大约1500个INSERT到该数据库,我想先在这里提出这个问题。这会导致MySQL中的表锁吗? 那么,它是一个每分钟1500个INSERT,最大大小为6,000,000条记录的表,还是每分钟有30个INSERT,最大大小为2000条记录的3000个表。我想建议第一个选项,但我想确保它不会导致任何问题。 我读到InnoDB有行级锁。那么,它会有更好的性能与一个表选项相结合吗?

1 个答案:

答案 0 :(得分:0)

这是一个巨大的问题。根据我的经验,单独使用表格大小并不能准确地衡量绩效。它归结为设计。你有主键和索引吗?是否过度索引?话虽这么说,我也发现几乎总是一次DB的访问比几十次更快。单个表(列)有多大?你节省了什么样的数据(大于4000K?)。您可能需要创建一些原型来查看最适合您的原型。我建议的最多的是你仔细判断你收集的数据的大小并相应地分配,创建索引(但不要太多,不要超过索引),并测试。