내부 데이터베이스가 열악합니다. 교체하거나 하드웨어를 척킹 하시겠습니까?


39

따라서 우리는 내부 회사 데이터베이스를 가지고 있습니다. 고객, 전화 통화, 판매 거래 및 고객 계약 / 체계를 관리합니다.

Access 2000 프런트 엔드 및 SQL Server 2000 표준 백 엔드입니다. 단일 서버, 이중 Xeon 3.2GHz, 2GB RAM, Windows Server 2003은 하루에 약 40 %의 CPU 부하를 받고 OS (HT)에 표시되는 4 개의 코어에 분산됩니다.

백엔드 데이터베이스는 제대로 설계되지 않았으며 숙련도가 낮은 개인이 유지 관리하는 10 년 이상 유기적으로 성장했습니다. 잘 정규화되지 않았으며 명백한 문제 중 일부에는 기본 키 또는 인덱스가없는 수만 행의 테이블이 포함되는데,이 테이블은 시스템에서 가장 많이 사용되는 일부 부분에 대해 다중 테이블 조인에도 많이 사용됩니다 (예 : 하루 8 시간 동안 모든 사람의 두 번째 모니터에 앉아 몇 초마다 큰 비효율적 인 쿼리를 실행하는 통화 관리자 응용 프로그램).

프런트 엔드는 그다지 좋지 않습니다. 수백 개의 양식, 중첩 된 저장된 쿼리, VBA 코드에 잘못 작성된 Embedded SQL, 수십 가지 "질문"등이 있으며 변경 될 때마다 관련이없는 것으로 보입니다. 우리는 "충분히 작동"하는 하나의 MDB를 설정했으며, 사내에 Access 헤비급이없고 (하나를 고용 할 계획도 없음) 그에 대한 변경 정책이 없습니다.

회사는 현재 천천히 성장하고 있으며 클라이언트, 전화 등의 수가 증가하고 동시 사용자 수가 약간 증가했으며 최근에 성능이 현저하게 악화되었습니다 (양식 간 이동 대기, 목록 채우기 대기 등) )

퍼프 먼의 말 :

  • 초당 디스크 전송 : 0에서 30 사이, 평균 4.
  • 현재 디스크 큐 길이 : 약 1

SQL Server의 프로파일 러는 1 분마다 수십만 건의 쿼리를 봅니다. 클라이언트의 CPU 사용량은 거의 제로이므로 서버 측 쿼리가 실행되기를 기다리고 있습니다. 이 워크로드를 DB Engine Tuning Advisor를 통해 테스트 백업에 적용했지만 그다지 큰 차이는 없었습니다.

그런데 100MB와 기가비트 이더넷이 모두 하나의 서브넷에 있고 2 층에 40 명의 ish 사용자가 있습니다.

질문에.

내가 알다시피 우리는이 상황을 해결 / 개선하기위한 두 가지 선택이 있습니다.

  • 이를 폐기하고 맞춤형 또는 부분 맞춤형으로 완전히 새로운 CRM 시스템으로 교체 할 수 있습니다.
  • 하드웨어를 척킹하여이 시스템의 수명을 연장 할 수 있습니다.

소프트웨어를 교체하는 것보다 훨씬 적은 비용으로 성능이 뛰어난 Intel i7 시스템을 구축 할 수 있습니다.

새로운 시스템이 개발 될 때이 시스템에서이 시스템을 호스팅 할 수 있으므로 낭비되는 하드웨어가 없습니다. 새로운 CRM 시스템이 계속 발전하고 있습니다. 1 년 이상 그런 일이 일어나지 않습니다.

이 상황에 대한 생각, 특히 당신이 여기에 있었다면 가장 감사하겠습니다.

감사


6
설명과 내용 모두 +1 이것은 우리 모두가 매일 보는 것입니다.
Dayton Brown

여기도 마찬가지입니다. 좋은 질문입니다.
Joseph Kern

1
DTA의 출력이 수행 할 데이터베이스 최적화의 한계에 도달했다는 의미는 아닙니다. SQL Server 전문가를 만나십시오! 그들은 놀라운 일을 할 수 있고 기존 하드웨어에 몇 년 더 생명을 줄 수 있습니다.
Nick Kavadias

답변:


20

나는 여기의 모든 사람들과 동의하지 않을 것입니다. 그것에 약간의 하드웨어 척. 저렴하고 빠르며 쉬우 며 적절한 CRM 솔루션을 구현하는 데 필요한 시간을 사게됩니다. 내가이 보드뿐만 아니라 스택 오버 플로우의 모든 사람들에게 혐오스러운 것을 옹호하는 이유는 프로젝트 관리자 / 관리자 였고 잠시 동안 "비즈니스"쪽에 있었기 때문입니다. 단어에 대한 나의 미움으로 인해 따옴표 안에 있습니다). 소프트웨어에 대한 설명을 바탕으로 다른 것을 재구성하는 데 1 년 정도 걸립니다. 비즈니스 규칙 / 질문을 발견 / 문서화하는 데 2 ​​개월이 소요될 수 있습니다. 개발 비용도 엄청나게 비쌉니다. 특히 트릭 아웃 서버 비용과 비교할 때.

실제로 그 이유 때문에 회사를 위해 일련의 웹 앱을 호스팅하려고합니다. 내부 IT 부서는 새로운 플랫폼에서 다시 개발하기를 원하기 때문에 더 나은 하드웨어로 옮기지 않습니다. 이 비용은 새로운 하드웨어로 이동하는 데 드는 비용의 약 3 배입니다. 회사가 1 년 안에 계약을 갱신하지 않았을 수도 있음을 언급하지 마십시오.


그의 질문은 "NewHardware AND NewCRM"이 아니라 "NewHardware OR NewCRM"이었습니다. 그리고 실제로 당신은 질문을 재구성 (OR에서 AND로 이동)하는만큼 보드에 반대하지 않을 것입니다 (새로운 CRM 구매).
Joseph Kern

여기에 몇 가지 다른 의견은 "두 가지를 모두 수행"이라고 말합니다. 그가 둘 다한다면, 의심의 여지가 없습니다. 그러나 그는 둘 다 할 여유가 있습니까?
Joseph Kern

Joseph은 아래에 전체 답변을했지만 새로운 하드웨어와 최신 서버 버전으로 업그레이드하고 일부 쿼리를 최적화하고 인덱스를 추가하는 것이 가장 효과적 일 것입니다. 사용자 지정 CRM이 성장하는 소규모 비즈니스에주는 경쟁 우위를 포기하고 싶지 않습니다.
Karl Katzke

내 두 가지를 모두 읽으면 하드웨어를 재 작업하는 동안 계속 작동하는 것입니다. 리소스에 따라 RAM의 수백 $$가 필요할 수 있으며 일부는 리팩토링 할 수 있습니다. 새로 만든 것이 사용자 정의 작성 시스템인지 아니면 즉시 키를 돌려야하는지에 대한 문제를 보여줍니다.
SpaceManSpiff

큰 그림을 보려면 +1 : 개발자 / IT를 던지는 것보다 하드웨어를 던지는 데 드는 비용이 적습니다. 필요한 모든 것을 수행하는 상용 CRM을 찾을 수 없다면 서버보다 비용이 적게 들고 마이그레이션하는 데 시간이 걸리지 않습니다.
Ernie

14

둘 다 할 필요는 없습니다. 내 제안은 단순히 테이블에 인덱스 / 키를 추가하는 것입니다.

기본 키 또는 인덱스가없는 수만 개의 행이있는 테이블 (멀티 테이블 조인에도 많이 사용됨)

많은 돈이나 시간을 소비하기 전에 몇 시간이 걸리고 특히 조인에 사용되는 열의 경우 조인에 관련된 테이블에 인덱스 (또는 가능한 경우 기본 키)를 추가하십시오. 몇 시간 만에 10 배나 쉽게 성능을 향상시킬 수 있습니다.


3
+1 또는 100의 계수-적절한 지수를 과소 평가해서는 안됩니다 ...
Oskar Duveborn

8

디스크 I / O가 없다는 것은 쿼리가 RAM에서 대부분 공급된다는 것을 의미합니다. 핫 테이블이 더 이상 RAM에 맞지 않고 서버가 디스크 작업을 시작하면 잘못 타고있을 수 있습니다. 2GB 또는 RAM은 요즘별로 많지 않지만 SQL2000 시대에는 크기가 커졌을 것입니다. 응용 프로그램이 일반적으로 조작하는 데이터의 양이 가지고있는 RAM보다 작습니다. 데이터 파일에서 "사용 된"공간의 양을보고 싶을 수 있습니다. 이것은 데이터베이스가 얼마나 많은 RAM을 소비 할 수 있는지에 대한 아이디어를 제공합니다. SQL Server는 RAM에 필요하지 않은 데이터를 유지하지 않지만 어떤 테이블이 언제 사용되는지 알기가 어려울 수 있습니다.

하이퍼 스레딩이 SQL Server에서 항상 도움이되는 것은 아닙니다. 더 나은 성능을 얻을 수 있습니다. 전원을 껐다 켜는 데는 재부팅이 필요하기 때문에 테스트하기가 어렵고 프로덕션 서버에서는 큰 번거 로움이 있습니다.

"분당 수십만 개의 쿼리"는 초당 수천 개의 쿼리로 변환됩니다. 그것은 꽤 바쁘게 들리지만, 그 트래픽의 대부분은 Access에 의해 커서를 가져올 수 있습니다. 액세스는 SQL에서 결과 세트를 효율적으로 검색하는 데 특히 나쁩니다. SQL Server 병렬화 설정을 해제하면 성능이 향상 될 수 있습니다.

또한 차단을 찾고 싶습니다. 블로킹 문제에서 하드웨어를 던지는 것이 항상 기대했던 극적인 개선을 만들어내는 것은 아닙니다. 디스크가 아닌 RAM이 많은 블로킹이없고 쿼리가 만족하는 경우 기본적으로 프로세서의 불만과 메모리 채널을 통해 데이터를 가져 오는 기능에 의존합니다. 이 경우 하드웨어가 빠를수록 좋은 개선이 필요합니다. 서두르고 (이 문제를 극복하기 위해) 천천히 성장하고 있다면 충분할 것입니다.

솔루션으로 하드웨어 추가 및 데이터베이스 개선은 확장되지 않습니다. 성장이 급증하면 새로운 하드웨어에 어려움을 겪을 수 있습니다. 또 다른 생각은 성공적인 응용 프로그램이 사용자를 끌어들이는 것입니다. 응용 프로그램의 응답 속도가 빨라지면 사용자는 보고서가 끝나기를 기다리는 동안 커피를 마시 러 갈 때보 다 더 많은 보고서를 실행할 가능성이 높습니다.

데이터베이스 스키마가 실제로 나쁘면 테이블의 인덱싱을 보면 성능이 약간 향상 될 수 있습니다. 자주 문의하는 테이블에 집중하십시오. 프로파일 러를 사용하여 서버에 대해 실행중인 쿼리를보고, 100,000 페이지와 같은 많은 데이터를 읽는 쿼리를 찾은 다음 많이 읽지 않는 쿼리를 처리하도록 지시 할 수 있습니다. 일부 테이블에는 키가 없다고 언급했습니다. 제약 조건이나 고유 인덱스에 의해 강제되지 않는 데이터에 자연 키가 있습니까?

테이블에 클러스터 된 인덱스가 있습니까? 클러스터형 인덱싱이 없으면 모든 종류의 보조 효과가 발생할 수 있습니다.

열이 많은 비 클러스터형 인덱스가 많이 있습니까? 이는보다 효과적인 인덱싱 전략을 구현하기보다는 많은 커버링 인덱스를 구축하려는 시도 인 경우가 많습니다. SQL Server는 쿼리 중에 의미있는 인덱스를 작성하고 클러스터되지 않은 클러스터 된 인덱스를 지원할 경우 효과적으로 인덱스를 효과적으로 구축 할 수 있습니다.

마지막으로 물어볼 가치가 있습니다. 테이블에서 유지 관리 (재 인덱싱 및 / 또는 업데이트 통계)가 수행되고 있습니까?


+1 자주 사용하는 테이블에서 열을 올바르게 색인화하여 찾으려면 쉽고 빠르게 고칠 수 있습니다. 그렇지 않은 경우, DBA / DBA가 무엇이든간에 너무 적은 비용이 들지 않아야합니다. 계약자가 해고 할 수있는 총알이없는 것처럼
보이면

앱이 제대로 설계되지 않은 경우 액세스가 "특히 SQL에서 결과 세트를 효율적으로 검색 할 때 나쁘지 않습니다 ". Jet / ACE는 SQL Server로 요청을 보낼 때 잘못된 가정을 할 수 있습니다. Jet / ACE는 배치 업데이트를 행당 하나의 UPDATE로 분류합니다. 성능 측면에서는 끔찍하지만 서버가 다른 사용자의 요청을 직렬화하고 인터리브 할 수 있기 때문에 긴 업데이트로 모든 것을 묶을 수있는 것과는 달리 서버 시민이 되려고 노력하고 있습니다. 운영 서버 측을 SPROC로 이동하면이 문제를 해결할 수 있습니다.
David W. Fenton

내가 보는 대부분의 액세스 앱은 설계되지 않았으며 일종의 발생 후 '유기적으로'진화했습니다. 나는 네트워크 트래픽과 이러한 동작과 함께 발생하는 대기 시간으로 인해 많은 결과 집합을 한 행씩 검색하는 피해자의 희생을 겪어 왔으며 계산을 중단했습니다. Jet / Ace 대신 SNAC와 같은 것을 사용하거나 더 지식이 많은 Access 코더가 해결할 수있는 최신 버전의 Access 로이 문제가 해결되지 않았다는 것을 100 % 확신하지는 못하지만 나는 자주 보았다.
darin 해협

6

이것은 기술적 질문이 아닌 비즈니스 질문입니다.

사업주로서 : 시스템은 사업에 얼마나 전략적입니까? 전략이 적을수록 관리 및 수정 비용이 적게 들며 다른 곳에서 비즈니스를 성장시키는 데 사용할 수있는 돈입니다.

컴퓨터 사람들은 모두 큰 방에 들어가서 디자인에 대해 논쟁하고 돈을들이면서 나를 두려워합니다. 시스템을 계속 진행하십시오! 이것이 성능 조정 (재 아키텍처없이)을 의미하는지 또는 더 많은 하드웨어를 던지는 지 여부에 관계없이 작동을 중지하는 경우에만 우선 순위입니다.

IT 컨설턴트 : 시스템은 레거시이며 숨겨진 운영 비용이 있습니다. 당사는 고객에게 적합한 시스템을 설계하여 향후 성장 및 전략적 이점을위한 확장 및 플랫폼을 제공 할 수 있습니다. 여기에 서명하면 모든 꿈이 이루어질 것입니다.

IT 직원으로서 : 나는 여기서 슈퍼 히어로가 될 수 있으며이 일에서 지옥을 최적화함으로써 임박한 재난을 피함으로써 회사를 구할 수 있습니다! 내가 회사를 수천 명 구했을 때 내 매니저는 선물과 칭찬으로 나를 샤워합니다.


2
질문에 답변하면서 재미있어서 +1
Ernie

2

나는 둘 다 말한다.

지금 당신의 40 % 정도의 CPU로 말했습니까? 사용자가 아직 불평하고 있습니까? 그렇지 않은 경우 여전히 호흡 공간이 있습니다. 한동안 더 많은 메모리가 충분할 수 있습니다.

갈 길에 대한 질문, 사내 소프트웨어 개발자가 있습니까? 대답이 아니오이면 다시 시도하지 마십시오. 당신은 지금 어디에 있는지 정확하게 알게 될 것입니다.

사내 개발자가 있다고 가정하면 사내 개발자가 프로젝트를 올바르게 수행 할 수 있습니까? 나는 기본적으로 고객의 프로젝트와 동일하게 완전하고 적절하게 (상대적인) 타임 라인을 규정하고 있다고 말하고있다. 그렇지 않다면 귀찮게하지 마십시오. 그렇지 않으면 현재 위치로 돌아갑니다.

회사가 자신을 고객으로 발표하고 내부 프로젝트에 동일한 리소스를 제공해야 할 때까지 현재 위치를 정확하게 파악할 수 있습니다. 거기에 있었고, 티셔츠의 전체 옷장을 얻었습니다.

따라서 제대로 할 수 없다면 박스 턴키에서 두 가지 선택을 할 수 있습니다. 직원이 구매 시스템의 금형에 맞아야하는 이유가 바로 직원입니다. 또는 커스터마이징이 가능하고 커스터마이징에 여전히 PROJECT 시간을 소비해야합니다.

또는 당신이 가진 것을 리팩터링하십시오. 사람들은 새로운 기능이 등장 할 때 완전히 동일한 기능을 기대할 것이므로 다른 방법으로 모든 것을 한 번에 수행해야하는 이유를 기억하십시오. 리팩터링하면 작동 방식을 파악한 다음 임시 변경 사항을 여러 소규모 하위 프로젝트로 계획 할 수 있습니다.

시스템을 보지 않으면 백엔드에서 최대한 많은 정규화를 수행하고 SQL의 많은 부분을 Stored procs로 옮길 수 있습니다. 그런 다음 C # Forms 또는 webapp에서 새 프런트 엔드를 빌드하십시오. 비즈니스 로직과 SQL을 프론트 엔드에서 제거 할 수 있으면 나중에 다시 쉽게 수행 할 수 있습니다. 소규모 프로젝트에 수행 한 작업을 유지함으로써 언제라도 제쳐 놓거나 중단되면 사용할 수있는 진전이 있습니다.


2

여기에 좋은 대답이 있지만 (집 개발자가 있다고 가정 할 때) 비교적 적은 양의 작업이 큰 영향을 줄 것입니다-기본 키를 추가하십시오 (모든 쿼리를 변경하지 않아도됩니다) 사용) 필드에 색인을 추가하고 쿼리를 약간 조정하면 크게 증가 할 수 있습니다. 문제 해결에 필요한 시간과 헤드 룸을 구입하기 위해 지금 RAM을 구입하십시오.

"고정 또는 도랑"이라는 주제에서 시스템 기능이 기본적으로 작동하고 필요한 작업을 수행하는 경우 휠을 다시 쓰지 마십시오. 사용자가 필요에 맞지 않기 때문에 체조를 사용해야하는 경우에는 노력을 기울일 필요가 없습니다.


2

글쎄 ... 지금은 얼마 전이지만 여기에 결과를 기록 할 것이라고 생각했습니다.

결국, 다른 문제를 해결하기 위해 VBA를 단계별로 단계별로 진행했습니다. 그런 다음 행 집합을 가져 오기위한 일부 호출이 20-30 + 초 동안 차단되고 있음을 깨달았습니다.

내가 그들을 파고 들었을 때 행 집합이 MS Access 쿼리를 기반으로한다는 것을 알았습니다.

그것은 다른 Access 쿼리에서 데이터를 선택하는 것이 었습니다.

그것은 또 다른 Access 쿼리에서 데이터를 선택하는 것이 었습니다.

쿼리 디자이너를 사용하여 모두 드래그 앤 드롭 한 것처럼 보입니다.

나는 상위 6 개 사용자의 고통을 겪었고, 틀림없이 이것들과 완전히 동일하다는 것을 알았습니다.

따라서 체인 쿼리 스택을 완전히 제거하고 각 쿼리를 T-SQL로 작성하여 서버에서 직접 실행할 수있는 단일 통과 쿼리로 대체했습니다.

개선은 모든 경우에 절대적으로 광범위하게 이루어졌으며 더 이상 누군가를 위해 더 이상 쿼리를 기다리지 않았습니다.

그런 다음 회사를 떠났습니다. 그것이 아직 있는지 모르겠지만 ... 나는 그것을 놓치지 않습니다.


중첩 쿼리에는 본질적으로 잘못된 것이 없습니다. 그리고 실제로 중요한 것은 Access의 소스 QueryDef에있는 것이 아니라 Jet / ACE가 서버로 전송하는 것입니다. SQL 프로파일 러를 사용하면 알 수 있습니다. 예, 비효율적이며 속도가 느려지는 Access에서 잘못된 쿼리를 작성할 수는 있지만 모든 데이터베이스에서 가능합니다!
David W. Fenton

1

응답을 게시하는 데 처음 몇 사람이 고려하지 않은 비용이 있기 때문에 Dayton의 답변에 추가하는 대신 별도 의 답변 을 게시하고 있습니다. 새로운 소프트웨어 프로그램. 그렇지 않으면, 그가 말한 것.

회사가 자체 소프트웨어를 개발하는 주된 이유 중 하나는 시장에 나와있는 것과 일치하지 않는 비즈니스 절차가 있기 때문입니다. 회사의 개별 비즈니스 절차는 회사가 테이블에 제공하는 가치의 상당 부분이며 회사가 나머지 시장에 비해 경쟁 우위를 차지하는 것입니다. 소프트웨어를 일반적인 것으로 대체하려면 직원을 재교육하고 경쟁 우위를 희생해야하거나 비즈니스 프로세스에 맞게 솔루션을 사용자 정의해야합니다. 둘 다 비싸고 시간이 많이 걸립니다. 비즈니스 컨설턴트 및 시스템 관리자로서 이러한 비용이 소규모 회사를 스스로 죽이는 것을 보았습니다.

당신의 진술에서, 당신은 프로세서 / 소프트웨어에 거의 묶인 것처럼 보입니다. 두 가지 작업을 수행합니다. 특히 현재 사용하지 않는 열에 인덱스를 추가합니다 (한도 내). 그리고 나는 당신이 할 수있는 가장 빠른 프로세서 세트를 찍을 것입니다.

또한 서버 에디션을 가능한 한 업그레이드했습니다. Access 2000과 SQL Server 2000은 10 년이되었습니다. 컴퓨터 사용 기간은 오래되었습니다!


1

이를 위해서는 전체 재구성 (재 아키텍처)이 필요합니다. 시스템을 처음부터 재구성하십시오. 이렇게하면 장기적으로 많은 비용을 절감 할 수 있습니다 (정비에 드는 오버 헤드 비용). 그 동안 하드웨어를 척킹하십시오. 이 질문은 기술적 인 질문보다는 "비즈니스 사례"에 가깝다고 생각합니다. 기술적 인면에서, 그 대답은 명백한 "그것에 더 많은 힘을 실어"입니다. 비즈니스 측면에서 새로운 시스템을 구축하십시오!


1

기술 답변 :

기본 키와 인덱싱을 철저히 검토해야한다는 수많은 제안이 있습니다. 또한 Access는 각 테이블에서 SQL Server TimeStamp (일명 RowVersion 열)를 사용하는 것이 좋습니다. 이렇게하면 레코드를 업데이트 할 때 레코드가 변경되었는지를 결정하는 데 소요되는 시간이 줄어 듭니다.

비즈니스 답변 :

새로운 CRM 솔루션은 사람들을 훈련시키는 데 많은 노력을 기울이고 있으므로 비즈니스 요구 사항에 정확히 맞는 시스템을 만들 수 없습니다.

SQL Server에 대해 잘 알고있는 Access 직원을 찾아서 테이블을 정규화하고 사용자의 문제를 해결하는 데 3 ~ 6 개월이 소요됩니다. 조용한 공간에서 접근 할 수 있지만 사람이 사용자 층으로 작업 할 수 있도록하십시오. 너무 접근하기 쉽지는 않습니다. 개발자는 중단을 좋아하지 않습니다. 에스


내 말에 따르면, 벅에게 가장 큰 타격은 먼저 인덱스를 추가 한 다음 하드웨어를 던지고 외부에서 전문가 수준의 액세스 개발자가 앱을 분석하고 병목 현상을 파악하는 것입니다 아르. 매우 간단 할 수도 있지만, 고급 서버 하드웨어의 가격 (또는 그 이하)에 대해 Access 전문가가 작업을 수행 할 수 있다고 생각합니다.
David W. Fenton

0

주어진 정보를 바탕으로 시스템을 교체합니다. 다른 시스템과의 유연한 통합을 가능하게하는 다른 CRM과 함께 사용하는 것이 좋습니다 ( ERP IS를 손상시킬 수 있음 ).

가장 까다로운 부분은 경영진과 사용자에게 업그레이드가 필요하도록 설득하는 것입니다.

조치

기술적 문제, 낮은 성능, 비잔틴 장애에 대한 두려움 등에 대한 우려를 표명하십시오. 그런 다음 두 가지 대체 CRM을 제시하십시오. 비즈니스 통합, 비즈니스를위한 전반적인 ERP 전략 및 가장 중요한 점으로 직원의 생산성과 수익성을 향상시키는 방법에 대해 이야기하십시오. 사용 사례 연구. 더 많은 정보를 원하지 않는 한 15 분을 초과하지 않도록 한 다음 사용자를 설득해야합니다.

사용자

교육 계획 (공급 업체가 제공 할 수 있고 관리가 승인해야 함), 사용자의 상위 20 % (파워 유저, 문제를 일으키는 사용자)와의 지속적인 의사 소통 및 시스템을 100 % 운영 상태로 유지하려는 확고한 약속 첫 달 (첫 달은 새로운 IS를 만들거나 중단 할 것입니다).

CRM 제품이 많이 있으므로 비즈니스 요구에 가장 적합한 것을 선택하십시오.


0

하드웨어를 던지면 시스템이 너무 까다로워 질 때까지 더 나쁜 설계 및 관리를 장려 할뿐 아니라 최신의 가장 큰 하드웨어에서도 제대로 실행되지 않습니다. 더 나은 구현을 살펴볼 차례입니다. 먼저 무엇이 필요한지 분석하십시오. 요구 사항을 완전히 이해 한 경우에만 요구 사항을 구현하는 가장 좋은 방법을 찾을 수 있습니다. 요구 사항을 이해했다면 요구 사항을 이해하기 시작하면 기존의 것을 수정하거나 처음부터 시작하는 것이 더 나은지, 더 비용 효율적인지, 완전히 다른 것으로 시작할 수 있습니다.


0

장기적으로는 데이터베이스를 다시 실행하는 것이 가장 좋습니다. 더 많은 하드웨어를 던지면 잠시 동안 문제가 해결되지만 계속 사용하면 잠시 후에 더 많은 하드웨어를 버려야합니다.

일반적으로 성능 문제가있는 경우 하드 디스크 / RAID의 i / o 병목 현상, 데이터베이스 샤딩 등을 살펴 보지만 샤딩과 같은 사항을 위해서는 데이터베이스를 활용하도록 데이터베이스를 설계해야합니다. 그것의 소리에서 당신의 어플리케이션은 절대 확장 될 수 없을 것입니다.

장기적으로 데이터베이스와 프런트 엔드 소프트웨어를 다시 실행하면 현재 비즈니스 요구 사항을 더 잘 반영하여 장기적으로 더 나은 서비스를 제공 할 수 있습니다. 사용자는 고맙게 생각할 것이고 하드웨어는 더 오래 지속될 것이며 장기적으로 하드웨어를 던지는 것보다 많은 돈을 절약 할 수 있습니다.


0

설명하면 완전히 새로운 맞춤형 시스템을 만드는 것은 의미가 없습니다. 시작한 곳에서 시작하거나 지금보다 나빠질 수 있습니다. 따라서 다른 사람이 타사 솔루션을 구매하도록 설득 할 수 없다면 최선의 방법은 최대한 리팩토링하고 하드웨어를 던지는 것입니다.

나는 두 가지 일을해야한다고 말하고 싶다 : 1) SQL 서버의 성능 분석. 서버 측을 지연의 소스로 식별 한 것으로 보이므로 이제 지연되는 쿼리와 그 이유를 알아야합니다. 아마도 가장 큰 장점을 줄 수있는 최적화 할 핫스팟 쿼리를 찾을 수있을 것입니다. 몇 초마다 업데이트하는 클라이언트가있는 경우 업데이트 속도를 낮출 수 있는지 확인하십시오 (화면의 목록이 5 초마다 업데이트해야합니까? 30은 괜찮습니까? 그렇지 않은 경우 약 15? ). 새로 고침 타이머를 늘리는 것과 같은 멍청한 물건은 멀리 떨어져 있으면 많은 오버 헤드를 절약 할 수 있습니다.

2) 더 많은 하드웨어를 던져라. 특히 엄청난 양의 램을 던졌습니다. 데이터베이스가 RAM에 완전히 들어가도록 메모리를 너무 많이 원합니다. 당신의 OS 및 소프트웨어 버전을 감시 (가 분명히 꽤 버전의 Windows와 규칙의 많은 그리고 그들이 실제로 지원 하드웨어). 더 많은 코어가 도움이 될 것이라고 확신 할 수 있다면 최대한 많은 CPU와 코어를 처리하십시오.


0

RAM과 프로세서는 언급했지만 디스크는 언급하지 않았습니다. MS의 SQL Server를 다루고 나서 거의 10 년이 걸렸지 만 메모리에 모든 것을 담을 수 없다면 다른 데이터베이스와 마찬가지로 디스크에 바인딩됩니다.

먼저 가능한 한 많은 양의 RAM으로 시스템을 채우려 고 시도합니다. 그런 다음 테이블이나 인덱스에 사용되지 않는 디스크에 로그를 기록하고 있는지 확인합니다. 그런 다음 동일한 스핀들에 인덱스가있는 테이블이 없는지 확인하려고합니다.

그 후에 데이터베이스 수준 조정에 대해 걱정할 것이지만,이를 통해 테스트를 중단하거나 쿼리를 악화시키지 않도록 테스트 및 최적화 목표를 정의해야합니다. 기본 키가 테스트 데이터베이스에서 큰 이점을 보이지는 않는다고 말했지만 테스트 방법론을 살펴 봐야합니다. 기본 키는 일부 데이터베이스 (MS SQL이 'em 중 하나인지 확실하지 않음)가 레코드 레벨 잠금을 사용하도록 허용 할 수 있습니다. , 테이블 수준 잠금이 아니라 일부 사용자 만 테스트 할 때 표시되지 않는 경합을 줄일 수 있습니다.


0

먼저 Kyle Hodgson에 동의하고 PK를 추가합니다. 값이 싸고 (시간 만) 쿼리가 향상 될 수 있습니다. 가장 추악한 10 가지 주요 쿼리에서 조인 열의 인덱스는 어떻습니까? 테이블 스캔은 어디에 있습니까?

둘째, 데이터베이스에서 데이터를 다듬는 것은 어떻습니까? 실제로 필요한 것보다 더 많은 행이 쿼리에 반환됩니까? 또한 Kyle의 RAM 제안 (2GB 이상)에 동의합니다.

이 모든 내용을 미래에 대한 계획을 세우면서 중간에 제안한 것에 대한 귀하의 글 (Joseph Kern)에 넣으십시오. 현재 CRM 앱 분화구를 사용할 수없고 관리 할 수없는 경우 관리 및 사용자에게 조직에 어떤 일이 발생하는지 문의하십시오. 아마도 그것은 그들이 미래에 대해 생각하게하는 데 도움이 될 것입니다.


0

하드웨어를 구입하십시오!

Xeon 55xx 시리즈 칩을 사용하는 경우 현재 매우 저렴한 주석 일뿐만 아니라 던질 수있는 모든 것이 비명을 지 릅니다.

위험 / 보상 일뿐입니다. DB를 개선하는 데 많은 시간과 비용을 투자하거나 더 빠르고 저렴한 방법으로 구매할 수 있습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.