Also, they're relying on Phoenix to do secondary index updates for them.
Obviously, you can do this faster than Phoenix can if you know the exact
use-case.
On 7/12/18 6:31 PM, Pedro Boado wrote:
A tip for performance is reusing the same preparedStatement , just
clearParameters() , set values and executeUpdate() over and over again.
Don't close the statement or connections after each upsert. Also, I
haven't seen any noticeable benefit on using jdbc batches as Phoenix
controls batching by when commit() is called.
Keep an eye on not calling commit after every executeUpdate (that's a
real performance killer) . Batch commits in every ~1k upserts .
Also that attempt of asynchronous code is probably another performance
killer. Are you creating a new Runnable per database write and opening
and closing dB connections per write? Just spawn a few threads (5 to 10,
if client cpu is not maxed keep increasing it) and send upserts in a for
loop reusing preparedStatement and connections.
With a cluster that size I would expect seeing tens of thousands of
writes per second.
Finally have you checked that all RS receive same traffic ?
On Thu, 12 Jul 2018, 23:10 Pedro Boado, <pedro.bo...@gmail.com
<mailto:pedro.bo...@gmail.com>> wrote:
I believe it's related to your client code - In our use case we do
easily 15k writes/sec in a cluster lower specced than yours.
Check that your jdbc connection has autocommit off so Phoenix can
batch writes and that table has a reasonable UPDATE_CACHE_FREQUENCY
( more than 60000 ).
On Thu, 12 Jul 2018, 21:54 alchemist, <alchemistsrivast...@gmail.com
<mailto:alchemistsrivast...@gmail.com>> wrote:
Thanks a lot for your help.
Our test is inserting new rows individually. For our use case,
we are
benchmarking that we could be able to get 10,000 new rows in a
minute, using
a cluster of writers if needed.
When executing the inserts with Phoenix API (UPSERT) we have
been able to
get up to 6,000 new rows per minute.
We changed our test to perform the inserts individually using
the HBase API
(Put) rather than Phoenix API (UPSERT) and got an improvement of
more than
10x. (up to 60,000 rows per minute).
What would explain this difference? I assume that in both cases
HBase must
grab the locks individually in the same way.
--
Sent from: http://apache-phoenix-user-list.1124778.n5.nabble.com/