首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在mysql中快速读写数据?

如何在mysql中快速读写数据?
EN

Stack Overflow用户
提问于 2010-11-20 23:32:57
回答 3查看 1K关注 0票数 1

嗨,朋友们,我正在使用MySQL DB为我的一个产品,大约250所学校现在是烧焦了它,它大约每小时1500000插入和大约每天12000000插入,我认为我目前的设置就像一个单一的服务器可能在几个小时内崩溃,读也是一样的写,我怎么才能使它崩溃无崩溃的DB服务器,我现在面临的主要问题是写入和读取数据的速度都很慢我如何克服这个问题,这对我来说很难得到一个solution.guys请帮助me..which是做解决方案的好模型?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-21 00:50:29

我的建议是:

  • 构建您的应用程序轻量级。不要使用像活动记录这样的高级数据库抽象层。关于mysql permformance.
  • Learn,关于mysql replication.
  • Learn,关于load balancing.
  • Learn,关于内存缓存,
  • 都学到了很多。(memcached)
  • Hire管理员(具备良好的mysql知识)或web应用程序性能guru/consultant.

具体的策略取决于您的应用程序以及如何使用它。Mysql复制,可能适合也可能不合适(同样适用于前面提到的分片策略)。但这是实现一定程度缩放的一种相当简单的方法,因为它不会对应用程序设计产生太大影响。在内存缓存中,可以从数据库中保留一些负载,但它们需要一些工作来应用和一些权衡。最后,您需要全面了解如何在高负载下处理数据库驱动的应用程序。如果你有一个紧迫的最后期限,增加外部人力,因为如果没有经验,你不会在6周内做好这件事。

票数 1
EN

Stack Overflow用户

发布于 2010-11-20 23:50:48

每秒大约500次插入确实不是小菜一碟。

对于灵活的解决方案,您可能希望实现某种类型的分片。可能最简单的解决方案是预先将学校分成组,并将不同学校组的数据存储在不同的服务器上。例如,学校1-10的数据存储在服务器A上,学校11-20存储在服务器B上,等等。这几乎是无限可扩展的,假设来自不同学校的数据之间几乎没有关系。

此外,您可以尝试在问题上投入更多的马力,并投资于SSD驱动器的RAID,假设您有足够的处理能力,您应该可以。当然,如果它是一个巨大的数据库,SSD驱动器的容量可能不够。

最后,看看是否可以减少插入的次数,例如,通过非规范化数据库。比方说,不是将每个学生的出勤率存储在单独的行中,而是将整个班级的出勤率作为向量放在一行中。当然,这样的更改将严重限制您的查询能力。

票数 3
EN

Stack Overflow用户

发布于 2010-11-20 23:50:08

很难同时获得快速读取和写入。要获得快速读取,您需要添加索引。要获得快速写入,您需要使用较少的索引。而且,为了让两者都更快,它们不能相互锁定。

根据您的需要,一种解决方案是拥有两个数据库。将新数据写入您的实时数据库,并且偶尔当它处于安静状态时,您可以将数据同步到另一个数据库,在那里您可以执行查询。这种方法的缺点是您读取的数据会有点旧。这可能是问题,也可能不是问题,这取决于你需要做什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4233492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档