When user query is provided, we are build RPC request(GetRequest, Scanner) to fetch list of KeyValue from storage. For query, I think mostly we only need bytes for rowKey(GetRequest), but currently building rowKey, qualifier, value on Serializable is not separated so we have to serialize qualifier and value even though we don't need it. I am suggesting to separate building rowKey, qualifier, value in Serializable so for query, we can skip building qualifier, value which is unnecessary.
Here is what I have found from profiling through jvisualvm. Note that buildRequest function takes more resource than fetchInner(actual I/O request to storage). I think this should be fixed. what do you guys think? [image: buildRequest.png]