一个数据库或单独的数据库中的所有客户?

时间:2018-07-02 15:19:16

标签: php mysql yii2

我已经为自己的需要建立了学校管理系统。在学年结束时,表格的大小从〜200行到〜30,000行/。

我的一些朋友已经看到了该系统,他们敦促我将其提供给其他学校。我现在至少要尝试一些学校。考虑到我当前的体系结构和共享托管,我必须将所有学校存储在单数据库中,因此有两个问题困扰我:

  1. MySql是否可以轻松地处理> 300,000行的表?
  2. 该系统目前基于Yii2,我已经对其进行了优化,以实现最佳性能-您认为明智的做法是,尝试或更好地为每个学校配备专用服务器和单独的数据库来寻求解决方案吗?

我不知道将我和其他10所学校的所有学生,出勤,付款等信息存储在单个db中的共享表中是否明智。我最好问自己,而不是给自己惹麻烦。

任何建议都值得欢迎:)

1 个答案:

答案 0 :(得分:1)

  

过早的优化是万恶之源(或至少大多数   它)

您现在不必为此担心。开始运行您的应用程序,并在进行扩展时确定瓶颈,然后尝试找到解决方案。

  

MySql可以轻松处理具有300,000行以上的表吗?

首先,使用最佳规范原则来构造表和关系。 MySQL非常擅长处理高达10,000,000的行。但这还取决于您如何索引/查询数据。在您经常用于查找的列上使用适当的数据库索引。要“喜欢”查询是一个很大的缺点,但是如果必须的话,请使用搜索引擎(例如“ elastic”,“ solr”)。

  

该系统目前基于Yii2,我已经对其进行了优化   性能-您认为尝试或更好地朝着这个方向努力是明智的   每个学校都有专用服务器和独立数据库的解决方案?

我对Yii2知之甚少,但是php中肯定有更好的框架,您可以尝试例如。 larvel(this will give you a better idea)。当然,最好是将这个应用程序托管在专用服务器上。为什么当您可以从digitalocean获得5美元的私人VPS时浪费金钱。

  

我不知道存储所有学生,出勤,付款是否明智   来自我和其他10所学校的信息,跨单个共享表   D b。我最好问自己,而不是给自己造成麻烦。

将学生,出勤,付款信息存储在同一数据库中绝对没有问题,只需正确构造表即可。