나는 만들고있는 응용 프로그램과 함께 바위와 어려운 장소에 갇혀 있어요. 기본적으로이 프로그램은 매우 큰 데이터 세트를 생성합니다 (10 기가 이상이고 서버의 메모리를 초과하며 나중에이 데이터 세트를 사전에서 다른 서버로 전송하기가 어렵습니다). 데이터베이스를 사용하여 데이터를 저장하기로 결정했지만 더 많은 프로세스를 생성 할 때 사용 가능한 코어의 10 % 이상을 사용하지는 않지만 mysql 서비스는 항상 60-100 % 정도의 문제가 발생합니다.mysql이 대량의 동시 쓰기를 처리하도록하는 방법이 있습니까?
mysql을 사용하는 코어는 60-100 % 사이에서 실행됩니다. 나는 기본적인 mysql 코스를 가져 왔지만 그것에 대한 전문가는 아니며 단지 프로그램의 로컬 변수를 저장/배포하기 위해 사용하고있다. 어떻게 문제를 해결할 수 있는지 또는이 문제를 해결할 수 있는지에 대한 제안? 내가 가진 한 가지 생각은 내 메모리가 내가 쓸 계획 인 전체 데이터베이스를 저장할 수는 없지만 서버가 일부 메모리를 사용하여 일부 요청을 처리 한 다음 메모리가 가득 찼을 때 쓰기를 원합니다. (지금은 mysql이 1보다 작습니다. 서버 메모리의 %).
내 목표를 잘 알고 있기 때문에 특정 유형의 시스템에 충성하지 않아서 mysql이 좋은 해결책이 아닌 경우 다른 도구를 사용해 보니 기쁘다. (나는 hbase를 사용할 것이지만 mysql로드를 사용했다. 먼저). 더 좋은 것이 있으면 알려주세요.
나는 8 개의 프로세서를 생성하므로 8 초가 씁니다. 테이블에는 현재 하나의 열만 있습니다 (고유해야합니다). 인덱스가 없습니다 (읽기와 쓰기가 도움이된다는 생각은 아무 것도하지 않았습니다). 그것의 진짜로 2 개의 가동, 그것의 a는 데이타베이스에 쓸 것이다 존재하지 않는 경우에. 버전은 5.1.61입니다. 설정에 대해서는 잘 모르겠다. 기본값 인 centos 6과 Innodb를 사용하고있다. 잠긴 proceses를 보았을 때 11 행의 결과가 있었고 그 중 2 가지는 잠겨 있지 않았습니다 (하나는 사용 권한을 확인하고 다른 하나는 그물에 쓰는 중입니다). – Lostsoul
앱을 데이터베이스와 동일한 서버에서 실행하고 있습니다. 필요한 경우 이동할 수 있습니다.서버는 8 코어를 가지고 있지만 SQL은 1을 넘었고 앱은 10 %를 덜 받아 각각의 코어는 90을 MySQL에 가지고 있습니다. – Lostsoul
그건 정말 볼륨 측면에서 아무것도 아닙니다 - mySQL은 간단한 랩탑 컴퓨터에서 잠을 잘 수 있습니다. 인덱스가없는 것은 좋은 일이 아닙니다. 특히, 쓰기 전에 읽기를 수행하는 경우 - 인덱스가 없으면 mysql이 각 삽입 (해당 스캔 동안 관련 잠금 포함)에 대해 전체 테이블 스캔을 수행합니다 - 거대한 데이터 세트에서 초당 x6 정말 당신의 프로세스를 씹을 수 있습니다. 처음에 검색하는 필드에 인덱스를 추가하고 이것이 경합을 줄이는 데 도움이되는지 확인하는 것이 좋습니다. – AlexGad