느린 쿼리는 데이터베이스에서 실행되는 일부 쿼리가 예상보다 오래 걸리는 쿼리입니다. 이러한 쿼리로 인해 시스템 성능이 저하되거나 부하가 증가할 수 있으므로 신속하게 조치를 취해야 합니다. (feat. 채팅 GPT)
실제로 사용 중인 서버에서는 임의로 서버를 다운시키기 어렵다. 그래서 업데이트나 DB 수정을 위한 별도의 점검 시간이 있고, 슬로우 쿼리 관련 로그를 얻기 위해 /etc/my.cnf 관련 문서를 검색하던 중 슬로우 쿼리 문서는 재시작이 아닌 리로드로 불러올 수 있음을 알게 되었습니다.
정적 변수와 동적 변수의 차이점. 요약하면 정적 변수는 적용 시 재부팅이 필요하고 동적 변수는 대부분의 경우 즉시 적용됩니다.
먼저 정적 변수와 동적 변수의 정의를 확인해보자.

정적변수는 고유식별번호에서 0으로 수렴하는 숫자부터 세는 개념이다.
숫자를 임의로 세었을 때 첫 번째 숫자가 1씩 올라가면 다음 숫자는 2가 되고 그 다음 숫자가 3이 되는데 1을 제외하고 가장 많이 수렴되는 숫자이다.
동적 변수에 대해서도 물어봅시다.

보자마자 무슨 일인지 알고 싶어졌다. 그 중 메모리의 힙 영역에서 메모리를 할당하고 싶어서 추가 질문을 했습니다.

아~ 저수준 언어에서 힙이 메모리 제어 권한이 있다는 걸 깨달았습니다. 큰 프레임에서 메모리를 사용함으로써 프로그램을 유연하게 사용할 수 있다는 개념을 이해했습니다. 정확히 무슨 뜻인지는 모르겠지만 먼저 넘어가겠습니다.
이제 mysql에서 두 개의 변수가 어떻게 사용되는지 예제를 보자.

뭔가 이해가 안가는데 동적 변수를 사용하면 동적 쿼리 작성이나 반복 쿼리에서 효율적으로 사용할 수 있다고 합니다.
슬로우 쿼리 로그를 지속적으로 얻고 싶었는데 동적 변수에 가까운 건가요?

루프에서 효율적이라는 것을 알고 있지만 동적 쿼리는 어떻습니까? 질문을 해보자. 동적 쿼리는 실행 시 생성되는 쿼리입니다.
따라서 실행 시 쿼리를 단순화하는 것을 말하는 것으로 막연하게 이해할 수 있습니다.
동적 변수가 단순화 또는 축소에 관한 것임을 알았으니 이제 정적 변수에 대해 알아볼 차례입니다.

이번에는 쉽게 설명해드리겠습니다. static 변수는 처음/끝에서만 적용/유지되는 개념임을 알 수 있습니다.
그런데 제가 이 질문을 했기 때문에 동적 변수에 대해 한 번 더 질문하기가 더 쉬워졌습니다.

추가 설명이 나왔습니다. set global을 사용하여 클라이언트 수를 제한하고 varibales를 사용하여 설정 값을 실시간으로 확인한다고 합니다. 서버를 다시 시작하지 않고 즉시 적용됩니까?

mysql의 일부 동적 변수를 제외하고는 서버 재시작 없이 바로 적용된다고 한다.
처음에 궁금했던 슬로우 쿼리도 이와 관련이 있었는데, 슬로우 쿼리 관련 구문도 동적 변수인가요?

그것도 아닙니다. my.cnf에 정의된 변수는 전역 변수입니다.
그러나 전역 변수는 어떻습니까?

전역 변수는 서버 전체에서 사용되는 변수입니다. 동적 변수와 비슷한 개념인데 차이점이 뭔가요?

아~ 글로벌 변수는 글로벌 개념이고, 다이나믹 변수는 특정 구간에만 적용된다.
거의 도착했습니다.

느린 쿼리 관련 설정
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
log_slow_rate_limit = 1
log_slow_verbosity = 쿼리_계획
log_slow_admin_statements
이 값을 입력하고 싶었습니다.
set global 문을 추가하면 즉시 적용된다고 합니다. 그런데 재부팅하면 사라진다고 하던데요?
하지만 set global 문을 사용하고 싶지 않습니다. 인터넷이 전역으로 설정하지 않는 이유는 무엇입니까?

아, 그것들은 모두 동적 변수이므로 서버를 다시 시작할 필요가 없습니다.
그런데 서버를 재부팅하면 모든 값이 사라진다?

적용하려면 set global 명령이나 mysqladmin을 즉시 적용한다고 합니다.

그러나 전역 반환을 초기 값으로 설정합니까? 언젠가는 서버를 리부팅할 것 같아서 쓸데없는 옵션인 것 같습니다.
그 다음에

my.cnf를 편집한 후 mysqladmin은 영구적으로 적용된다고 말합니다. 언젠가 서버를 다시 시작해도 효과가 있을 것 같습니다.

chat gpt: 서버를 다시 시작해도 로드 시 my.cnf가 로드되기 때문에 걱정입니다. 그러나 문제가 있을 수 있습니다.

전역으로 설정하면 교차 검증에서 문제가 발생할 수 있으므로 주의하십시오.
결론: mysql에 있는 대부분의 동적 변수는 즉시 적용되며 반영구적으로 사용하려면 my.cnf를 수정한 후 admin 명령어를 사용하는 것이 좋다.

