[
https://issues.apache.org/jira/browse/PHOENIX-1040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
James Taylor updated PHOENIX-1040:
----------------------------------
Summary: support query using metadata cache (was: support qurey using
metadata cache)
> support query using metadata cache
> -----------------------------------
>
> Key: PHOENIX-1040
> URL: https://issues.apache.org/jira/browse/PHOENIX-1040
> Project: Phoenix
> Issue Type: Improvement
> Affects Versions: 3.0.0
> Reporter: daniel meng
> Labels: PointLookup, metadata
> Attachments: PHOENIX-1040.PATCH
>
>
> I have use case like : select * from t where ROW = ? (ROW is primary key),so
> it just a hbase get.
> and it turn out a single query will do two RPCs for metadata, they are all
> calling to
> {code}
> public static ColumnResolver getResolverForQuery(SelectStatement
> statement, PhoenixConnection connection)
> throws SQLException {
> List<TableNode> fromNodes = statement.getFrom();
> if (fromNodes.size() == 1)
> return new SingleTableColumnResolver(connection,
> (NamedTableNode)fromNodes.get(0), true);
> {code}
> as you can see "SingleTableColumnResolver(connection,
> (NamedTableNode)fromNodes.get(0), true)", the third parameter is hard coded
> to true, which means it never use cache. for performance, we let the query
> use metadata cache, our test show 30% improvement on RT in our use case.
> in our patch, we do:
> 1. add an timer based updater at the global cache (the one in
> ConnectionQueryServices)
> 2. the phoenixconnection doesn't have it's own cache, it has a reference to
> global cache instead
> i'm looking forward for your advice, thanks
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)