Mysql 速度和性能优化问题:多数据库模型与单个数据库
我有一个基本上是学校考试系统的申请。学生参加考试。教师跟踪测试。目前,我们只有一个数据库(mysql)来存储所有信息。随着用户的增长,性能非常缓慢。现在的决定是,是为每所学校设立一个数据库,还是以某种方式优化我们现有的单个数据库。我们的问题是,对于单个db和多达1000所学校,性能优化是否可能/建议。让我们了解一下正在处理的数据:目前约有1000所学校注册,但只有40-50所学校积极使用该系统。这样一来,student表中的行数就超过了8000行,但包含student_答案(记录测验答案)的表已经超过了70k,这就是问题所在。类似地,我们有一个测验参与者表(记录每个用户进行的每个测验),它也超过70000行 我们将重视对以下方面的任何评论Mysql 速度和性能优化问题:多数据库模型与单个数据库,mysql,database,performance,indexing,summary,Mysql,Database,Performance,Indexing,Summary,我有一个基本上是学校考试系统的申请。学生参加考试。教师跟踪测试。目前,我们只有一个数据库(mysql)来存储所有信息。随着用户的增长,性能非常缓慢。现在的决定是,是为每所学校设立一个数据库,还是以某种方式优化我们现有的单个数据库。我们的问题是,对于单个db和多达1000所学校,性能优化是否可能/建议。让我们了解一下正在处理的数据:目前约有1000所学校注册,但只有40-50所学校积极使用该系统。这样一来,student表中的行数就超过了8000行,但包含student_答案(记录测验答案)的表已
我们的主要问题是,针对这种使用水平(2000所活跃学校)的单一db设计是否可行,是否可以充分优化 一对多数据库 术语“数据库”可能意味着“服务器”,也可能指创建数据库。在后一种情况下:
SELECT ... FROM dbname.tblname ...
速度和
USE dbname;
...
SELECT ... FROM tblname ...
因此,表是在同一个数据库中还是在不同的数据库中并不重要
如果您指的是不同的服务器(计算机),那么这是一个很大的区别
另一种方法是将所有学校放入一个表,并为学校id
增加一列。这通常是最好的。但是,我觉得这将是更多的工作比预期的,我会假设你有
- 一个MySQL实例(在一台服务器上)
- 许多
,每个“学校”一个数据库
- 每个
都有多个表格,用于获取有关该学校的信息数据库
显示创建表
。它可以简单到缺少一些索引
适当地索引,即使是一个70K行的表,也是一个“小”表
汇总表?对于十亿行的表格,我强烈鼓励使用汇总表。对于70K行,它可能很有用。你想总结一下吗?你要总结的表格是什么
模式好的,您有该模式的图片。这很难处理。而
description
的描述性不如SHOW CREATE TABLE
。我看不到很多次键?难怪您会遇到性能问题。向我们显示一个选择连接两个或多个表并具有位置的;我们将讨论需要哪些其他索引。“注意已经应用的索引(这是我们已经尝试过的),但性能仍然不是最佳的。”MySQL是否也使用了一个问题所在的索引->解释查询
,并将结果和查询发布在此处。。MySQL应该能够在一个表中处理数百万甚至数十亿条记录,只要建立索引,MySQL就可以使用索引。此外,对于问题/查询中涉及的每个表,显示CREATE table table
,并将结果发布到这里。Raymond-恐怕你说的都不清楚。我知道mysql可以处理……但这不是我的问题。另外-不明白您所说的解释查询/显示创建…:)是什么意思生成一个查询计划,以便我们可以查看MySQL是否确实在使用索引进行查询。。并生成一个CREATE TABLE
结构,以便我们可以自己查看并使用该表来测试一些东西。。此外,我们还需要知道您执行了哪些查询“恐怕您所说的一切都不清楚”。更简单的是,这是一个性能问题,我无法解释,因为这是一个性能问题,我们需要这些信息,否则这个问题对我们来说完全不清楚。谢谢-将尽我所能(记住我是创始人/所有者,而不是开发人员)你能解释一下SHOW CREATE TABLES…或者一段youtube视频/文章演示如何做以改进我的问题吗?你的想法对一开始很有帮助