1. 즉각적인 삽입 성능을 높이기 위한 데이터베이스 분산 배포 2. 비즈니스가 허용하는 경우 비동기 삽입을 위해 메시지 큐를 사용합니다 3. 캐싱을 위해 redis 등을 사용한 후 데이터베이스에 비동기적으로 삽입합니다 3 . 삽입 작업이 빈번하고 관련 쿼리가 필요하지 않은 데이터의 경우 mongo와 같은 비관계형 데이터베이스를 사용하도록 선택할 수 있습니다
1 로그를 보고 요청이 너무 많은 요청 주소를 먼저 찾아 피할 수 있는지, 필요한 작업인지 확인하세요 2 비즈니스 요구에 따라 mysql 트리거를 작성하고 이 작업은 mysql에 맡기세요 3 swoole을 사용하여 데이터베이스에 비동기식으로 삽입 4 멀티스레드 큐를 사용할 수 있습니다 5 데이터베이스에 직접 데이터를 쓰지 말고 먼저 Redis에 쓸 수 있습니다
1. 즉각적인 삽입 성능을 높이기 위한 데이터베이스 분산 배포
2. 비즈니스가 허용하는 경우 비동기 삽입을 위해 메시지 큐를 사용합니다
3. 캐싱을 위해 redis 등을 사용한 후 데이터베이스에 비동기적으로 삽입합니다
3 . 삽입 작업이 빈번하고 관련 쿼리가 필요하지 않은 데이터의 경우 mongo와 같은 비관계형 데이터베이스를 사용하도록 선택할 수 있습니다
실시간 요구 사항이 그다지 높지 않은 경우 Redis를 중간 계층으로 사용하여 데이터를 수신한 다음 백그라운드에서 주기적으로 Redis에서 데이터를 가져오거나 메시지 구독 메커니즘을 사용하여 데이터베이스에 쓸 수 있습니다. 배치.
스토리지 구조 최적화를 고려하세요. 2. 가능하다면 여러 머신, 여러 데이터베이스, 여러 프로세스를 고려하세요. 3. 연결 풀 및 미들웨어(메시지 큐)와 중간 데이터베이스(redis) 탑재 4. 멀티스레딩...
참고로 타오바오의 초당 14만 주문 같은 것을 검색해 보면 됩니다. 이 문제에 대한 단단하고 빠른 해결책은 없습니다.
간단히 말하면 Redis와 같은 서버측 캐시를 사용하여 요청을 처리합니다.
메시지 대기열도 고려해야 합니다
캐싱 메커니즘을 추가하고 로드 밸런싱을 시도해 볼 수 있습니다
1 로그를 보고 요청이 너무 많은 요청 주소를 먼저 찾아 피할 수 있는지, 필요한 작업인지 확인하세요
2 비즈니스 요구에 따라 mysql 트리거를 작성하고 이 작업은 mysql에 맡기세요
3 swoole을 사용하여 데이터베이스에 비동기식으로 삽입
4 멀티스레드 큐를 사용할 수 있습니다
5 데이터베이스에 직접 데이터를 쓰지 말고 먼저 Redis에 쓸 수 있습니다