[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: |
|
||||||||||||||||
| 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. |