[SERVER-81012] KeyString Version of Index Scan Optimization Created: 12/Sep/23  Updated: 02/Feb/24

Status: Open
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Zixuan Zhuang Assignee: Backlog - Storage Execution Team
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-86151 Create unowned key_string::View type Open
Related
related to SERVER-65089 Avoid unnecessary KeyString copies in... Open
Assigned Teams:
Storage Execution
Participants:
Linked BF Score: 1

 Description   

During the investigation of a performance regression BF-29842, I find that the classic engine uses WriedTigerIndexCursorBase::curr  which consumes 0.5% CPU, but the new SBE engine uses WriedTigerIndexCursorBase::getKeyStringEntry  which consumes 5.75% CPU. 

The profiler shows a large amount of CPU on memory allocation in KeyString copy, but not for curr(). The curr() version avoids returning full BSON object in some cases, we should do some optimization on the keyString version.


Generated at Thu Feb 08 06:45:13 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.