2013-02-20 87 views
-1

我有一个页面,每次加载时会对2个不同的MYSQL表进行4次SQL调用(2次SELECT,1次INSERT和UPDATE)。加载MYSQL支持的页面

这个页面是用PHP编码的,没有任何缓存。我预计每张表的大小会增加到约30,000行,并且没有经过负载测试。 SELECT查询将每个查询最多拉出5行。

我该怎么做才能防止数据库在负载过重时崩溃。将索引添加到与查询中引用的列相对应的表有帮助吗?

+1

如果您在不经常更改的值上运行选择,则可以将它们缓存到服务器上,以防止每次对相同的数据运行相同的查询。 – DiMono 2013-02-20 18:25:12

+0

那么,因为你没有发布任何代码,数据库架构,数据,或任何有用或相关的任何人都能够为您提供真实的答案......是的。 30k行是一个小型数据库,假设你已经设计了它并且查询*正确*,那么一切都将是阳光和彩虹。 – Sammitch 2013-02-20 18:32:56

+1

“我...没有加载测试...我能做些什么来防止db在太多负载下崩溃”您应该继续进行负载测试。 – 2013-02-20 18:41:00

回答

2

首先,30,000行不是很多数据;数据库应该能够轻松处理那么多。

如果SELECT是重复的,您应该启用的查询缓存可能会缓存它们,因此这些缓存中的负载可以忽略不计。您应该在要过滤和排序的列上几乎总是有索引,因此请确保您的查询使用索引。

如果您不需要立即从INSERT中获取数据,则可以使用INSERT DELAYED,它将对插入进行排队,直到表未被使用并同时插入所有等待的行。除非您期望每秒持续有多个INSERT秒,否则使用INSERT DELAYED可能不会有显着差异。

确保UPDATE也正在使用索引。要说更具体的东西,我们需要更多的信息,比如数据库和代码的结构。

+0

谢谢你。我知道我没有太具体,但是这是我寻找的信息。 – rocketas 2013-02-20 19:03:02