최근에 MySQL 서버를 5.1에서 5.6(CentOS 6.x에서 실행)으로 업그레이드했습니다. 업그레이드 이후 특정 테이블 작업을 수행하려고 하면 쿼리에 정말 오랜 시간이 걸립니다. 이는 개발 주기 반복에 큰 걸림돌이 되고 있습니다. 테스트를 수행하는 데 1초가 걸리면 수행하는 데 1~2분이 걸리고 이로 인해 생산성이 저하되기 때문입니다.
시간이 많이 걸리는 쿼리:
- 삭제 및 생성
- 그 이후에 삽입하기 CREATE
- 자르기
내 로컬 Mac에 동일한 버전의 MySQL(5.6.15)이 설치되어 있습니다. 저는 현재 6개의 테이블을 작업하고 있으므로 해당 테이블을 자주 자르고 싶습니다. 로컬 Mac에서 이를 자르면 쿼리에 21ms가 걸립니다(완전히 합리적입니다). CentOS 서버에서 동일한 테이블을 자르는 데 8.5초가 걸립니다. 테이블은 모두 InnoDB입니다.
로컬 Mac과 CentOS 서버의 동일한 데이터베이스에 있는 다른 테이블을 사용해 보았지만 다른 테이블에서는 극심한 속도 저하가 지속됩니다. 그래서 다른 데이터베이스를 모두 사용해 보았지만 극도의 속도 저하도 지속됩니다(로컬 Mac에서 DB 중 하나를 복원하는 데는 25초가 걸리지만 CentOS 서버에서는 4분 14초가 걸립니다).
MySQL 버전이 동일하기 때문에 구성의 차이일 수도 있다고 생각했습니다. "표시 변수"를 내보냈습니다. CentOS 및 로컬 Mac에서의 쿼리와 유일한 차이점(경로 또는 로그 파일 이름 등 제외)은 다음과 같습니다.
innodb_use_native_aio OFF // local Mac
innodb_use_native_aio ON // CentOS
lower_case_file_system ON // local Mac
lower_case_file_system OFF // CentOS
lower_case_table_names 2 // local Mac
lower_case_table_names 0 // CentOS
have_symlink YES // local Mac
have_symlink DISABLED // CentOS