PolarDB は、データベース内の DDL ステートメントの実行ステータスと MDL ステータスをモニタリングするための Polar Performance Schema をサポートしています。Polar Performance Schema は軽量なモニタリング機能です。MySQL の パフォーマンススキーマ 機能と比較して、メモリ使用量が少なく、パフォーマンスオーバーヘッドも低くなっています。このトピックでは、Polar Performance Schema を使用して DDL ステートメントの実行ステータスと MDL ステータスを表示する方法について説明します。
前提条件
PolarDB for MySQL クラスターのバージョンは、次のいずれかである必要があります。
5.7 (リビジョン 5.7.1.0.35 以降)
8.0.1 (リビジョン 8.0.1.1.21 以降)
8.0.2 (リビジョン 8.0.2.2.8 以降)
クラスターのバージョンを表示する方法については、「バージョン番号の照会」をご参照ください。
注意事項
DDL ステートメントは常にクラスターのプライマリノードで実行されます。したがって、DDL ステートメントの実行ステータスはプライマリノードで照会する必要があります。
プライマリエンドポイントを使用してクラスターに接続する場合、プライマリノードで DDL ステートメントの実行ステータスを直接照会できます。プライマリエンドポイントの表示方法については、「エンドポイントとポートの表示」をご参照ください。
クラスターエンドポイントを使用してクラスターに接続する場合、SQL ステートメントでヒントを使用して、DDL ステートメントの実行ステータスをプライマリノードで照会するように指定できます。詳細については、「読み書き分離」をご参照ください。
パフォーマンススキーマ機能が有効になると、Polar Performance Schema 機能は自動的に無効になります。
操作手順
このトピックで説明する方法は、InnoDB ストレージエンジンを使用するテーブルにのみ適用されます。
Polar Performance Schema を有効にします。
コンソールで loose_polar_performance_schema パラメーターを
ONに設定する必要があります。このパラメーターは、クラスターの再起動後に有効になります。詳細については、「クラスターパラメーターとノードパラメーターの設定」をご参照ください。次の表で、Polar Performance Schema に関連するパラメーターを説明します。
パラメーター
説明
loose_polar_performance_schema
Polar Performance Schema を有効にするかどうかを指定します。有効値:
ON:Polar Performance Schema を有効にします。
OFF:Polar Performance Schema を無効にします。
loose_polar_performance_schema_enable_row_locks
Polar Performance Schema が有効になっている場合に、行ロックのモニタリング情報を有効にするかどうかを指定します。
OFF (デフォルト):行ロックのモニタリング情報を無効にします。
ON:行ロックのモニタリング情報を有効にします。
説明このパラメーターは、PolarDB for MySQL 8.0.1 および 8.0.2 でのみ有効です。
performance_schema_max_thread_instances
Polar Performance Schema によってモニタリングされるスレッドの最大数。有効値:-1~65536。値 -1 は自動チューニングを示します。
説明このパラメーターは調整済みです。変更しないことを推奨します。
performance_schema_max_metadata_locks
Polar Performance Schema によってモニタリングされる MDL の最大数。有効値:-1~1048576。値 -1 は自動チューニングを示します。
説明このパラメーターは調整済みです。変更しないことを推奨します。
クラスターの起動後、次のステートメントを実行して、Polar Performance Schema が有効になっていることを確認できます。
SHOW VARIABLES LIKE 'polar_performance_schema';出力例:
+--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | polar_performance_schema | ON | +--------------------------+-------+ 1 row in set (0.00 sec)DDL ステートメントの実行ステータスと MDL ステータスを表示します。
DDL ステートメントの実行中に、次のステートメントを実行して
performance_schema.events_stages_currentテーブルを照会し、現在の DDL ステートメントの実行ステータスを取得できます。SELECT THREAD_ID,EVENT_ID, EVENT_NAME, WORK_COMPLETED, WORK_ESTIMATED,(WORK_COMPLETED/WORK_ESTIMATED)*100 as PROGRESS FROM performance_schema.events_stages_current;出力例:
+-----------+----------+------------------------------------------------------+----------------+----------------+----------+ | THREAD_ID | EVENT_ID | EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | PROGRESS | +-----------+----------+------------------------------------------------------+----------------+----------------+----------+ | 3057989 | 13 | stage/innodb/alter table (read PK and internal sort) | 56634 | 330135 | 17.1548 | +-----------+----------+------------------------------------------------------+----------------+----------------+----------+ 1 row in set (0.00 sec)performance_schema.threadsテーブルとinformation_schema.PROCESSLISTテーブルを使用して、次のステートメントを実行し、現在のイベントに対応する SQL ステートメントを表示できます。SELECT esc.THREAD_ID, esc.EVENT_NAME, esc.WORK_COMPLETED, esc.WORK_ESTIMATED, pl.INFO FROM performance_schema.events_stages_current esc LEFT JOIN performance_schema.threads th ON esc.thread_id = th.thread_id LEFT JOIN information_schema.PROCESSLIST pl ON th.PROCESSLIST_ID = pl.ID;出力例:
+-----------+------------------------------------------------------+----------------+----------------+-----------------------------------------------------------------------------------------+ | THREAD_ID | EVENT_NAME | WORK_COMPLETED | WORK_ESTIMATED | INFO | +-----------+------------------------------------------------------+----------------+----------------+-----------------------------------------------------------------------------------------+ | 3057989 | stage/innodb/alter table (read PK and internal sort) | 77034 | 330519 | ALTER TABLE test.test ALGORITHM=INPLACE, ADD testA VARCHAR(20) NOT NULL DEFAULT 'testA' | +-----------+------------------------------------------------------+----------------+----------------+-----------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)次のステートメントを実行して
performance_schema.metadata_locksテーブルを照会し、現在のクラスターの MDL 使用状況を取得できます。SELECT * FROM performance_schema.metadata_locks;出力例:
+-------------+--------------------+------------------+-------------+-----------------------+---------------------+---------------+-------------+------------------------+-----------------+----------------+ | OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | COLUMN_NAME | OBJECT_INSTANCE_BEGIN | LOCK_TYPE | LOCK_DURATION | LOCK_STATUS | SOURCE | OWNER_THREAD_ID | OWNER_EVENT_ID | +-------------+--------------------+------------------+-------------+-----------------------+---------------------+---------------+-------------+------------------------+-----------------+----------------+ | GLOBAL | NULL | NULL | NULL | 139949462878336 | INTENTION_EXCLUSIVE | STATEMENT | GRANTED | sql_base.cc:3103 | 3055785 | 1 | | TABLE | test | test | NULL | 139931318980224 | SHARED_WRITE | TRANSACTION | GRANTED | sql_parse.cc:6479 | 3055785 | 1 | | COMMIT | NULL | NULL | NULL | 139931318980480 | INTENTION_EXCLUSIVE | EXPLICIT | GRANTED | handler.cc:1669 | 3055785 | 1 | | TABLE | performance_schema | metadata_locks | NULL | 139934227366144 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:6479 | 3057612 | 1 | | GLOBAL | NULL | NULL | NULL | 139934216849664 | INTENTION_EXCLUSIVE | STATEMENT | GRANTED | sql_base.cc:5519 | 3057989 | 13 | | SCHEMA | test | NULL | NULL | 139934216849408 | INTENTION_EXCLUSIVE | TRANSACTION | GRANTED | sql_base.cc:5506 | 3057989 | 13 | | TABLE | test | test | NULL | 139934216848640 | SHARED_UPGRADABLE | TRANSACTION | GRANTED | sql_parse.cc:6479 | 3057989 | 13 | | BACKUP LOCK | NULL | NULL | NULL | 139934216849280 | INTENTION_EXCLUSIVE | TRANSACTION | GRANTED | sql_base.cc:5526 | 3057989 | 13 | | TABLESPACE | NULL | test/test | NULL | 139934216848384 | INTENTION_EXCLUSIVE | TRANSACTION | GRANTED | lock.cc:815 | 3057989 | 13 | | TABLE | test | #sql-17d9_2ea89a | NULL | 139934216848896 | EXCLUSIVE | STATEMENT | GRANTED | sql_table.cc:15054 | 3057989 | 13 | | GLOBAL | NULL | NULL | NULL | 139934216850176 | INTENTION_EXCLUSIVE | TRANSACTION | GRANTED | dictionary_impl.cc:416 | 3057989 | 13 | | TABLESPACE | NULL | test/test | NULL | 139934216849920 | EXCLUSIVE | TRANSACTION | GRANTED | dictionary_impl.cc:397 | 3057989 | 13 | +-------------+--------------------+------------------+-------------+-----------------------+---------------------+---------------+-------------+------------------------+-----------------+----------------+ 12 rows in set (0.00 sec)OWNER_THREAD_IDフィールドを使用して、次のステートメントを実行し、performance_schema.threadsテーブルで MDL ホルダーのスレッド情報を表示できます。SELECT * FROM performance_schema.threads WHERE THREAD_ID = "<performance_schema.metadata_locksテーブルから取得したOWNER_THREAD_ID>";
ベストプラクティス
テーブルメタデータロックの待機
実際には、DDL がブロックされる一般的な原因は MDL を取得できないことです。その結果、状態が
Waiting for table metadata lockになります。metadata_locksテーブルを使用することで、DDL ブロッキングの原因を迅速に特定できます。例:
show processlistコマンドを実行して、alter table t1 add column d varchar(10),algorithm = inplaceを実行した後のステータスを確認します。出力例:/*force_node='pi-bp10k7631d6k3****'*/ SHOW PROCESSLIST; +-----------+-----------------+-----------------------+--------------------+----------------+---------+---------------------------------+-------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----------+-----------------+-----------------------+--------------------+----------------+---------+---------------------------------+-------------------------------------------------------------+ | 98 | event_scheduler | localhost | NULL | Daemon | 1306586 | Waiting on empty queue | NULL | | 109 | replicator | 11.111.XX.XX:62549 | NULL | Polar Log Dump | 1 | Reading log from innodb | NULL | | 113 | replicator | 11.111.XX.XX:62560 | NULL | Polar Log Ack | 1 | Receiving from client | NULL | | 133 | replicator | 10.13.64.70:42712 | NULL | Polar Log Dump | 1 | Reading log from innodb | NULL | | 138 | replicator | 10.13.64.70:42723 | NULL | Polar Log Ack | 0 | Receiving from client | NULL | | 369 | aurora | 10.111.211.209:33334 | NULL | Sleep | 0 | | NULL | | 370 | aurora | 10.111.211.209:33336 | NULL | RDS Push LSN | 1306413 | starting | NULL | | 372 | aurora | 10.111.204.224:37010 | NULL | Sleep | 0 | | NULL | | 373 | aurora | 10.111.204.224:37019 | NULL | RDS Push LSN | 1306413 | starting | NULL | | 3064011 | root | 127.0.0.1:59703 | NULL | Sleep | 716 | | NULL | | 3064013 | root | 127.0.0.1:59710 | NULL | Sleep | 25 | | NULL | | 3064015 | root | 127.0.0.1:59713 | NULL | Sleep | 55 | | NULL | | 3064018 | root | 127.0.0.1:59716 | NULL | Sleep | 1 | | NULL | | 3067041 | zyg_root | 172.17.XX.XX:48594 | test | Query | 22 | Waiting for table metadata lock | alter table t1 add column d varchar(10),algorithm = inplace | | 3067443 | zyg_root | 172.17.XX.XX:48602 | test | Sleep | 27 | | NULL | | 3069716 | aurora | 100.104.XX.XX:33017 | information_schema | Sleep | 30 | | NULL | | 3069859 | aurora | 100.104.XX.XX:41872 | information_schema | Sleep | 30 | | NULL | | 3069925 | aurora | 10.111.204.224:20916 | NULL | Sleep | 2 | | NULL | | 3069932 | aurora | 10.111.211.209:51263 | NULL | Sleep | 2 | | NULL | | 270526156 | zyg_root | 172.17.28.253:46272 | test | Query | 0 | starting | /*force_node='pi-bp10k7631d6k3****'*/ show processlist | +-----------+-----------------+-----------------------+--------------------+----------------+---------+---------------------------------+-------------------------------------------------------------+ 20 rows in set (0.00 sec)DDL が
Waiting for table metadata lock状態であることがわかります。この場合、
performance_schema.metadata_locksテーブルを照会して、DDL 操作の MDL ステータスを表示できます。出力例:/*force_node='pi-bp10k7631d6k3****'*/ SELECT * FROM performance_schema.metadata_locks; +-------------+--------------------+------------------+-------------+-----------------------+---------------------+---------------+-------------+--------------------+-----------------+----------------+ | OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | COLUMN_NAME | OBJECT_INSTANCE_BEGIN | LOCK_TYPE | LOCK_DURATION | LOCK_STATUS | SOURCE | OWNER_THREAD_ID | OWNER_EVENT_ID | +-------------+--------------------+------------------+-------------+-----------------------+---------------------+---------------+-------------+--------------------+-----------------+----------------+ | TABLE | performance_schema | metadata_locks | NULL | 139742994307712 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3810041 | 1 | | TABLE | test | t1 | NULL | 139742992122240 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3810574 | 1 | | GLOBAL | NULL | NULL | NULL | 139742992172544 | INTENTION_EXCLUSIVE | STATEMENT | GRANTED | sql_base.cc:5637 | 3810086 | 3 | | SCHEMA | test | NULL | NULL | 139742993150592 | INTENTION_EXCLUSIVE | TRANSACTION | GRANTED | sql_base.cc:5624 | 3810086 | 3 | | TABLE | test | t1 | NULL | 139742993150848 | SHARED_UPGRADABLE | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3810086 | 3 | | BACKUP LOCK | NULL | NULL | NULL | 139742993844096 | INTENTION_EXCLUSIVE | TRANSACTION | GRANTED | sql_base.cc:5644 | 3810086 | 3 | | TABLESPACE | NULL | test/t1 | NULL | 139742991805696 | INTENTION_EXCLUSIVE | TRANSACTION | GRANTED | lock.cc:815 | 3810086 | 3 | | TABLE | test | #sql-1b34_2ecca1 | NULL | 139742992091136 | EXCLUSIVE | STATEMENT | GRANTED | sql_table.cc:15532 | 3810086 | 3 | | TABLE | test | t1 | NULL | 140266021234688 | EXCLUSIVE | TRANSACTION | PENDING | mdl.cc:4124 | 3810086 | 3 | +-------------+--------------------+------------------+-------------+-----------------------+---------------------+---------------+-------------+--------------------+-----------------+----------------+ 9 rows in set (0.00 sec)スレッド
3810574がt1テーブルのSHARED_READロックを保持しているため、スレッド3810086がEXCLUSIVEロックを取得できないことがわかります。performance_schema.threadsテーブルを使用して、対応するスレッドの詳細情報を取得できます。出力例:/*force_node='pi-bp10k7631d6k3****'*/ SELECT * FROM performance_schema.threads WHERE THREAD_ID IN (3810086,3810574)\G *************************** 1. row *************************** THREAD_ID: 3810086 NAME: thread/sql/one_connection TYPE: FOREGROUND PROCESSLIST_ID: 3067041 PROCESSLIST_USER: zyg_root PROCESSLIST_HOST: 172.17.28.253 PROCESSLIST_DB: test PROCESSLIST_COMMAND: Query PROCESSLIST_TIME: 41 PROCESSLIST_STATE: Waiting for table metadata lock PROCESSLIST_INFO: alter table t1 add column d varchar(10),algorithm = inplace PARENT_THREAD_ID: NULL ROLE: NULL INSTRUMENTED: YES HISTORY: YES CONNECTION_TYPE: TCP/IP THREAD_OS_ID: 64852 RESOURCE_GROUP: NULL *************************** 2. row *************************** THREAD_ID: 3810574 NAME: thread/sql/one_connection TYPE: FOREGROUND PROCESSLIST_ID: 3067443 PROCESSLIST_USER: zyg_root PROCESSLIST_HOST: 172.17.28.253 PROCESSLIST_DB: test PROCESSLIST_COMMAND: Sleep PROCESSLIST_TIME: 46 PROCESSLIST_STATE: NULL PROCESSLIST_INFO: NULL PARENT_THREAD_ID: NULL ROLE: NULL INSTRUMENTED: YES HISTORY: YES CONNECTION_TYPE: TCP/IP THREAD_OS_ID: 65845 RESOURCE_GROUP: NULL 2 rows in set (0.01 sec)スレッド
3810086はブロックされた DDL スレッドであり、スレッド3810574はスロークエリです。スレッド3810574がロックを保持しているため、alter table t1 add column d varchar(10),algorithm = inplaceステートメントが MDL を取得できません。そのため、ステートメントはブロックされます。この場合、ビジネス要件に応じてトランザクションがコミットされるのを待つか、KILL processlist_idコマンドを使用してトランザクションを終了し、alter table t1 add column d varchar(10),algorithm = inplaceステートメントを再実行できます。レプリカとの同期待機
PolarDB はクラスターアーキテクチャを使用しています。そのため、DDL 操作がプライマリノードで実行される場合、すべての読み取り専用ノードが対応する MDL を解放するのを待つ必要があります。
show processlistを使用しているときに、DDL 操作がWait for syncing with replicas状態になっている場合、読み取り専用ノードが対応するテーブルの MDL を保持していることを示します。この場合、この手順を参考に、読み取り専用ノード上のロックホルダーのスレッド情報を迅速に特定できます。例:
クラスターのプライマリノードで、
show processlistコマンドを実行して、alter table t1 add column d varchar(10),algorithm = inplaceを実行した後のステータスを確認します。出力例:/*force_node='pi-bp10k7631d6k3****'*/ SHOW PROCESSLIST; +-----------+-----------------+-----------------------+--------------------+----------------+---------+--------------------------------+-------------------------------------------------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----------+-----------------+-----------------------+--------------------+----------------+---------+--------------------------------+-------------------------------------------------------------+ | 98 | event_scheduler | localhost | NULL | Daemon | 1307512 | Waiting on empty queue | NULL | | 109 | replicator | 11.111.XX.XX:62549 | NULL | Polar Log Dump | 1 | Reading log from innodb | NULL | | 113 | replicator | 11.111.XX.XX:62560 | NULL | Polar Log Ack | 1 | Receiving from client | NULL | | 133 | replicator | 10.13.64.70:42712 | NULL | Polar Log Dump | 1 | Reading log from innodb | NULL | | 138 | replicator | 10.13.64.70:42723 | NULL | Polar Log Ack | 0 | Receiving from client | NULL | | 369 | aurora | 10.111.211.209:33334 | NULL | Sleep | 0 | | NULL | | 370 | aurora | 10.111.211.209:33336 | NULL | RDS Push LSN | 1307339 | starting | NULL | | 372 | aurora | 10.111.204.224:37010 | NULL | Sleep | 0 | | NULL | | 373 | aurora | 10.111.204.224:37019 | NULL | RDS Push LSN | 1307339 | starting | NULL | | 3064011 | root | 127.0.0.1:59703 | NULL | Sleep | 742 | | NULL | | 3064013 | root | 127.0.0.1:59710 | NULL | Sleep | 21 | | NULL | | 3064015 | root | 127.0.0.1:59713 | NULL | Sleep | 21 | | NULL | | 3064018 | root | 127.0.0.1:59716 | NULL | Sleep | 1 | | NULL | | 3067041 | zyg_root | 172.17.28.253:48594 | test | Query | 6 | Wait for syncing with replicas | alter table t1 add column d varchar(10),algorithm = inplace | | 3067443 | zyg_root | 172.17.28.253:48602 | test | Sleep | 751 | | NULL | | 3071863 | aurora | 100.104.XX.XX:32615 | information_schema | Sleep | 56 | | NULL | | 3072000 | aurora | 100.104.XX.XX:41585 | information_schema | Sleep | 56 | | NULL | | 3072126 | aurora | 10.111.204.224:47050 | NULL | Sleep | 2 | | NULL | | 3072127 | aurora | 10.111.211.209:41026 | NULL | Sleep | 1 | | NULL | | 270526156 | zyg_root | 172.17.28.253:46272 | test | Sleep | 362 | | NULL | | 270530026 | zyg_root | 172.17.28.253:46390 | test | Query | 0 | starting | /*force_node='pi-bp10k7631d6k3****'*/ show processlist | +-----------+-----------------+-----------------------+--------------------+----------------+---------+--------------------------------+-------------------------------------------------------------+ 21 rows in set (0.00 sec)DDL が
Wait for syncing with replicas状態であることがわかります。この場合、ヒントを使用して特定の読み取り専用ノード上の
performance_schema.metadata_locksテーブルを照会し、MDL ステータスを表示できます。出力例:/*force_node='pi-bp186ko4o21wl****'*/ SELECT * FROM performance_schema.metadata_locks; +-------------+--------------------+----------------+-------------+-----------------------+---------------------+---------------+-------------+--------------------+-----------------+----------------+ | OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | COLUMN_NAME | OBJECT_INSTANCE_BEGIN | LOCK_TYPE | LOCK_DURATION | LOCK_STATUS | SOURCE | OWNER_THREAD_ID | OWNER_EVENT_ID | +-------------+--------------------+----------------+-------------+-----------------------+---------------------+---------------+-------------+--------------------+-----------------+----------------+ | TABLE | test | t1 | NULL | 139394298895872 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3513381 | 1 | | TABLE | test | t1 | NULL | 139394298602240 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3519277 | 1 | | TABLE | test | t1 | NULL | 139917548369664 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3519279 | 1 | | TABLE | test | t1 | NULL | 139394296661888 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3519278 | 1 | | TABLE | test | t1 | NULL | 139394297595520 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3519276 | 1 | | SCHEMA | test | NULL | NULL | 139464322084864 | INTENTION_EXCLUSIVE | EXPLICIT | GRANTED | sql_table.cc:17404 | 57 | 1 | | TABLE | test | t1 | NULL | 139464322084992 | EXCLUSIVE | EXPLICIT | PENDING | sql_table.cc:17410 | 57 | 1 | | TABLE | performance_schema | metadata_locks | NULL | 139394296038784 | SHARED_READ | TRANSACTION | GRANTED | sql_parse.cc:7688 | 3518506 | 1 | +-------------+--------------------+----------------+-------------+-----------------------+---------------------+---------------+-------------+--------------------+-----------------+----------------+ 8 rows in set (0.00 sec)読み取り専用ノード上のスレッド
3513381、3519277、3519279、3519278、および3519276がt1テーブルのSHARED_READロックを保持していることがわかります。performance_schema.threadsテーブルを使用して、対応するスレッドの詳細情報を取得できます。出力例:/*force_node='pi-bp186ko4o21wl****'*/SELECT * FROM performance_schema.threads WHERE THREAD_ID IN (3519278,3513381,3519279,3519276,3519277)\G *************************** 1. row *************************** THREAD_ID: 3513381 NAME: thread/sql/one_connection TYPE: FOREGROUND PROCESSLIST_ID: 538961413 PROCESSLIST_USER: zyg_root PROCESSLIST_HOST: 172.17.28.253 PROCESSLIST_DB: test PROCESSLIST_COMMAND: Connect PROCESSLIST_TIME: 103 PROCESSLIST_STATE: User sleep PROCESSLIST_INFO: select *,sleep(60) from t1 PARENT_THREAD_ID: NULL ROLE: NULL INSTRUMENTED: YES HISTORY: YES CONNECTION_TYPE: TCP/IP THREAD_OS_ID: 63826 RESOURCE_GROUP: NULL *************************** 2. row *************************** THREAD_ID: 3519276 NAME: thread/sql/parallel_worker TYPE: FOREGROUND PROCESSLIST_ID: 1855915 PROCESSLIST_USER: zyg_root PROCESSLIST_HOST: 172.17.28.253 PROCESSLIST_DB: test PROCESSLIST_COMMAND: Sleep PROCESSLIST_TIME: 103 PROCESSLIST_STATE: Sending data PROCESSLIST_INFO: select *,sleep(60) from t1 PARENT_THREAD_ID: 3513381 ROLE: NULL INSTRUMENTED: NO HISTORY: YES CONNECTION_TYPE: NULL THREAD_OS_ID: 7117 RESOURCE_GROUP: NULL *************************** 3. row *************************** THREAD_ID: 3519277 NAME: thread/sql/parallel_worker TYPE: FOREGROUND PROCESSLIST_ID: 1855917 PROCESSLIST_USER: zyg_root PROCESSLIST_HOST: 172.17.28.253 PROCESSLIST_DB: test PROCESSLIST_COMMAND: Sleep PROCESSLIST_TIME: 103 PROCESSLIST_STATE: Sending data PROCESSLIST_INFO: select *,sleep(60) from t1 PARENT_THREAD_ID: 3513381 ROLE: NULL INSTRUMENTED: NO HISTORY: YES CONNECTION_TYPE: NULL THREAD_OS_ID: 7116 RESOURCE_GROUP: NULL *************************** 4. row *************************** THREAD_ID: 3519278 NAME: thread/sql/parallel_worker TYPE: FOREGROUND PROCESSLIST_ID: 1855916 PROCESSLIST_USER: zyg_root PROCESSLIST_HOST: 172.17.28.253 PROCESSLIST_DB: test PROCESSLIST_COMMAND: Sleep PROCESSLIST_TIME: 103 PROCESSLIST_STATE: Sending data PROCESSLIST_INFO: select *,sleep(60) from t1 PARENT_THREAD_ID: 3513381 ROLE: NULL INSTRUMENTED: NO HISTORY: YES CONNECTION_TYPE: NULL THREAD_OS_ID: 7119 RESOURCE_GROUP: NULL *************************** 5. row *************************** THREAD_ID: 3519279 NAME: thread/sql/parallel_worker TYPE: FOREGROUND PROCESSLIST_ID: 1855918 PROCESSLIST_USER: zyg_root PROCESSLIST_HOST: 172.17.28.253 PROCESSLIST_DB: test PROCESSLIST_COMMAND: Sleep PROCESSLIST_TIME: 103 PROCESSLIST_STATE: Sending data PROCESSLIST_INFO: select *,sleep(60) from t1 PARENT_THREAD_ID: 3513381 ROLE: NULL INSTRUMENTED: NO HISTORY: YES CONNECTION_TYPE: NULL THREAD_OS_ID: 7118 RESOURCE_GROUP: NULL 5 rows in set (0.00 sec)読み取り専用ノードで実行されたクエリが対応するロックを保持し、長期間解放していないことがわかります。パラレルクエリが有効になっているため、複数の
parallel_workerスレッドが同時に MDL を保持しています。この場合、ビジネス要件に応じて読み取り専用ノード上のトランザクションがコミットされるのを待つか、KILL processlist_idコマンドを使用してトランザクションを終了し、alter table t1 add column d varchar(10),algorithm = inplaceステートメントを再実行できます。
お問い合わせ
DDL 操作についてご質問がある場合は、「お問い合わせ」をご利用ください。