다중 인스턴스를 사용한 데이터베이스 액세스
묘사
하나의 MariaDb 데이터베이스를 사용하는 ASP.Net Core 응용 프로그램의 인스턴스가 여러 개 있습니다.
여러 인스턴스는 수평적 성능 확장을 실현하기 위해 동일한 ASP.Net Core 응용프로그램의 복제본입니다.
애플리케이션에는 데이터베이스에 대한 쓰기(100번 쓰기/초)가 있으며, 여기서 한 테이블에 있는 두 열에 대해 고유한 제약 조건을 확인해야 합니다.
이러한 제약 조건을 EF Core를 사용하는 애플리케이션의 저장된 프로세서에서 데이터베이스 자체에 추가할 수 있습니다.
예
예를 들어 트랜잭션을 시작하고, 제약 조건을 확인하기 위해 데이터를 쿼리하고, 데이터를 작성하고 트랜잭션을 커밋합니다.우리는 애플리케이션의 다른 인스턴스에서 초당 총 100회를 수행합니다.
문의사항
- 애플리케이션에서 이러한 제약 조건을 에코코어로 확인하는 것이 일반적인 방법입니까?
- 이러한 접근 방식으로 일관성이 없거나 기록이 중단되는 등의 문제가 발생할 수 있습니까?
SQL 명령어의 대부분은 오버헤드(네트워크, 구문 분석, 최적화 등)이므로 쿼리 수를 최소화합니다.
반면에, 이로 인해 복잡성이 증가하는 경우, 이러한 조언은 역효과를 낳을 수 있습니다.
두 개만 있으면 충분할 경우UNIQUE테이블에 있는 인덱스를 선택합니다.따라서 제안하는 다중 문 아이디어가 아닌 단일 SQL로 압축됩니다.
테스트 후 "업 키" 확인INSERT서버로의 왕복이 아니기 때문에 저렴합니다.
그것은 거의 처럼 들립니다.INSERT IGNORE그것으로 충분할 것입니다.
멀티스레드 앱에서 적절한 데이터 무결성을 위한 트랜잭션이 필요한 경우에는 반드시 이러한 트랜잭션을 사용하십시오.
테이블 및 쓰기 문에 대한 SHOW CREATE TABLE을 제공하십시오.또한 HDD 또는 SSD 드라이브를 사용하고 있습니까?100/초 이상의 작업을 수행할 수 있는 많은 최적화 작업이 있습니다.하지만 구체적인 내용을 논의하지 않고는 유용한 답변을 드릴 수 없습니다."여러 인스턴스"가 여러 스레드가 단일 테이블에 도달하는 것을 의미하는지, 여러 스레드가 여러 테이블에 도달하는 것을 의미하는지, 또는 단일 서버에서 여러 인스턴스의 MariaDB(VM 또는 Docker)를 의미하는지는 불분명합니다.
IODKU, BEGIN+COMMIT를 인위적으로 추가하는 등 속도를 높일 수 있습니다.
언급URL : https://stackoverflow.com/questions/67905384/database-access-with-multipe-instances
'programing' 카테고리의 다른 글
| TypeScript의 인터페이스 및 클래스 (0) | 2023.07.12 |
|---|---|
| "날짜"를 열 이름으로 지정 (0) | 2023.07.12 |
| SQL Server에서 날짜를 검색하는 중; Current_TIMestamp vs GetDate() (0) | 2023.07.12 |
| Oracle SQL의 동적 피벗 (0) | 2023.07.12 |
| 브라우저 언어 탐지 (0) | 2023.07.12 |