[DRIVERS-816] Hidden Indexes Created: 29/Jan/20  Updated: 30/Jun/23  Resolved: 30/Jun/23

Status: Closed
Project: Drivers
Component/s: None
Fix Version/s: None

Type: Epic Priority: Major - P3
Reporter: Backlog - Core Eng Program Management Team Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on PHPLIB-575 Hidden Indexes Closed
depends on CDRIVER-3646 Hidden Indexes Closed
depends on CSHARP-3086 Hidden Indexes Closed
depends on CXX-2007 Hidden Indexes Closed
depends on GODRIVER-1600 Hidden Indexes Closed
depends on JAVA-3717 Hidden Indexes Closed
depends on MOTOR-541 Document Hidden Index Option Closed
depends on NODE-2591 Hidden Indexes Closed
depends on PYTHON-2219 Document Hidden Index Option Closed
depends on RUBY-2243 Hidden Indexes Closed
depends on RUST-399 Hidden Indexes Closed
Server Compat: 4.4
Quarter: FY21Q2
Upstream Changes Summary:

Following the completion of this project:

  • An index can be marked as "hidden", meaning that it is not available for consideration by the planner. While hidden, the index cannot be used by any active index filters, and any operations which hint the index will return an exception to the user. TTL indexes which are hidden will be unavailable for queries, but will continue to facilitate deletion of outdated documents.
  • An index can be hidden in one of two ways:
    • The "createIndexes" command now allows a new boolean option, "hidden", to be included with each index spec. If true, then the index will be marked hidden as soon as it has completed building.
    • An existing index can be hidden or unhidden using the "collMod" command's "index" parameter, whose argument (a document of options) now permits a new boolean field called "hidden".
Cost Threshold %: 100
Driver Compliance:
Key Status/Resolution FixVersion
CDRIVER-3646 Works as Designed
CXX-2007 Fixed 3.6.0
CSHARP-3086 Fixed 2.12.0
GODRIVER-1600 Fixed 1.4.0
JAVA-3717 Fixed 4.1.0
NODE-2591 Fixed 4.0.0
MOTOR-541 Duplicate
PYTHON-2219 Fixed 3.11
PHPLIB-575 Works as Designed
RUBY-2243 Fixed 2.13.0
RUST-399 Done
SWIFT-828 Fixed 1.1.0

 Description   
Downstream Change Summary

TBD when the project completes.

Description of Linked Ticket

Epic Summary

Summary

This project implements functionality to allow indexes to be hidden from the query planner.

Motivation

As MongoDB users evolve schemas and tune performance, they are often in a position where dropping an index could improve query performance and reduce collection overhead. However, dropping an index comes with the risk that an application or script may depend on an index for acceptable performance and recreating can take substantial time.

Allowing users to hide an index provides the opportunity to evaluate impact on user workloads. Restoring the index can then be done quickly, without having to undergo the time and expense of a full index build.

Additionally, adding an index can cause a negative change in performance, if the query planner starts using the new index over a preferable existing index. Creating an index that is hidden on build completion allows users to make it visible at a suitable time for evaluation.

Hiding an index only allows for plan selection evaluation and does not reduce the cost of maintenance. Index removal will still be required to reclaim disk space and improve write performance.

Cast of Characters

  • Product Owner: Katya Kamenieva
  • Project Lead: James Wahlin
  • Program Manager: Craig Homa

Documentation

Scope Document
Technical Design Document

 

Specs commit: https://github.com/mongodb/specifications/commit/fafb0076e3c2ee8c35497bd1260c1cfc672c4919



 Comments   
Comment by Katya Kamenieva [ 24/Apr/20 ]

Go driver is needed for INIT-36

Generated at Thu Feb 08 08:22:26 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.