Cassandraの大規模行読み取りの並列処理

パフォーマンスを向上させるため、行の大量取得を並列処理するようにDSE Searchを構成します。

パフォーマンスを向上させるため、行の大量取得を並列処理するようにDSE Searchを構成できます。以下のようにsolrconfig.xmlqueryResponseWriterを構成します。

<queryResponseWriter name="javabin" class="solr.BinaryResponseWriter">
<str name="resolverFactory">com.datastax.bdp.search.solr.response.ParallelRowResolver$Factory</str>
</queryResponseWriter>

デフォルトでは、並列行リゾルバーは最多でx個のスレッドを使って、並列読み取りを実行します。ここで、xはCPU数です。各スレッドは、要求行の総数をCPU数で割った値に等しい行数のバッチをシーケンシャルに読み取っていきます。

読み取られる行数 = 要求行の総数/CPU数

バッチ・サイズは、要求に従って変更できます。そのためには、cassandra.readBatchSize HTTP要求パラメーターを指定します。バッチが小さければ小さいほど、より多くの並列処理を使用します。大きければ大きいほど、使用する並列処理は少なくなります。