MySQL性能:很多表还是很多行?

wos*_*sis 4 php mysql performance

我想在我的PHP/MySQL应用程序中记录对页面的访问,以实现类似于SO上的视图计数.我的计划是通过每页上的唯一IP地址来计算请求.大约有5000个不同的页面都有一个查看计数.(我知道计算IP并不准确,但这对我的目的来说是好的.)

我看到两个选项来组织数据库表:

  • 一个包含字段"page_id","request_ip"的大表.假设每个页面平均有50个独特IP视图,我会得到5000 x 50 = 250 000行.当视图显示在页面上时,该表将对每个页面上的每个请求具有读写访问权限.
  • 另一种选择是每页有一个表,其中有一列"request_ip".然后我有5000个表平均存储50行.只有在查看页面时才会访问表格.

哪一个更好,性能更好?还是我完全走错了路?

Mar*_*c B 6

5000个表意味着5000个不同的查询+ 5000个不同的索引集+ 5000个不同的数据集竞争服务器缓存中的空间.表现很可能很糟糕.

存储完全相同数据结构的多个表几乎总是一个糟糕的设计.如果您担心性能,可以使用MySQL的分区支持将表自动拆分为多个部分,并且这对最终用户透明地完成(例如,您的查询).