EC2에서 쓰기가 많은 쓰기 어플리케이션이 있습니다. MySQL DB에서 수천 개의 동시 쓰기 작업을 수행 할 수 있도록 최적화하는 방법에 대한 의견이 있으십니까?MySQL 데이터베이스를 쓰기 위해 어떻게 최적화합니까?
답변
쓰기 스케일링은 어려운 문제입니다. 아마도 스케일링을 작성하는 비밀은 읽기 스케일링에 있습니다. 즉, 캐시는 가능한 한 많이 읽으므로 쓰기가 모든 처리량을 얻습니다.
1) 데이터 모델로 시작 :
는 하나가 할 수있는 일의 무리가 있음을 가졌어요. 테이블을 삭제하거나 업데이트하지 않도록 데이터 모델을 설계하십시오. 조작 만 삽입입니다. 유효 날짜, 유효 순서 및 유효 상태를 사용하여 삽입 명령 만 사용하여 삽입, 업데이트 및 삭제 작업을 구현하십시오. 이 개념을 Append Only 모델이라고합니다. Checkout RethinkDB ..2) 동시 삽입 플래그를 1로 설정하십시오. 그러면 읽기가 진행되는 동안 테이블이 계속 삽입됩니다.
3) 꼬리 부분에 삽입 만있는 경우 행 수준의 잠금이 필요하지 않을 수 있습니다. 그래서, MyISAM을 사용하십시오 (이것은 나중에 InnoDB에서 벗어나지 않습니다).
4)이 모든 작업이 많지 않으면 메모리 엔진에 복제본 테이블을 만듭니다. MY_DATA 테이블이 있으면 메모리 테이블에 MY_DATA_MEM이라는 테이블을 작성하십시오.
5) 모든 삽입물을 MEM 테이블로 리디렉션하십시오. 두 테이블 모두를 UNIONS하는 뷰를 만들고 해당 뷰를 읽기 소스로 사용하십시오.
6) 정기적으로 MEM 내용을 Main 테이블로 이동하고 Mem 테이블에서 삭제하는 데몬을 작성하십시오. Mem 테이블에 Delete 트리거로 MOVE 연산을 구현하는 것이 이상적 일 수 있습니다 (메모리 엔진에서 트리거가 가능할 것으로 기대됩니다.).
7) MEM 테이블에서 삭제하거나 업데이트하지 마십시오 (속도가 느림). 또한 테이블의 키의 카디널리티에주의를 기울여야합니다 (해시 대 B 트리 : 로우 카드 -> 해시, 하이 카드 - > B- 트리)
8) 위의 모든 것이 작동하지 않는 경우에도 jdbc/odbc를 제거하십시오. InnoDB로 이동하고 Handler Socket 인터페이스를 사용하여 직접 삽입 (Yoshinori-San MySQL 용 Google)
나는 HS를 직접 사용하지 않았지만 벤치 마크는 인상적이다. Google Code에는 심지어 Java HS Project가 있습니다. 도움이
희망 ..
- 1. iPhone에서 UIColor를 어떻게 최적화합니까?
- 2. 이 쿼리는 어떻게 최적화합니까?
- 3. Javascript를 어떻게 최적화합니까?
- 4. MySQL 데이터베이스를 백업하기 위해 cron 작업을 어떻게 작성합니까?
- 5. 동적 간격 예약을 위해 이러한 ocaml 함수를 어떻게 최적화합니까?
- 6. 이 WordPress의 쿼리를 어떻게 최적화합니까?
- 7. 보고 용도로만 슬레이브 MySQL 데이터베이스를 어떻게 설정합니까?
- 8. 이 MySQL 데이터베이스를 어떻게 설계 하시겠습니까?
- 9. mysql 라이브러리에서 MySQL 데이터베이스를 덤프하는 방법
- 10. 이 정렬을 has_many 관계 수로 어떻게 최적화합니까?
- 11. 월별 차트를 작성하려면 투표 애플리케이션을 어떻게 최적화합니까?
- 12. mysql 데이터베이스를 Oracle로 변환
- 13. mysql 데이터베이스를 등록하려면 어떻게해야합니까?
- 14. MySQL 데이터베이스를 잠 가서 어떻게 쓰기/읽기/업데이트/삭제를 할 수 있습니까?
- 15. 서버 데이터베이스를 업데이트하기 위해 MySQL 서버에 데이터베이스 데이터를 보내는 방법
- 16. MySQL 데이터베이스를 검색하기 위해 검색 쿼리를 분리하지 않으려면 어떻게해야합니까?
- 17. mysql 데이터베이스를 복원하는 방법
- 18. mysql 데이터베이스를 .txt 파일
- 19. mysql 데이터베이스를 복원
- 20. 이 MySQL 데이터베이스를 정규화해야합니까?
- 21. MySql 데이터베이스를 정렬하는 방법?
- 22. mysql 데이터베이스를 채우는 것
- 23. 손상된 데이터베이스를 방지하는 방법 - MySQL
- 24. MySQL 데이터베이스를 SQL Server로 마이그레이션
- 25. 조건에 따라 mysql 데이터베이스를 업데이트하십시오.
- 26. ilmerge가 출력을 최적화합니까?
- 27. 나는이 방법을 쓰기 위해 노력하고있어
- 28. 오라클 데이터베이스를 사용하기 위해 PHP와 CodeIgniter를 설정하십시오.
- 29. 이 데이터베이스를 어떻게 구성해야합니까?
- 30. 유지 관리를 위해 동적으로 데이터베이스를 변경하십시오.
너무 소수의 데이터입니다. 최적화해야하는 이유는 무엇입니까? 병목 현상은 어디에 있습니까? EC2의 유형은 무엇입니까? EBS 볼륨을 사용하지 않는 이유는 무엇입니까? – Lex
어디에서 병목 현상을 최적화 할 것인가? : 동시에 수천 개의 등록을 동시에 작성해야합니다. 우리는 웹 서버에 EBS를 사용하지만 DB 용 RDS는 – user449914
입니다. hmm .. 등록 요청을 대기열에 넣지 않고 RDS에 삽입 할 백그라운드 프로세스가 있습니까? –