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