Rajeshbabu Chintaguntla created PHOENIX-7257:
------------------------------------------------
Summary: Writes to index tables on immutable table can be parallel
for better performance
Key: PHOENIX-7257
URL: https://issues.apache.org/jira/browse/PHOENIX-7257
Project: Phoenix
Issue Type: Improvement
Reporter: Rajeshbabu Chintaguntla
Assignee: Rajeshbabu Chintaguntla
3 phase commit has introduced to ensure strong consistency of between data
table and index tables when the data table is immutable.
Writing data to indexes happening serially which can be made parallel to get
better performance. Here is the code snippet in MutationState.
{noformat}
private void sendMutations(Iterator<Entry<TableInfo, List<Mutation>>>
mutationsIterator, Span span, ImmutableBytesWritable indexMetaDataPtr, boolean
isVerifiedPhase)
throws SQLException {
while (mutationsIterator.hasNext()) {
Entry<TableInfo, List<Mutation>> pair = mutationsIterator.next();
TableInfo tableInfo = pair.getKey();
byte[] htableName = tableInfo.getHTableName().getBytes();
List<Mutation> mutationList = pair.getValue();
List<List<Mutation>> mutationBatchList =
getMutationBatchList(batchSize, batchSizeBytes,
mutationList);
....
Table hTable =
connection.getQueryServices().getTable(htableName);
try {
if (table.isTransactional()) {
// Track tables to which we've sent uncommitted data
if (tableInfo.isDataTable()) {
uncommittedPhysicalNames.add(table.getPhysicalName().getString());
phoenixTransactionContext.markDMLFence(table);
}
// Only pass true for last argument if the index is
being written to on it's own (i.e. initial
// index population), not if it's being written to for
normal maintenance due to writes to
// the data table. This case is different because the
initial index population does not need
// to be done transactionally since the index is only
made active after all writes have
// occurred successfully.
hTable =
phoenixTransactionContext.getTransactionalTableWriter(connection, table,
hTable, tableInfo.isDataTable() && table.getType() == PTableType.INDEX);
}
.....
hTable.batch(mutationBatch, null);
}
....
}
}
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)