-1

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

该页面是用 PHP 编码的,没有任何缓存。我预计每个表的大小将增长到大约 30,000 行,并且尚未进行负载测试。SELECT 查询将每个查询最多提取 5 行。

我能做些什么来防止数据库在负载过大的情况下崩溃。将索引添加到与我的查询中引用的列相对应的表有帮助吗?

4

1 回答 1

2

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

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

如果您不需要INSERT立即从 s 获取数据,则可以使用INSERT DELAYED,它将插入队列,直到表未使用并同时插入所有等待的行。除非您期望INSERT每秒始终有多个 s,否则使用INSERT DELAYED可能不会产生明显的差异。

确保UPDATEs 也在使用索引。

更具体地说,我们需要更多信息,例如数据库的结构和代码。

于 2013-02-20T18:33:52.880 回答