2016-10-11 3 views
-1

우리는 원격 데이터베이스에서 많은 쿼리를 수행하는 .NET 응용 프로그램을 만들고 있습니다.데이터베이스 쿼리와 문자열 비교 성능

사용자가 변경할 수있는 여러 단락의 문자열이 있습니다.

지금은 문자열이 변경되었는지 여부에 관계없이 해당 문자열을 가져 와서 데이터베이스에서 업데이트하고 있습니다.

문자열을 데이터베이스에서 검색하고 클라이언트가 반환하는 문자열과 비교할 때 문자열을 저장하려고 생각합니다. 문자열이 같으면 데이터베이스 쿼리를 수행하지 않으며 쿼리가 다르면 쿼리를 수행합니다.

문자열이 여러 단락이 될 수 있으므로 문자열 비교를 수행하면 상당히 오랜 시간이 걸릴 수 있으며 문자열을 저장하면 공간을 차지할 수도 있습니다. 나는 시스템을 그대로 유지하는 것이 좋을까요, 아니면 문자열 비교를 수행하여 데이터베이스 업데이트가 필요한지 결정해야합니까?

+0

'dbString == inputString'은 비교하기에 꽤 오랜 시간이 걸리지 않을 것입니다 – Darren

+0

업데이트 전에 비교를하는 대신 문자열이 변경되었는지 (예 : 속성 설정자) 추적해야하는 이유는 무엇입니까? ? – itsme86

답변

2

클라이언트 측의 문자열 비교가 메모리에서 수행되고 이전 문자열을 검색 할 필요가 없으므로 동일성 검사가 매우 빠르게 실행됩니다. 또한 자연스럽게 분산 된 방식으로 발생합니다. 왜냐하면 각 클라이언트가 자체 비교를 수행하기 때문입니다.

대조적으로 네트워크 작업이 동일한 데이터의 선형 시간 메모리 내 작업보다 필연적으로 느리기 때문에 서버에 문자열을 보내는 것이 느립니다. 또한 모든 업데이트가 단일 서버에서 이루어 지므로 시스템의 중앙 구성 요소에 대한 부하가 증가합니다.

상당수의 경우 문자열이 변경되지 않으면 왕복 횟수를 줄이기 위해 메모리에서 비교하는 것이 좋습니다.

문자열이 거의 변경되지 않는 경우이 최적화를 삭제하여 코드를 단순화 할 수 있습니다.

+0

통찰력있는 답변에 감사드립니다! –