Я запускаю сценарий с несколькими миллионами операторов обновления, например:
UPDATE data SET value = 0.9234 WHERE fId = 47616 AND modDate = '2018-09-24' AND valueDate = '2007-09-01' AND last_updated < '2018-10-01';
fId, modDate и valueDate - это 3 компонента составного первичного ключа таблицы данных.
Сначала я запустил это с AUTOCOMMIT=1
, но я подумал, что оно ускорится, если я установлю AUTOCOMMIT=0
и оберну транзакции в блоки по 25.
В режиме автоматической фиксации я использовал SHOW PROCESSLIST
и я вижу инструкцию UPDATE в выходных данных, поэтому по внешнему ключу fId я могу сказать, как далеко продвинулся сценарий.
Однако без автоматической фиксации, наблюдая за ее выполнением сейчас, я не виделчто-нибудь с SHOW PROCESSLIST
, просто так:
610257 schema_owner_2 201.177.12.57:53673 mydb Sleep 0 NULL 0.000
611020 schema_owner_1 201.177.12.57:58904 mydb Query 0 init show processlist 0.000
Статус Sleep
делает меня параноиком, что другие пользователи в системе блокируют обновления, но если я запускаю SHOW OPEN TABLES
, я не уверен,есть проблема:
MariaDB [mydb]> SHOW OPEN TABLES;
+----------+----------------+--------+-------------+
| Database | Table | In_use | Name_locked |
+----------+----------------+--------+-------------+
| mydb | data | 2 | 0 |
| mydb | forecast | 1 | 0 |
| mydb | modification | 0 | 0 |
| mydb | data3 | 0 | 0 |
+----------+----------------+--------+-------------+
Мой сценарий будет ждать вечно?Должен ли я вернуться к использованию режима автоматической фиксации?Есть ли способ увидеть, как далеко он продвинулся?Я думаю, что я могу проверить данные для обновлений, но это было бы трудоемким, чтобы собрать.