InfiniDB3.5以前は、別のテーブルであっても、各テーブルに対して、DML/DDLの同時実行は、サポートされていません。同時に実行した場合は、以下のとおり、後続処理で IDB-2010エラーが発生します。
なお、InfiniDB4.0以降からは、別のテーブルであれば、同時実行が可能となりました。
※InfiniDB3.5以前でも、cpimportの場合は、別テーブルへの同時実行はサポートされています。
InfiniDB3.5 の実行例
1. DELETE文を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
mysql> \. /tmp/test1.sql -------------- select sysdate() -------------- +---------------------+ | sysdate() | +---------------------+ | 2014-08-05 17:11:36 | +---------------------+ 1 row in set (0.00 sec) -------------- delete from lineorder1 -------------- Query OK, 3000000 rows affected (14.71 sec) -------------- select sysdate() -------------- +---------------------+ | sysdate() | +---------------------+ | 2014-08-05 17:11:50 | +---------------------+ 1 row in set (0.00 sec) |
2. 別セッションで、INSERT文を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
mysql> \. /tmp/test2.sql -------------- select sysdate() -------------- +---------------------+ | sysdate() | +---------------------+ | 2014-08-05 17:11:37 | +---------------------+ 1 row in set (0.00 sec) -------------- insert into lineorder2(lo_ordertotalprice) values(1000) -------------- ERROR 122 (HY000): IDB-2010: Unable to perform DDL/DML because session 4 has an active transaction. -------------- select sysdate() -------------- +---------------------+ | sysdate() | +---------------------+ | 2014-08-05 17:11:47 | +---------------------+ 1 row in set (0.01 sec) |
InfiniDB4.0の実行例
以下のとおり、InfiniDB4.0以降より、DML/DDLの同時実行が可能になっています。1. DELETE文を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
mysql> \. /tmp/test1.sql -------------- select sysdate() -------------- +---------------------+ | sysdate() | +---------------------+ | 2014-08-06 11:41:26 | +---------------------+ 1 row in set (0.00 sec) -------------- delete from lineorder1 -------------- Query OK, 3000000 rows affected (37.48 sec) -------------- select sysdate() -------------- +---------------------+ | sysdate() | +---------------------+ | 2014-08-06 11:42:03 | +---------------------+ 1 row in set (0.00 sec) |
2. 別セッションで、INSERT文を実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
mysql> \. /tmp/test2.sql -------------- select sysdate() -------------- +---------------------+ | sysdate() | +---------------------+ | 2014-08-06 11:41:27 | +---------------------+ 1 row in set (0.32 sec) -------------- insert into lineorder2(lo_ordertotalprice) values(1000) -------------- Query OK, 1 row affected (3.12 sec) -------------- select sysdate() -------------- +---------------------+ | sysdate() | +---------------------+ | 2014-08-06 11:41:30 | +---------------------+ 1 row in set (0.00 sec) |