[ 
https://issues.apache.org/jira/browse/IGNITE-22500?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17859937#comment-17859937
 ] 

Ivan Bessonov commented on IGNITE-22500:
----------------------------------------

My thoughts on the topic:
 * _We have additional switch from REGISTERED to BUILDING, which can in theory 
be eliminated from catalog, it'll save us additional second (DD is 500ms now)_
 * We can't lower DD for a specific status change, because it would violate 
schema synchronization protocol. After waiting for "msSafeTime - DD - skew" 
(don't remember precise rules about clock skew) we rely on the fact that the 
catalog is up-to-date, breaking that invariant would lead to some unforeseen 
consequences.
 * What we really need it:
 ** The ability to create indexes in the same DDL as the table itself. We do 
this implicitly for PK. For other indexes it's only a question of API
 ** For SQL scripts we could batch consecutive DDLs and create indexes at the 
same time as a table implicitly, which seems like an optimal choice. This way 
we don't need any special syntax
 ** Some DDL queries can be executed in parallel, why not. Again, seems more 
like a SQL issue to me

> Remove unnecessary waits when creating an index
> -----------------------------------------------
>
>                 Key: IGNITE-22500
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22500
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Roman Puchkovskiy
>            Assignee: Ivan Bessonov
>            Priority: Major
>              Labels: ignite-3
>
> When creating an index with current defaults (DelayDuration=1sec, 
> MaxClockSkew=500ms, IdleSafeTimePropagationPeriod=1sec), it takes 6-6.5 
> seconds on my machine (without concurrent transactions, on an empty table 
> that was just created).
> According to the design, we need to first wait for the REGISTERED state to 
> activate on all nodes, including the ones that are currently down; this is to 
> make sure that all transactions started on schema versions before the index 
> creation have finished before we start to build the index (this makes us 
> waiting for DelayDuration+MaxClockSkew). Then, after the build finishes, we 
> switch the index to the AVAILABLE state. This requires another wait of 
> DelayDuration+MaxClockSkew.
> Because of IGNITE-20378, in the second case we actually wait longer (for 
> additional IdleSafeTimePropagationPeriod+MaxClockSkew).
> The total of waits is thus 1.5+3=4.5sec. But index creation actually takes 
> 6-6.5 seconds. It looks like there are some additional delays (like 
> submitting to the Metastorage and executing its watches).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to