lizhanhui commented on PR #8766:
URL: https://github.com/apache/rocketmq/pull/8766#issuecomment-2434072725

   > The performance loss is not related to prefetching. The schedule message 
deliver speed is 160/s because every time the iterator only returns 16 
messages, and the deliver thread will sleep 100ms after iterate finish. See 
org.apache.rocketmq.broker.schedule.ScheduleMessageService.DeliverDelayedMessageTimerTask#executeOnTimeUp
   
   1. The original implementation uses one-shot(at most 16 results) multi-get 
to simulate iterator; The outcome iterator fails to return all results, thus, 
does not fit well for the mentioned use case;
   2. You change is to use lazy single get to iterate; and use potential 
pre-fetch to accelerate;
   3. A third option is to directly wrap RocksIterator with prefix;
   
   It would be best to make further comparisons in terms of performance(why 
multi-get at present), code maintenance, ...
   After all pros and cons are clarified, we may finalize this pull request.
   
   Another issue is option 2, aka, this pull request, changes original 
behavior. We need to verify the change does not impact semantics of upper layer 
code bases.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to