[jira] [Updated] (IGNITE-6024) SQL: execute DML statements on the server when possible
[ https://issues.apache.org/jira/browse/IGNITE-6024?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vladimir Ozerov updated IGNITE-6024: Labels: important performance (was: performance) > SQL: execute DML statements on the server when possible > --- > > Key: IGNITE-6024 > URL: https://issues.apache.org/jira/browse/IGNITE-6024 > Project: Ignite > Issue Type: Task > Components: sql >Affects Versions: 2.1 >Reporter: Vladimir Ozerov >Assignee: Sergey Kalashnikov > Labels: important, performance > Fix For: 2.3 > > > Currently we execute DML statements as follows: > 1) Get query result set to the client > 2) Construct entry processors and send them to servers in batches > This approach is inefficient as it causes a lot of unnecessary network > communication Instead, we should execute DML statements directly on server > nodes when it is possible. > Implementation considerations: > 1) Determine set of queries which could be processed in this way. E.g., > {{LIMIT/OFFSET}}, {{GROUP BY}}, {{ORDER BY}}, {{DISTINCT}}, etc. are out of > question - they must go through the client anyway. Probably > {{skipMergeTable}} flag is a good starting point (good, not precise!) > 2) Send request to every server and execute local DML right there > 3) No failover support at the moment - throw "partial update" exception if > topology is unstable > 4) Handle partition reservation carefully > 5) Transactions: we still have single coordinator - this is a client. When > MVCC and TX SQL is ready, client will assign proper counters to server > requests. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Updated] (IGNITE-6024) SQL: execute DML statements on the server when possible
[ https://issues.apache.org/jira/browse/IGNITE-6024?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vladimir Ozerov updated IGNITE-6024: Issue Type: Task (was: Improvement) > SQL: execute DML statements on the server when possible > --- > > Key: IGNITE-6024 > URL: https://issues.apache.org/jira/browse/IGNITE-6024 > Project: Ignite > Issue Type: Task > Components: sql >Affects Versions: 2.1 >Reporter: Vladimir Ozerov >Assignee: Sergey Kalashnikov > Labels: performance > Fix For: 2.2 > > > Currently we execute DML statements as follows: > 1) Get query result set to the client > 2) Construct entry processors and send them to servers in batches > This approach is inefficient as it causes a lot of unnecessary network > communication Instead, we should execute DML statements directly on server > nodes when it is possible. > Implementation considerations: > 1) Determine set of queries which could be processed in this way. E.g., > {{LIMIT/OFFSET}}, {{GROUP BY}}, {{ORDER BY}}, {{DISTINCT}}, etc. are out of > question - they must go through the client anyway. Probably > {{skipMergeTable}} flag is a good starting point (good, not precise!) > 2) Send request to every server and execute local DML right there > 3) No failover support at the moment - throw "partial update" exception if > topology is unstable > 4) Handle partition reservation carefully > 5) Transactions: we still have single coordinator - this is a client. When > MVCC and TX SQL is ready, client will assign proper counters to server > requests. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Updated] (IGNITE-6024) SQL: execute DML statements on the server when possible
[ https://issues.apache.org/jira/browse/IGNITE-6024?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vladimir Ozerov updated IGNITE-6024: Labels: performance (was: ) > SQL: execute DML statements on the server when possible > --- > > Key: IGNITE-6024 > URL: https://issues.apache.org/jira/browse/IGNITE-6024 > Project: Ignite > Issue Type: Improvement > Components: sql >Affects Versions: 2.1 >Reporter: Vladimir Ozerov > Labels: performance > Fix For: 2.2 > > > Currently we execute DML statements as follows: > 1) Get query result set to the client > 2) Construct entry processors and send them to servers in batches > This approach is inefficient as it causes a lot of unnecessary network > communication Instead, we should execute DML statements directly on server > nodes when it is possible. > Implementation considerations: > 1) Determine set of queries which could be processed in this way. E.g., > {{LIMIT/OFFSET}}, {{GROUP BY}}, {{ORDER BY}}, {{DISTINCT}}, etc. are out of > question - they must go through the client anyway. Probably > {{skipMergeTable}} flag is a good starting point (good, not precise!) > 2) Send request to every server and execute local DML right there > 3) No failover support at the moment - throw "partial update" exception if > topology is unstable > 4) Handle partition reservation carefully > 5) Transactions: we still have single coordinator - this is a client. When > MVCC and TX SQL is ready, client will assign proper counters to server > requests. -- This message was sent by Atlassian JIRA (v6.4.14#64029)