Concurrent query execution issue
Hello, I am trying to execute in parallel a few queries in MonetDB. I have read in the documentation that Monet uses the OCC transaction model so read operations should not block the table. I have 3 CREATE TABLE queries that read from the same source table, I launch 3 different mclient processes and launch one query on each client. The queries execute in parallel as expected, I can see them running in sys.queue(). The first query that completes, creates the table and commits fine. When the other two queries finish their job I can see the message “operation successful” but right after the client prints "COMMIT: transaction is aborted because of concurrency conflicts, will ROLLBACK instead”. What am I doing wrong? Apart from the newly created table, I did non write anything to the db so it should work fine. Any suggestion would be much appreciated, Thanks, Stefano
Hey Stefano, MonetDB tracks which tables exist inside of another table (called sys.tables). When you create a table, ‘sys.tables’ is updated with the newly created table. When multiple clients create tables at the same time, they each update the same table (‘sys.tables’). This causes concurrency conflicts. Regards, Mark
On 23 Aug 2016, at 16:48, Stefano Fioravanzo
wrote: Hello,
I am trying to execute in parallel a few queries in MonetDB. I have read in the documentation that Monet uses the OCC transaction model so read operations should not block the table.
I have 3 CREATE TABLE queries that read from the same source table, I launch 3 different mclient processes and launch one query on each client. The queries execute in parallel as expected, I can see them running in sys.queue().
The first query that completes, creates the table and commits fine. When the other two queries finish their job I can see the message “operation successful” but right after the client prints "COMMIT: transaction is aborted because of concurrency conflicts, will ROLLBACK instead”.
What am I doing wrong? Apart from the newly created table, I did non write anything to the db so it should work fine.
Any suggestion would be much appreciated, Thanks, Stefano _______________________________________________ users-list mailing list users-list@monetdb.org https://www.monetdb.org/mailman/listinfo/users-list
Thanks, I have tried to create the empty tables and then to insert the data using the INSERT INTO statement and everything worked in parallel perfectly! Stefano
On 23 Aug 2016, at 16:59, Mark Raasveldt
wrote: Hey Stefano,
MonetDB tracks which tables exist inside of another table (called sys.tables). When you create a table, ‘sys.tables’ is updated with the newly created table. When multiple clients create tables at the same time, they each update the same table (‘sys.tables’). This causes concurrency conflicts.
Regards,
Mark
On 23 Aug 2016, at 16:48, Stefano Fioravanzo
mailto:fioravanzos@gmail.com> wrote: Hello,
I am trying to execute in parallel a few queries in MonetDB. I have read in the documentation that Monet uses the OCC transaction model so read operations should not block the table.
I have 3 CREATE TABLE queries that read from the same source table, I launch 3 different mclient processes and launch one query on each client. The queries execute in parallel as expected, I can see them running in sys.queue().
The first query that completes, creates the table and commits fine. When the other two queries finish their job I can see the message “operation successful” but right after the client prints "COMMIT: transaction is aborted because of concurrency conflicts, will ROLLBACK instead”.
What am I doing wrong? Apart from the newly created table, I did non write anything to the db so it should work fine.
Any suggestion would be much appreciated, Thanks, Stefano _______________________________________________ users-list mailing list users-list@monetdb.org mailto:users-list@monetdb.org https://www.monetdb.org/mailman/listinfo/users-list
_______________________________________________ users-list mailing list users-list@monetdb.org https://www.monetdb.org/mailman/listinfo/users-list
participants (2)
-
Mark Raasveldt
-
Stefano Fioravanzo