Azure Database for MySQL의 서버 매개 변수

적용 대상: Azure Database for MySQL - 단일 서버

Important

Azure Database for MySQL 단일 서버는 사용 중지 경로에 있습니다. Azure Database for MySQL 유연한 서버로 업그레이드하는 것이 좋습니다. Azure Database for MySQL - 유연한 서버로 마이그레이션하는 방법에 대한 자세한 내용은 Azure Database for MySQL 단일 서버에 대한 새로운 소식을 참조하세요.

이 문서에서는 Azure Database for MySQL에서 서버 매개 변수를 구성하는 데 있어서의 고려 사항 및 지침을 제공합니다.

서버 매개 변수는 무엇인가요?

MySQL 엔진은 엔진 동작을 구성하고 조정하는 데 사용하는 다양한 서버 변수와 매개 변수를 제공합니다. 일부 매개 변수는 런타임 중에 동적으로 설정할 수 있는 반면 다른 매개 변수는 정적이며 적용하려면 서버를 다시 시작해야 합니다.

Azure Database for MySQL은 워크로드와 일치하도록 Azure Portal, Azure CLIPowerShell을 사용하여 다양한 MySQL Server 매개 변수의 값을 변경하는 기능을 제공합니다. 필요.

구성 가능한 서버 매개 변수

지원되는 서버 매개 변수 목록은 계속 확장됩니다. Azure Portal의 서버 매개 변수 탭을 사용하여 전체 목록을 보고 서버 매개 변수 값을 구성할 수 있습니다.

일반적으로 업데이트되는 여러 서버 매개 변수의 제한에 대해 자세히 알아보려면 다음 섹션을 참조하세요. 이러한 제한은 서버의 가격 책정 계층 및 vCore에 의해 결정됩니다.

스레드 풀

MySQL은 일반적으로 모든 클라이언트 연결에 대해 스레드를 할당합니다. 동시 사용자 수가 늘어나면 그에 따라 성능이 저하됩니다. 많은 활성 스레드는 늘어난 컨텍스트 전환, 스레드 경합, CPU 캐시의 잘못된 로컬 특성으로 인해 성능에 크게 영향을 줄 수 있습니다.

연결 풀링과 구별되는 서버 쪽 기능인 스레드 풀은 작업자 스레드의 동적 풀을 도입하여 성능을 극대화합니다. 이 기능을 사용하여 서버에서 실행 중인 활성 스레드 수를 제한하고 스레드 변동을 최소화합니다. 이렇게 하면 연결 버스트가 서버의 리소스나 메모리 부족을 초래하지 않도록 하는 데 도움이 됩니다. 스레드 풀은 OLTP 워크로드와 같은 짧은 쿼리 및 CPU 집약적 워크로드에 가장 효율적입니다.

자세한 내용은 Azure Database for MySQL의 스레드 풀 소개를 참조하세요.

참고 항목

스레드 풀은 MySQL 5.6에서 지원되지 않습니다.

스레드 풀 구성

스레드 풀을 사용하도록 설정하려면 thread_handling 서버 매개 변수를 pool-of-threads로 업데이트합니다. 기본적으로 이 매개 변수는 one-thread-per-connection으로 설정됩니다. 즉, MySQL이 새로 연결될 때마다 새로운 스레드를 만듭니다. 이는 정적 매개 변수이며 적용하려면 서버를 다시 시작해야 합니다.

또한 다음 서버 매개 변수를 설정하여 풀에서 스레드의 최소 및 최대 개수를 구성할 수 있습니다.

  • thread_pool_max_threads: 이 값은 풀의 스레드 수를 제한합니다.
  • thread_pool_min_threads: 이 값은 연결이 닫힌 후에도 예약되는 스레드 수를 설정합니다.

스레드 풀에서 짧은 쿼리의 성능 문제를 개선하기 위해 일괄 처리 실행을 사용하도록 설정할 수 있습니다. 쿼리를 실행한 후 즉시 스레드 풀로 돌아가는 대신 스레드는 이 연결을 통해 다음 쿼리를 기다리기 위해 잠시 동안 활성 상태를 유지합니다. 그런 다음 스레드는 쿼리를 빠르게 실행하고 이것이 완료되면 스레드는 다음 쿼리를 기다립니다. 이 프로세스는 소요된 전체 시간이 임계값을 초과할 때까지 계속됩니다.

다음 서버 매개 변수를 사용하여 일괄 처리 실행 동작을 결정합니다.

  • thread_pool_batch_wait_timeout: 이 값은 스레드가 다른 쿼리의 처리를 기다리는 시간을 지정합니다.
  • thread_pool_batch_max_time: 이 값은 스레드가 쿼리 실행 주기를 반복하고 다음 쿼리를 기다리는 최대 시간을 결정합니다.

Important

테스트할 때까지 프로덕션에서 스레드 풀을 활성화하지 마세요.

log_bin_trust_function_creators

Azure Database for MySQL에서는 이진 파일 로그가 항상 사용하도록 설정됩니다(log_bin 매개 변수는 ON으로 설정됨). 트리거를 사용하려는 경우 다음과 유사한 오류가 발생합니다. SUPER 권한이 없고 이진 파일 로깅이 사용하도록 설정되어 있습니다(안전하지 않은 log_bin_trust_function_creators 변수를 사용할 수 있음).

이진 로깅 형식은 항상 이고 서버에 대한 모든 연결은 항상 행 기반 이진 로깅을 사용합니다. 행 기반 이진 파일 로깅은 보안을 유지하는 데 도움이 되며 이진 파일 로깅은 중단되지 않으므로 log_bin_trust_function_creatorsTRUE로 안전하게 설정할 수 있습니다.

innodb_buffer_pool_size

이 매개 변수에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

범용 스토리지 v1의 서버(최대 4TB 지원)

가격 책정 계층 vCore 기본값(바이트) 최솟값(바이트) 최댓값(바이트)
Basic 1 872415232 134217728 872415232
Basic 2 2684354560 134217728 2684354560
범용 2 3758096384 134217728 3758096384
범용 4 8053063680 134217728 8053063680
범용 8 16106127360 134217728 16106127360
범용 16 32749125632 134217728 32749125632
범용 32 66035122176 134217728 66035122176
범용 64 132070244352 134217728 132070244352
메모리 최적화 2 7516192768 134217728 7516192768
메모리 최적화 4 16106127360 134217728 16106127360
메모리 최적화 8 32212254720 134217728 32212254720
메모리 최적화 16 65498251264 134217728 65498251264
메모리 최적화 32 132070244352 134217728 132070244352

범용 스토리지 v2(최대 16TB 지원)의 서버

가격 책정 계층 vCore 기본값(바이트) 최솟값(바이트) 최댓값(바이트)
Basic 1 872415232 134217728 872415232
Basic 2 2684354560 134217728 2684354560
범용 2 7516192768 134217728 7516192768
범용 4 16106127360 134217728 16106127360
범용 8 32212254720 134217728 32212254720
범용 16 65498251264 134217728 65498251264
범용 32 132070244352 134217728 132070244352
범용 64 264140488704 134217728 264140488704
메모리 최적화 2 15032385536 134217728 15032385536
메모리 최적화 4 32212254720 134217728 32212254720
메모리 최적화 8 64424509440 134217728 64424509440
메모리 최적화 16 130996502528 134217728 130996502528
메모리 최적화 32 264140488704 134217728 264140488704

innodb_file_per_table

MySQL은 테이블 만들기 중에 제공한 구성에 따라 다른 테이블스페이스에 InnoDB 테이블을 저장합니다. 시스템 테이블스페이스InnoDB 데이터 사전의 저장 영역입니다. 테이블당 파일 테이블스페이스는 단일 InnoDB 테이블에 대한 데이터와 인덱스를 포함하며 자체 데이터 파일로 파일 시스템에 저장됩니다.

innodb_file_per_table 서버 매개 변수를 사용하여 이 동작을 제어합니다. innodb_file_per_tableOFF로 설정하면 InnoDB이 시스템 테이블스페이스에 테이블을 만듭니다. 그렇지 않으면 InnoDB는 테이블당 파일 테이블스페이스에 테이블을 만듭니다.

참고 항목

범용 스토리지 v2범용 스토리지 v1의 범용 및 메모리 최적화 가격 책정 계층에서 innodb_file_per_table만 업데이트할 수 있습니다.

Azure Database for MySQL은 범용 스토리지 v2의 단일 데이터 파일에서 최대 4TB를 지원합니다. 데이터베이스 크기가 4TB보다 큰 경우 innodb_file_per_table 테이블스페이스에 테이블을 만들어야 합니다. 4TB보다 큰 단일 테이블 크기가 있는 경우 파티션 테이블을 사용해야 합니다.

join_buffer_size

이 매개 변수에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

가격 책정 계층 vCore 기본값(바이트) 최솟값(바이트) 최댓값(바이트)
Basic 1 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
Basic 2 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
범용 2 262144 128 268435455
범용 4 262144 128 536870912
범용 8 262144 128 1073741824
범용 16 262144 128 2147483648
범용 32 262144 128 4294967295
범용 64 262144 128 4294967295
메모리 최적화 2 262144 128 536870912
메모리 최적화 4 262144 128 1073741824
메모리 최적화 8 262144 128 2147483648
메모리 최적화 16 262144 128 4294967295
메모리 최적화 32 262144 128 4294967295

max_connections

가격 책정 계층 vCore 기본값 최소값 최대값
Basic 1 50 10 50
Basic 2 100 10 100
범용 2 300 10 600
범용 4 625 10 1250
범용 8 1250 10 2500
범용 16 2500 10 5000
범용 32 5000 10 10000
범용 64 10000 10 20000
메모리 최적화 2 625 10 1250
메모리 최적화 4 1250 10 2500
메모리 최적화 8 2500 10 5000
메모리 최적화 16 5000 10 10000
메모리 최적화 32 10000 10 20000

연결 수가 제한을 초과하면 오류가 발생할 수 있습니다.

연결을 효율적으로 관리하려면 ProxySQL과 같은 연결 풀러를 사용하는 것이 좋습니다. ProxySQL 설정에 대한 자세한 내용은 블로그 게시물 Azure Database for MySQL에서 ProxySQL을 사용하여 읽기 복제본 부하 분산을 참조하세요. ProxySQL은 오픈 소스 커뮤니티 도구입니다. 최상의 노력을 기준으로 Microsoft에서 지원됩니다.

max_heap_table_size

이 매개 변수에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

가격 책정 계층 vCore 기본값(바이트) 최솟값(바이트) 최댓값(바이트)
Basic 1 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
Basic 2 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
범용 2 16777216 16384 268435455
범용 4 16777216 16384 536870912
범용 8 16777216 16384 1073741824
범용 16 16777216 16384 2147483648
범용 32 16777216 16384 4294967295
범용 64 16777216 16384 4294967295
메모리 최적화 2 16777216 16384 536870912
메모리 최적화 4 16777216 16384 1073741824
메모리 최적화 8 16777216 16384 2147483648
메모리 최적화 16 16777216 16384 4294967295
메모리 최적화 32 16777216 16384 4294967295

query_cache_size

쿼리 캐시는 기본적으로 해제되어 있습니다. 쿼리 캐시를 사용하도록 설정하려면 query_cache_type 매개 변수를 구성합니다.

이 매개 변수에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

참고 항목

쿼리 캐시는 MySQL 5.7.20부터 더 이상 사용되지 않으며 MySQL 8.0에서 제거되었습니다.

가격 책정 계층 vCore 기본값(바이트) 최솟값(바이트) 최대값
Basic 1 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
Basic 2 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
범용 2 0 0 16777216
범용 4 0 0 33554432
범용 8 0 0 67108864
범용 16 0 0 134217728
범용 32 0 0 134217728
범용 64 0 0 134217728
메모리 최적화 2 0 0 33554432
메모리 최적화 4 0 0 67108864
메모리 최적화 8 0 0 134217728
메모리 최적화 16 0 0 134217728
메모리 최적화 32 0 0 134217728

lower_case_table_names

lower_case_table_name 매개 변수는 기본적으로 1로 설정되며 MySQL 5.6 및 MySQL 5.7에서 이 매개 변수를 업데이트할 수 있습니다.

이 매개 변수에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

참고 항목

MySQL 8.0에서 lower_case_table_name은 기본적으로 1로 설정되며 변경할 수 없습니다.

innodb_strict_mode

Row size too large (> 8126)과 유사한 오류가 수신되면 innodb_strict_mode 매개 변수를 끄는 것이 좋습니다. 서버 수준에서 전역적으로 innodb_strict_mode를 수정할 수 없습니다. 행 데이터 크기가 8K보다 크면 오류 알림 없이 데이터가 잘려서 데이터가 손실될 수 있습니다. 페이지 크기 제한에 맞게 스키마를 수정하는 것이 좋습니다.

init_connect를 사용하여 세션 수준에서 이 매개 변수를 설정할 수 있습니다. 세션 수준에서 innodb_strict_mode를 설정하려면 설정 매개 변수가 나열되지 않음을 참조하세요.

참고 항목

읽기 복제본 서버가 있는 경우 원본 서버에서 세션 수준으로 innodb_strict_modeOFF로 설정하면 복제가 중단됩니다. 읽기 복제본이 있는 경우 매개 변수를 ON로 유지하는 것이 좋습니다.

sort_buffer_size

이 매개 변수에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

가격 책정 계층 vCore 기본값(바이트) 최솟값(바이트) 최댓값(바이트)
Basic 1 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
Basic 2 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
범용 2 524288 32768 4194304
범용 4 524288 32768 8388608
범용 8 524288 32768 16777216
범용 16 524288 32768 33554432
범용 32 524288 32768 33554432
범용 64 524288 32768 33554432
메모리 최적화 2 524288 32768 8388608
메모리 최적화 4 524288 32768 16777216
메모리 최적화 8 524288 32768 33554432
메모리 최적화 16 524288 32768 33554432
메모리 최적화 32 524288 32768 33554432

tmp_table_size

이 매개 변수에 대한 자세한 내용은 MySQL 설명서를 참조하세요.

가격 책정 계층 vCore 기본값(바이트) 최솟값(바이트) 최댓값(바이트)
Basic 1 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
Basic 2 기본 계층에서 구성할 수 없음 해당 없음 해당 없음
범용 2 16777216 1024 67108864
범용 4 16777216 1024 134217728
범용 8 16777216 1024 268435456
범용 16 16777216 1024 536870912
범용 32 16777216 1024 1073741824
범용 64 16777216 1024 1073741824
메모리 최적화 2 16777216 1024 134217728
메모리 최적화 4 16777216 1024 268435456
메모리 최적화 8 16777216 1024 536870912
메모리 최적화 16 16777216 1024 1073741824
메모리 최적화 32 16777216 1024 1073741824

InnoDB 버퍼 풀 준비

Azure Database for MySQL을 다시 시작하면 테이블이 쿼리될 때 디스크에 있는 데이터 페이지가 로드됩니다. 이로 인해 쿼리를 처음 실행할 때 대기 시간이 늘어나고 성능이 느려집니다. 대기 시간에 중요한 워크로드의 경우 이 느린 성능이 허용되지 않을 수 있습니다.

InnoDB 버퍼 풀 워밍업을 사용하여 워밍업 기간을 단축할 수 있습니다. 이 프로세스는 DML 또는 SELECT 작업이 해당 행에 액세스할 때까지 기다리지 않고 다시 시작 버퍼 풀에 있던 디스크 페이지를 다시 로드합니다. 자세한 내용은 InnoDB 버퍼 풀 서버 매개 변수를 참조하세요.

그러나 성능이 개선되면 서버 작동 시간이 길어집니다. 이 매개 변수를 사용하도록 설정하면 서버에 프로비저닝된 IOPS에 따라 서버 시작 및 다시 시작 시간이 늘어날 것으로 예상됩니다. 다시 시작 시간을 테스트하고 모니터링하여 시작 또는 다시 시작 성능이 허용 가능한지 확인하는 것이 좋습니다. 해당 시간 동안 서버를 사용할 수 없기 때문입니다. 프로비저닝된 IOPS 수가 1000IOPS 미만인 경우(즉, 프로비저닝된 스토리지가 335GB 미만인 경우) 이 매개 변수를 사용하지 마세요.

서버를 종료할 때 버퍼 풀의 상태를 저장하려면 서버 매개 변수 innodb_buffer_pool_dump_at_shutdownON으로 설정합니다. 마찬가지로 서버 매개 변수 innodb_buffer_pool_load_at_startupON으로 설정하여 서버 시작 시 버퍼 풀 상태를 복원합니다. 서버 매개 변수 innodb_buffer_pool_dump_pct의 값을 낮추고 미세 튜닝하여 시작 또는 다시 시작에 대한 영향을 제어할 수 있습니다. 이 매개 변수는 기본적으로 25로 설정됩니다.

참고 항목

InnoDB 버퍼 풀 준비 매개 변수는 최대 16TB의 스토리지가 있는 범용 스토리지 서버에서만 지원됩니다. 자세한 내용은 Azure Database for MySQL 스토리지 옵션을 참조하세요.

time_zone

초기 배포 시 Azure Database for MySQL을 실행하는 서버에는 표준 시간대 정보에 대한 시스템 테이블이 포함되지만 이러한 테이블은 채워지지 않습니다. MySQL 명령줄 또는 MySQL Workbench와 같은 도구에서 mysql.az_load_timezone 저장 프로시저를 호출하여 테이블을 채울 수 있습니다. 저장 프로시저를 호출하고 전역 또는 세션 수준 표준 시간대를 설정하는 방법에 대한 자세한 내용은 표준 시간대 매개 변수 작업(Azure Portal) 또는 표준 시간대 매개 변수 작업(Azure CLI)을 참조하세요.

binlog_expire_logs_seconds

Azure Database for MySQL에서 이 매개 변수는 서비스가 이진 로그 파일을 제거하기 전에 대기하는 시간(초)을 지정합니다.

이진 로그에는 테이블 생성 작업 또는 테이블 데이터 변경과 같은 데이터베이스 변경 사항을 설명하는 이벤트가 포함됩니다. 또한 잠재적으로 변경할 수 있는 명령문에 대한 이벤트도 포함합니다. 이진 로그는 주로 복제 및 데이터 복구 작업의 두 가지 목적으로 사용됩니다.

일반적으로 이진 로그는 핸들이 서비스, 백업 또는 복제본 세트에서 해제되는 즉시 제거됩니다. 복제본이 여러 개인 경우 이진 파일 로그는 제거되기 전에 가장 느린 복제본이 변경 내용을 읽을 때까지 기다립니다. 이진 파일 로그를 더 오래 유지하려면 binlog_expire_logs_seconds 매개 변수를 구성할 수 있습니다. binlog_expire_logs_seconds를 기본값인 0으로 설정하면 이진 파일 로그에 대한 핸들이 해제되는 즉시 제거됩니다. binlog_expire_logs_seconds를 0보다 크게 설정하면 이진 파일 로그는 해당 기간 후에만 제거됩니다.

Azure Database for MySQL의 경우 이진 파일의 백업 및 읽기 전용 복제본 제거와 같은 관리 기능은 내부적으로 처리됩니다. Azure Database for MySQL 서비스에서 데이터를 복제하는 경우 복제본이 기본에서 변경 내용을 읽기 전에 이진 로그를 제거하지 않도록 기본에서 이 매개 변수를 설정해야 합니다. binlog_expire_logs_seconds를 더 높은 값으로 설정하면 이진 파일 로그가 충분히 빨리 제거되지 않습니다. 이로 인해 스토리지 청구 금액이 증가할 수 있습니다.

event_scheduler

Azure Database for MySQL에서 event_schedule 서버 매개 변수는 이벤트 만들기, 예약 및 실행을 관리합니다. 즉, 일정에 따라 실행되는 작업은 특수 이벤트 스케줄러 스레드에 의해 실행됩니다. event_scheduler 매개 변수가 ON으로 설정되면 이벤트 스케줄러 스레드가 SHOW PROCESSLIST 출력에 디먼 프로세스로 나열됩니다. 다음 SQL 구문을 사용하여 이벤트를 만들고 예약할 수 있습니다.

CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT ‘<comment>’
DO
<your statement>;

참고 항목

이벤트 만들기에 대한 자세한 내용은 여기에서 MySQL Event Scheduler 설명서를 참조하세요.

event_scheduler 서버 매개 변수 구성

다음 시나리오에서는 Azure Database for MySQL에서 event_scheduler 매개 변수를 사용하는 한 가지 방법을 보여 줍니다. 시나리오를 설명하기 위해 다음 예인 간단한 테이블을 고려합니다.

mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| CreatedAt | timestamp   | YES  |     | NULL    |                |
| CreatedBy | varchar(16) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+
3 rows in set (0.23 sec)

Azure Database for MySQL에서 event_scheduler 서버 매개 변수를 구성하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 서버로 이동한 후 설정에서 서버 매개 변수를 선택합니다.

  2. 서버 매개 변수 블레이드에서 event_scheduler를 검색하고 VALUE 드롭다운 목록에서 ON을 선택한 다음 저장을 선택합니다.

    참고 항목

    동적 서버 매개 변수 구성 변경 내용은 다시 시작하지 않고 배포됩니다.

  3. 그런 다음 이벤트를 만들려면 MySQL 서버에 연결하고 다음 SQL 명령을 실행합니다.

    CREATE EVENT test_event_01
    ON SCHEDULE EVERY 1 MINUTE
    STARTS CURRENT_TIMESTAMP
    ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    COMMENT ‘Inserting record into the table tab1 with current timestamp’
    DO
    INSERT INTO tab1(id,createdAt,createdBy)
    VALUES('',NOW(),CURRENT_USER());
    
  4. Event Scheduler 세부 정보를 보려면 다음 SQL 문을 실행합니다.

    SHOW EVENTS;
    

    다음과 같은 출력이 표시됩니다.

    mysql> show events;
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    | Db  | Name          | Definer     | Time zone | Type      | Execute at | Interval value | Interval field | Starts              | Ends                | Status  | Originator | character_set_client | collation_connection | Database Collation |
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    | db1 | test_event_01 | azureuser@% | SYSTEM    | RECURRING | NULL       | 1              | MINUTE         | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
    +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
    1 row in set (0.23 sec)
    
  5. 몇 분 후에 테이블의 행을 쿼리하여 구성한 event_scheduler 매개 변수에 따라 매분 삽입된 행 보기를 시작합니다.

    mysql> select * from tab1;
    +----+---------------------+-------------+
    | id | CreatedAt           | CreatedBy   |
    +----+---------------------+-------------+
    |  1 | 2023-04-05 14:47:04 | azureuser@% |
    |  2 | 2023-04-05 14:48:04 | azureuser@% |
    |  3 | 2023-04-05 14:49:04 | azureuser@% |
    |  4 | 2023-04-05 14:50:04 | azureuser@% |
    +----+---------------------+-------------+
    4 rows in set (0.23 sec)
    
  6. 한 시간 후에 테이블에서 사례에서 event_scheduler가 구성되는 한 시간 동안 Select 문을 실행하여 매분 테이블에 삽입된 값의 전체 결과를 확인합니다.

    mysql> select * from tab1;
    +----+---------------------+-------------+
    | id | CreatedAt           | CreatedBy   |
    +----+---------------------+-------------+
    |  1 | 2023-04-05 14:47:04 | azureuser@% |
    |  2 | 2023-04-05 14:48:04 | azureuser@% |
    |  3 | 2023-04-05 14:49:04 | azureuser@% |
    |  4 | 2023-04-05 14:50:04 | azureuser@% |
    |  5 | 2023-04-05 14:51:04 | azureuser@% |
    |  6 | 2023-04-05 14:52:04 | azureuser@% |
    ..< 50 lines trimmed to compact output >..
    | 56 | 2023-04-05 15:42:04 | azureuser@% |
    | 57 | 2023-04-05 15:43:04 | azureuser@% |
    | 58 | 2023-04-05 15:44:04 | azureuser@% |
    | 59 | 2023-04-05 15:45:04 | azureuser@% |
    | 60 | 2023-04-05 15:46:04 | azureuser@% |
    | 61 | 2023-04-05 15:47:04 | azureuser@% |
    +----+---------------------+-------------+
    61 rows in set (0.23 sec)
    

기타 시나리오

특정 시나리오의 요구 사항에 따라 이벤트를 설정할 수 있습니다. 다른 시간 간격으로 실행되도록 SQL 문을 예약하는 몇 가지 유사한 예는 다음과 같습니다.

지금 SQL 문을 실행하고 하루에 한 번씩 끝없이 반복합니다.

CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;

매시간 끝없이 SQL 문을 실행합니다.

CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;

끝없이 매일 SQL 문을 실행합니다.

CREATE EVENT <event name>
ON SCHEDULE 
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;

구성 불가능한 서버 매개 변수

다음 서버 매개 변수는 서비스에서 구성할 수 없습니다.

매개 변수 고정 값
기본 계층의 innodb_file_per_table OFF
innodb_flush_log_at_trx_commit 1
sync_binlog 1
innodb_log_file_size 256MB
innodb_log_files_in_group 2

여기에 나열되지 않은 다른 변수는 기본 MySQL 값으로 설정됩니다. 버전 8.0, 5.75.6에 대한 MySQL 문서를 참조하세요.

다음 단계