mysql 8 innodb에서 데이터베이스 캐시를 지우는 방법
P粉571233520
2023-08-27 23:46:28
<p>동일한 mysql 8 데이터베이스와 테이블에서 동일한 쿼리를 여러 번 실행해 보았습니다. </p>
<p>쿼리 및/또는 테이블 자체를 조정하면 성능이 향상될 수 있는지 확인하기 위해 실험을 해야 합니다. 하지만 첫 번째 시도 이후에는 데이터가 캐시되어 있기 때문에 응답 시간이 훨씬 빨라진 것 같습니다. </p>
<pre class="brush:php;toolbar:false;">mysql 8 innodb</pre>
<p>데이터를 처음부터 가져오려면 캐시를 지우려면 어떤 옵션이 필요합니까? </p>
<시간 />
<p>이전에 제안된 답변은 모두 mysql 8이 아닌 mysql 5와 관련된 것으로 보입니다. 대부분의 명령은 현재 더 이상 사용되지 않는 것으로 보입니다. </p>
<p>서버를 다시 시작하지 않고 MySQL 쿼리 캐시를 삭제합니다</p>
프로덕션에서 자주 실행되는 쿼리라면 목표가 뒤처진 것 같습니다. 쿼리를 두 번 실행하고 두 번째 쿼리의 타이밍을 활용하는 것이 좋습니다. 이렇게 하면 프로덕션에서 볼 수 있는 것과 더 가까워집니다. 즉, 데이터가 이미 캐시에 있습니다.
(Bill은 "쿼리 캐시"는 중요하지 않지만 "버퍼 풀"은 중요하다고 설명합니다.)
이것은 시간에 따른 변화를 볼 수 있을 만큼 큰 테이블을 만들지 않고도 쿼리를 테스트할 때 제가 좋아하는 기술입니다.
으아악이 숫자는 데이터 또는 인덱스 행의 실제 읽기/쓰기 횟수입니다. 숫자는 출력 행 수, 테이블의 행 수 등과 유사할 수 있습니다. 이를 통해 예를 들어 전체 테이블(또는 인덱스) 스캔이 있는지 알 수 있습니다. 0이 아닌 "Handler_write%" 값은 임시 테이블이 필요함을 나타냅니다.
또한
EXPLAIN ANALYZE
귀하의 버전을 사용할 수 있는지 확인하세요.추가 팁: 색인 레시피
연결하신 질문은 쿼리 캐시에 관한 것인데, MySQL 8.0에서 삭제되었기 때문에 더 이상 삭제할 필요가 없습니다.
귀하의 표현을 보면 쿼리 캐시와 다른 버퍼 풀에 대해 묻는 것 같습니다. 버퍼 풀은 데이터와 인덱스 페이지를 캐시하는 반면 쿼리 캐시(있는 경우)는 쿼리 결과를 캐시합니다.
MySQL 서버를 다시 시작하지 않고 버퍼 풀을 지우는 명령은 없습니다. 페이지는 다른 페이지에 의해 제거될 때까지 버퍼 풀에 캐시된 상태로 유지됩니다.
버퍼 풀은 RAM에 위치하므로 MySQL 서버 프로세스가 다시 시작되면 해당 내용이 지워집니다. 따라서 처음부터 시작하려면 프로세스를 다시 시작해야 합니다(운영 체제 전체를 다시 시작할 필요는 없으며 MySQL 서비스만 다시 시작하면 됩니다).
MySQL 8.0에서는 다시 시작해도 버퍼 풀의 내용이 완전히 지워지지 않습니다. 버퍼 풀 내용의 일정 비율은 종료 중에 저장되고 시작 시 자동으로 다시 로드됩니다. 이 기능은 기본적으로 활성화되어 있지만 비활성화하도록 선택할 수 있습니다.
이에 대해 자세히 알아보기: