2012-07-27 7 views
0

먼저 내가 초보 프로그래머 일뿐만 아니라 결코 SQL 전문가라고 말해 보지 마십시오. 우리는 언젠가 (2 년 이상) 언젠가 공급자로부터 무거운 짐을 앓고있는 직장에서 앱을 가지고 있습니다. 서버 중 하나에서 MSSQL 인스턴스로 실행되며 데스크톱에 대한 클라이언트 설치가 있습니다. 클라이언트 소프트웨어는 데이터베이스에 대한 직접적인 SQL 호출을 수행하고 있습니다 (클라이언트 설정을 처리하기위한 로컬 mysql 인스턴스도 있음). 통신을 위해 여는 포트는 6-12 개입니다. SQL 관리자를보고, 나는 다양한 클라이언트에서 직접 SQL 호출을 볼 수 있습니다.서버 측 대 클라이언트

나에게 이것은 완전히 잘못된 접근이라고 보입니다. 내가 한 가장 가까운 일은 웹 페이지 + PHP + MySQL이었습니다. 웹 페이지는 요청을하고 모든 처리는 서버 측이되고 결과를 단순히 표시합니다. 내 사용자들이 느낀 부진한 점은 클라이언트 측 요청과 SQL 데이터 처리 때문이라고 생각합니다.

ps : 지금까지하지 않았다면 다른 패러다임으로 전환하는 것이 의문의 여지가없는 것으로 알고 있습니다. 나는 내가 기지에서 멀어 졌는지 알고 싶다.

+0

* "나에게 이것은 완전히 잘못된 접근 방식입니다."* - 이유를 설명해 주시겠습니까? "클라이언트 설정"을위한 로컬 MySQL 인스턴스를 갖는 것이 확실히 이상하게 보입니다. 하지만 중앙 데이터베이스에 액세스하는 응용 프로그램이 잘못되었습니다. * "사용자가 느낀 부끄러움은 클라이언트 측 요청과 SQL 데이터 처리에서 비롯된 것입니다."* - 이것을 확인하기 위해 메트릭을 수집했는지 또는 프로파일 링/디버깅을 수행 했습니까? 병목 현상이 어디 있는지 알지 못하면 최적화하지 마십시오. 당신은 클라이언트에게 일반적으로 프로세싱을 오프 로딩시키는 것이 무엇이든 속도를 높일 것이라고 생각하게합니까? – David

+0

관리 스튜디오를 열고 도구 메뉴를 클릭 한 다음 SQL Server 프로파일 러를 클릭하십시오. 사용자가 "느리게"느끼는 동안 프로덕션 데이터베이스를 가리 키십시오. 나는 당신이보고 싶어하는 것이 단일 요청들의 무리라고 상상한다. 테이블에서 선택 * id = 1; 테이블에서 선택 * id = 2; table에서 id * = 3을 선택하십시오. 그렇지 않은 경우 읽기/쓰기 시간을 확인하고 조금 더 자세한 정보를 얻으십시오. –

답변

2

근심을 벗어났습니다.

클라이언트 측에서 처리 능력이 훨씬 더 높습니다.

하나의 서버와 5 개의 클라이언트를 고려하십시오. 서버가 클라이언트의 3 배의 힘을 가졌음에도 불구하고 클라이언트는 여전히 5 : 3 더 강력합니다.

응용 프로그램이 느린 경우 제대로 작성되지 않았습니다. 근본 원인을 조사해야합니다. 클라이언트/서버는 디자인에서 선도적 인 관행입니다. 근본 원인이 아닌 것 같습니다. 잘못 구현되었거나 다른 이유가있을 수 있습니다. 로컬 mysql을 갖는 것에 대한 여러분의 의견은 나에게 매우 비웃음을줍니다.

+0

앱에 대해 지불 된 폐쇄 소스입니다. 그러나 내가 본 것들 중 일부는 잘못 구현 된 것처럼 보입니다. 즉, 로컬 mysql 인스턴스이고 주 클라이언트에서는 bottm 섹션이 다른 프로그래밍 언어로 작성되었으며 (공급 업체가이 사실을 알려주었습니다), 로컬 클라이언트 그래픽 드라이버에 크게 의존합니다 (진부한 vid 카드의 맨 아래 섹션 로드되지 않습니다), 그리고 모든 2D 텍스트 정보 일 때 그들은 directx/gaming 유형 비디오 호출을하고 있습니다. SQL 서버에 로그인하고 조금 더 많은 정보를 제공합니다. – user1249998

관련 문제