我有一份申请,基本上是学校的考试系统.学生们参加考试。老师追踪考试。目前,我们有一个数据库(mysql)来存储所有信息。随着用户的增长,性能非常缓慢。现在的决定是为每所学校争取一个分贝,还是以某种方式优化我们现有的单一分贝。我们的问题是,单分贝和多达1000所学校是否甚至可以/建议进行业绩优化。让我们了解一下正在处理的数据:目前约有1000所学校注册,但只有40-50所学校积极使用该系统。这样,学生表中的行超过8000行,但是已经超过70k的是带有student_answers (记录测试答案)的表,这就是问题所在。同样,我们有一个答题者表(记录每个用户所做的每一个测试),这个表也超过7万行。
我们将重视对以下问题的任何评论
( a)学生用的汇总表( student_answers )是什么样子的?
大部分数据在这两个表1. quiz_takers 2. student_answers中找到。
在下面的链接中可以找到当前的表结构(数据字典):
https://drive.google.com/file/d/13WxRgmOxkRWcYV238tZJzgFSDV7fWK0J/view?usp=sharing
注意已经应用的索引(这就是我们已经尝试过的),但是性能仍然不是最佳的。
我们的主要和主要问题是,针对这一水平的使用(2000所活跃学校)的单一数据库设计是否可行,是否可以充分优化。
发布于 2019-08-09 18:55:19
One与多个数据库
“数据库”一词可以是“服务器”,也可以指CREATE 。在后一种情况下:
SELECT ... FROM dbname.tblname ...就像
USE dbname;
...
SELECT ... FROM tblname ...因此,不管您的表是在同一个数据库中还是在不同的数据库中。
如果您指的是不同的服务器(计算机),那么这是一个很大的区别。
另一种方法是将所有学校放入一个单表中,并为school_id增加一列。这往往是最好的。但是,我感觉到这将是比预期的更多的工作,我将假设你
DATABASEs,每个“学校”一个DATABASE都有几个表格来获取关于那所学校的信息。为了解决底线的性能问题,我们需要看到查询和SHOW CREATE TABLE。它可能就像缺少一些索引一样简单。
适当的索引,即使是70K行表,也是一个“小”表。
摘要表?对于十亿行表,我强烈建议使用汇总表.对于70K行,它可能是有用的。你想总结一下吗?你要总结的表格是什么?
架构 OK,您有该架构的图片。这一点很难用。DESCRIBE的描述性不如SHOW CREATE TABLE。我没看到多少备用钥匙?怪不得你的表现有问题。向我们展示一个SELECT,即JOINs两个或多个表并有一个WHERE;我们将讨论需要哪些其他索引。
https://stackoverflow.com/questions/57431864
复制相似问题