2017-02-22 12 views
0

지속성을 위해 MySQL을 사용하는 테스트 스위트의 속도를 높이고 있습니다. 아래 그림과 같이 RAMDisk를 사용하도록 datadirtmpdirmy.cnf에서 변경했습니다.RAMDisk에서 MySQL을 실행하십시오.

datadir   = /run/shm/mysql 
tmpdir   = /run/shm/mysqltemp 

문제는 때마다 내가 테스트가 테스트중인 기능의 일부로서 특정 행을 삭제하려고하면 내가 외래 키 제약 조건 위반에 달렸다 어떤 점에서, 전체 테스트 스위트를 실행한다는 것입니다. 이상한 부분은 RAMDisk에서 MySQL을 실행하지 않거나 datadir을 기본값 인 /var/lib/mysql/으로두고도 tmpdir 만 변경하면 발생하지 않는다는 것입니다. RAM에서 datadir으로 테스트를 실행하고 싶습니다. 왜냐하면 이렇게 할 때 클린업 로직이 놀랍도록 빠르다는 것을 알았 기 때문입니다.

누군가 내가 여기서 잘못하고있는 것을 지적 할 수 있습니까?

+0

미안하지만, datadir은 그대로두고 tmpdir 만 변경하십시오. 나는 그것을 바로 잡기 위해 질문을 편집 할 것이다. – ivanorone

답변

1

MySQL을 실행할 충분한 RAM이 있는지 확인하십시오. 또한 을 권장하지 않습니다. RAMDISK에서 MySQL을 실행하는 것이 좋습니다.

최적화라고 말하면 MEMORY 유형의 데이터 저장소를 활용하고 물론 SSD에서 실행해야합니다. HDD/SSD의 가장 큰 차이점은 I/O 대기 시간이므로 이것이 많은 서버가 REDIS와 같은 메모리 (캐시) DB를 사용하는 이유입니다.

최적화와 함께 행운을 빕니다.

+1

도움 주셔서 감사합니다. 나는 생산 과정에서 RAMDisk에 MySQL을 실행하지 않고 있으며, 테스트와 더 빠른 테스트 스위트를 제공한다는 단순한 목표를 위해서만 사용됩니다. MEMORY 유형의 데이터 저장소에서 InnoDb를 사용하는 생산품에 최대한 근접한 설정으로 테스트를 실행하기를 원하기 때문에 실제로 사용하지 않으려 고합니다. 나는 이미 SSD를 사용 중입니다. 이 스위트는 내가 질문에 대해 말한 최적화없이 11 시간 이상을 보냈고, tmpdir를 RAMDisk로 변경하는 데는 약 3 시간이 걸렸습니다. – ivanorone

+0

RAMDisk에서 innoDB를 실행하면 문제가 발생하지 않지만 권장하지는 않습니다. 외부 키/인덱스의 손상은 MySQL의 공간 부족으로 인해 발생할 수 있습니다. 또한 사용중인 스토리지 시스템의 버전을 언급 할 수 있습니까? –

+0

MySQL 버전 5.5.54를 사용하고 있습니다. RAM 디스크에는 8GB의 메모리가 있으며 전체 상자에는 16GB의 메모리가 있으며이 상자는 테스트 스위트 만 실행합니다. 아마도이 메모리는 충분하지 않지만 MySQL이 메모리가 부족하면 불평하면 안됩니까? – ivanorone