INFORMATION_SCHEMA.PROCESSLIST Deprecated in version 8.0.35 or 8.2.0

Share

Last Updated on 12월 3, 2023 by Jade(정현호)

안녕하세요

이번 포스팅에는 INFORMATION_SCHEMA.PROCESSLIST 기능의 Deprecated 된 내용에 대해서 간략하게 살펴보도록 하겠습니다.

INFORMATION_SCHEMA.PROCESSLIST Deprecated

2023년 10월 25일에 GA(General Availability) 된 8.0.35 버전과 Innovation Release 인 8.2.0 버전에서 다음과 같은 내용이 포함되었습니다.

 

위의 내용과 같이 2개 버전부터 INFORMATION_SCHEMA.PROCESSLIST 테이블이 Deprecated가 되었습니다. 아직 Removed가 된 것은 아니기 때문에 사용은 가능합니다.

다만 사용하면 다음과 같은 warning 메세지가 확인됩니다.

mysql> select * from INFORMATION_SCHEMA.PROCESSLIST;
+----+-----------------+-----------+-------+---------+------+-------------+-------------------+
| ID | USER            | HOST      | DB    | COMMAND | TIME | STATE       | INFO              |
+----+-----------------+-----------+-------+---------+------+-------------+-------------------+
|  8 | root            | localhost | mysql | Query   |    0 | executing   | select * from ... |
|  5 | event_scheduler | localhost | NULL  | Daemon  |  230 | Waiting ... | NULL              |
+----+-----------------+-----------+-------+---------+------+-------------+-------------------+
2 rows in set, 1 warning (0.01 sec)

Warning (Code 1287): 'INFORMATION_SCHEMA.PROCESSLIST' is deprecated and will be removed in a future release. 
                    Please use performance_schema.processlist instead


mysql> show full processlist;
+----+-----------------+-----------+-------+---------+------+-------------+--------------+
| Id | User            | Host      | db    | Command | Time | State       | Info         |
+----+-----------------+-----------+-------+---------+------+-------------+--------------+
|  5 | event_scheduler | localhost | NULL  | Daemon  |  171 | Waiting ... | NULL         |
|  8 | root            | localhost | mysql | Query   |    0 | init        | show full .. |
+----+-----------------+-----------+-------+---------+------+-------------+--------------+
2 rows in set, 1 warning (0.00 sec)

Warning (Code 1287): 'INFORMATION_SCHEMA.PROCESSLIST' is deprecated and will be removed in a future release. 
                    Please use performance_schema.processlist instead


안내되는 되는 메세지와 같이 performance_schema.processlist 를 대체하여 사용하거나 또는 performance_schema.threads를 사용하여 내용을 확인할 수 있습니다.

NFORMATION_SCHEMA.PROCESSLIST 이 Deprecated 됨에 따라 위의 조회결과와 같이 show (full) processlist 명령어도 같이 deprecated 되었습니다.

 

또한 8.0.22 버전에서 추가된 파라미터인 performance_schema_show_processlist 도 8.0.35 버전에서 같이 deprecated 되었습니다.

performance_schema_show_processlist 파라미터는 show processlist 명령어의 구현을 INFORMATION_SCHEMA.PROCESSLIST 에서 PERFORMANCE_SCHEMA.PROCESSLIST 를 사용하는 내용의 파라미터입니다.

show processlist 명령어 수행 과정에서 글로벌 뮤텍스(mutex) 보유한 상태의 조회하게 되는데 뮤텍스가 필요하지 않는 PERFORMANCE_SCHEMA.PROCESSLIST를 이용한 show processlist 명령어를 사용할 수 있도록 설정하는 파라미터입니다.

해당 파라미터는 8.0.35에서 같이 Deprecated 되었습니다.

 

performance_schema.processlist는 MySQL 5.7 버전기준 5.7.39 버전 설치시 자동으로 생성되거나 해당 버전이상으로 업그레이드시 자동으로 생성됩니다.

AWS Aurora MySQL 2 버전에서는 최근에 릴리즈 된(글 작성시점 기준) version 2.12.0 버전 부터는 MySQL 5.7.40 호환 버전으로 릴리즈 되어 PERFORMANCE_SCHEMA.PROCESSLIST 를 사용할 수 있습니다.

      

다만 Aurora MySQL 2.12.0 이전 버전은 MySQL 5.7.12버전과 호환되기 때문에 PERFORMANCE_SCHEMA.PROCESSLIST 를 사용할 수 없습니다.

MySQL 버전에 따라서 INFORMATION_SCHEMA.PROCESSLIST 와 PERFORMANCE_SCHEMA.PROCESSLIST 내용에서 컬럼 1개가 차이가 있습니다.

mysql> show create table INFORMATION_SCHEMA.PROCESSLIST\G
*************************** 1. row ***************************
       Table: PROCESSLIST
Create Table: CREATE TEMPORARY TABLE `PROCESSLIST` (
  `ID` bigint unsigned NOT NULL DEFAULT '0',
  `USER` varchar(32) NOT NULL DEFAULT '',
  `HOST` varchar(261) NOT NULL DEFAULT '',
  `DB` varchar(64) DEFAULT NULL,
  `COMMAND` varchar(16) NOT NULL DEFAULT '',
  `TIME` int NOT NULL DEFAULT '0',
  `STATE` varchar(64) DEFAULT NULL,
  `INFO` longtext
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3


mysql> show create table PERFORMANCE_SCHEMA.PROCESSLIST\G
*************************** 1. row ***************************
       Table: processlist
Create Table: CREATE TABLE `processlist` (
  `ID` bigint unsigned NOT NULL,
  `USER` varchar(32) DEFAULT NULL,
  `HOST` varchar(261) CHARACTER SET ascii COLLATE ascii_general_ci DEFAULT NULL,
  `DB` varchar(64) DEFAULT NULL,
  `COMMAND` varchar(16) DEFAULT NULL,
  `TIME` bigint DEFAULT NULL,
  `STATE` varchar(64) DEFAULT NULL,
  `INFO` longtext,
  `EXECUTION_ENGINE` enum('PRIMARY','SECONDARY') DEFAULT NULL, <!!---
  PRIMARY KEY (`ID`)
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8mb4


EXECUTION_ENGINE 컬럼은 쿼리 실행 엔진에 대한 정보를 표기하는 컬럼으로 이 컬럼의 값은 Primary(프라이머리) 또는 Secondary(세컨더리) 중 하나로 표기되며 MySQL HeatWave Service 및 HeatWave에 사용됩니다.

Primary 엔진은 InnoDB이고 Secondary 엔진은 HeatWave(RAPID)입니다.

MySQL Community Edition Server, MySQL Enterprise Edition Server 및 HeatWave가 없는 MySQL HeatWave Service의 경우 값은 항상 Primary 이며, 이 컬럼은 MySQL 8.0.29에 추가되었습니다.

MySQL HeatWave에 대한 더 자세한 내용은 다음 포스팅을 참조하시면 됩니다.

 

글 작성 시점에 발표된 8.0.35, 8.20 버전에서 Deprecated가 된 상태임으로 당장은 사용 가능하지만(아직 Removed 되지 않았음) 향후에는 Removed 가 될 부분으로 INFORMATION_SCHEMA.PROCESSLIST 를 통한 DB모니터링 및 알람 등을 구현하여 사용하고 있었다면 포스팅 내용을 참조하여 조회 명령어의 변경이 필요할 것으로 예상됩니다.

이번 포스팅은 여기서 마무리하도록 하겠습니다.
                         

Reference

Reference URL
mysql.com/news-8-0-35
mysql.com/news-8-2-0
mysql.com/5.7/performance-schema-processlist
mysql.com/performance_schema_show_processlist


연관된 다른 글

 

 

 

 

            

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x