【发布时间】:2019-08-09 14:09:03
【问题描述】:
我有一个应用程序,它本质上是一个学校的考试系统。学生参加考试。教师跟踪测试。目前,我们有一个单独的数据库(mysql)来存储所有信息。随着用户的增长,性能非常缓慢。现在的决定是是否为每所学校使用一个数据库,或者以某种方式优化我们现有的单个数据库。我们的问题是,是否甚至可以/推荐使用单个数据库和多达 1000 所学校进行性能优化。了解正在处理的数据:目前大约有 1000 所学校注册,但只有 40-50 所学校积极使用该系统。这样一来,student 表中的行数就超过了 8000,但是这个表的 student_answers(记录测验的答案)已经超过了 70k,问题就在这里。同样,我们有一个 quiz-takers 表(它记录了每个用户进行的每个测验),它也超过 70,000 行。
我们会重视以下方面的任何 cmets
考虑到上述预期数字,每所学校选择一个数据库会更好吗,或者单个数据库是否可以有效地工作,假设有 2000 所 ACTIVE 学校(乘以我们拥有的 40 所学校的数据与 2000 年的数据相当)
如果上述问题的答案是单个数据库和优化很容易,那么在创建汇总表、索引等方面的任何建议都将不胜感激,特别是
a) 学生汇总表 student_answers 是什么样的?
大部分数据都在这两个表中 1. quiz_takers 2. student_answers
当前表结构(数据字典)可以在下面的链接中找到:
https://drive.google.com/file/d/13WxRgmOxkRWcYV238tZJzgFSDV7fWK0J/view?usp=sharing
请注意已经应用的索引(这是我们已经尝试过的),但性能仍然不是最佳的。
我们的主要问题是针对这种使用水平(2000 所活跃学校)的单一数据库设计是否可行并且可以充分优化。
【问题讨论】:
-
"注意已经应用的索引(这是我们已经尝试过的)但性能仍然不是最佳的。" MySQL 是否也使用索引这就是问题 -> @ 987654324@ 并在此处发布结果和查询.. MySQL 应该能够在单个表中处理数百万甚至数十亿条记录,当索引和 MySQL 使用索引时。
-
也代替文档 ->
SHOW CREATE TABLE table用于问题/查询中涉及的每个表并在此处发布结果.. -
Raymond - 恐怕你说的都不清楚。我知道 mysql 可以处理它......但这不是我的问题。另外 - 不明白解释查询/显示创建的意思... :)
-
explain query 生成一个查询计划,以便我们查看 MySQL 是否确实在使用索引进行查询。SHOW CREATE TABLE table 生成一个
CREATE TABLE结构,因此我们可以自己查看和使用该表测试一些东西。我们还需要知道你执行了哪些查询“恐怕你所说的没有什么是清楚的。” 比这更简单,我无法解释,因为这是一种性能问题我们需要这些信息,否则这个问题对我们来说完全不清楚.. -
谢谢 - 将尽我所能修改(请记住,我是创始人/所有者而不是开发人员)所以在技术上解决问题的方式较少。
标签: mysql database performance indexing summary