我有一个页面,每次加载时都会对 2 个不同的 MYSQL 表进行 4 个 SQL 调用(2 个 SELECT、1 个 INSERT 和一个 UPDATE)。
该页面是用 PHP 编码的,没有任何缓存。我预计每个表的大小将增长到大约 30,000 行,并且尚未进行负载测试。SELECT 查询将每个查询最多提取 5 行。
我能做些什么来防止数据库在负载过大的情况下崩溃。将索引添加到与我的查询中引用的列相对应的表有帮助吗?
我有一个页面,每次加载时都会对 2 个不同的 MYSQL 表进行 4 个 SQL 调用(2 个 SELECT、1 个 INSERT 和一个 UPDATE)。
该页面是用 PHP 编码的,没有任何缓存。我预计每个表的大小将增长到大约 30,000 行,并且尚未进行负载测试。SELECT 查询将每个查询最多提取 5 行。
我能做些什么来防止数据库在负载过大的情况下崩溃。将索引添加到与我的查询中引用的列相对应的表有帮助吗?
首先,30,000 行并不是很多数据;数据库应该能够轻松处理这么多。
如果SELECT
s 是重复的,那么您应该启用的查询缓存可能会缓存它们,因此来自这些的负载可以忽略不计。您几乎应该总是在要过滤和排序的列上具有索引,因此请确保您的查询使用索引。
如果您不需要INSERT
立即从 s 获取数据,则可以使用INSERT DELAYED
,它将插入队列,直到表未使用并同时插入所有等待的行。除非您期望INSERT
每秒始终有多个 s,否则使用INSERT DELAYED
可能不会产生明显的差异。
确保UPDATE
s 也在使用索引。
更具体地说,我们需要更多信息,例如数据库的结构和代码。