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 CLI 및 PowerShell을 사용하여 다양한 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_creators
를 TRUE
로 안전하게 설정할 수 있습니다.
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_table
을 OFF
로 설정하면 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_mode
를 OFF
로 설정하면 복제가 중단됩니다. 읽기 복제본이 있는 경우 매개 변수를 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_shutdown
을 ON
으로 설정합니다. 마찬가지로 서버 매개 변수 innodb_buffer_pool_load_at_startup
을 ON
으로 설정하여 서버 시작 시 버퍼 풀 상태를 복원합니다. 서버 매개 변수 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
서버 매개 변수를 구성하려면 다음 단계를 수행합니다.
Azure Portal에서 서버로 이동한 후 설정에서 서버 매개 변수를 선택합니다.
서버 매개 변수 블레이드에서
event_scheduler
를 검색하고 VALUE 드롭다운 목록에서 ON을 선택한 다음 저장을 선택합니다.참고 항목
동적 서버 매개 변수 구성 변경 내용은 다시 시작하지 않고 배포됩니다.
그런 다음 이벤트를 만들려면 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());
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)
몇 분 후에 테이블의 행을 쿼리하여 구성한
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)
한 시간 후에 테이블에서 사례에서
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.7 및 5.6에 대한 MySQL 문서를 참조하세요.
다음 단계
- Azure Portal을 사용하여 서버 매개 변수를 구성하는 방법 알아보기
- Azure CLI를 사용하여 서버 매개 변수를 구성하는 방법 알아보기
- PowerShell을 사용하여 서버 매개 변수 구성 방법 알아보기