我使用Mongo db存储大量数据,这些数据在一毫秒内插入数百条记录。系统运行并运行了几年。但是根据业务需要,我需要在mongo db集合中添加一个新索引:
我正在使用php Shanty库来创建索引。这是代码片段
$indexArray[] = array(
"index" => array(
"category" => -1,
"sub_category" => 1,
"name" => 1,
"product_name" => 1,
"category_id" => 1,
"value" => -1,
"begin_dt_tm" => -1
),
"options" => array(
"background" => true,
"name" => "Index_CSNPCIdVBdt"
)
);
foreach ($indexArray as $columnIndexData) {
$newCollectionObject->ensureIndex($columnIndexData["index"], $columnIndexData["options"]);
}
以上创建索引很好。我面临的唯一问题是在索引创建过程中我的系统出现故障并且mongo db没有响应。我已经设置了'background:true'选项,它可以在后台完成这项工作,但它仍会使我的服务器无法响应,直到创建索引。
是否有替代方案以便mongo db保持响应?
答案 0 :(得分:0)
使用副本集,您可以执行滚动维护(基本上在辅助节点作为独立实例运行时创建索引),这不会影响您的客户端。由于您有一个独立的实例,不适合您。
我怀疑服务器上的负载相当高和/或您的硬件是瓶颈(通常怀疑RAM不够,磁盘速度慢......)