At least on Master, it appears the default HConnectionFactoryImpl is calling HConnectionManager.createConnection(Configuration), which creates an unmanaged connection. This means that each PhoenixConnection will be making and managing its own HBase Connection.
On Tue, Jan 13, 2015 at 1:50 AM, Gabriel Reid <gabriel.r...@gmail.com> wrote: > Hi David, > > The PhoenixConnection class is not thread-safe, and shouldn't be > shared over multiple threads. I think that this is probably the case > with quite a few other JDBC drivers as well, so it's generally safer > to use a JDBC connection pool if you want to use connections in > multiple threads. > > If I remember correctly, a single HConnection is used (and shared) by > multiple PhoenixConnection objects that have been instantiated from > the same Driver instance, so there shouldn't be any performance > overhead to using a single Phoenix connection per thread. > > - Gabriel > > > On Tue, Jan 13, 2015 at 10:31 AM, David chen <c77...@163.com> wrote: > > My application will base on Phoenix, and response the multi-user query. I > > plan to create a thread pool that its per thread will correspond to a > user > > query. But i don't sure whether or not multi-thread in the pool should > share > > the single PhoenixConnection object? > > I remember that HBase community advice that the multi-thread should share > > the single HConnection object as much as possible. > > Any ideas can be appreciated! >