문제

온라인 사진 커뮤니티를 운영하고 있으며 사이트가 데이터베이스 액세스에 크롤링되어 때로는 타임 아웃을 치는 것 같습니다.

나는 나 자신이 SQL 쿼리를 작성하고 테이블을 디자인하는 것으로 간주하지만, DBA는 아닙니다. 따라서 문제는 아닙니다.

일부 배경 :

  1. 내 사이트와 SQL 서버가 원격 호스트에서 실행 중입니다. SQL Server MGMT를 통해 Visual Studio 및 SQL에서 ASP.NET 코드를 업데이트합니다. 스튜디오 익스프레스. 서버에 물리적으로 액세스 할 수 없습니다.

  2. 내 저장된 모든 Procs (나는 그들 모두를 얻었다 고 생각합니다)는 거래에 싸여 있습니다.

  3. 메인 테이블은 현재 9400 개의 레코드에 불과합니다. 이 테이블에 밤에 12 개의 새로운 레코드를 추가합니다.

  4. 이 메인 테이블에는 여러 다른 테이블의 데이터를 단일보기로 모으는 모습이 있습니다.

  5. 보조 테이블은 더 작은 레코드이지만 더 많은 테이블입니다. 하나는 70,000, 다른 사람은 115,000입니다. 이들은 #3의 항목에 대한 의견 및 등급 기록입니다.

  6. 인덱스는 가장 필요한 필드에 있습니다. 그리고 나는 큰 테이블의 통계를 자동 재편성으로 설정했습니다.

사이트가 중단되면, 트랜잭션 로그를 지우기 위해 코드를 실행하고, 통계를 업데이트하고, 기본보기를 재건하고, 저장된 절차를 재구성하여 주석, 속도 반환을 얻습니다. 그러나 수동으로해야합니다.

안타깝게도 내 사용자는 이러한 문제에 좌절하고 참여가 줄어 듭니다.

그래서 제 질문은 ... 원격 환경에서, SQL DB를 정점에 유지하기위한 유지 보수 계획을 설정하고 예약하는 가장 좋은 방법은 무엇입니까 ???

정말 고마워! KLK

도움이 되었습니까?

해결책

유지 보수 작업을 유지 보수 계획으로 설정할 필요가 없습니다.

수행하려는 유지 보수 작업, 인덱스 재건, 통계 업데이트 등을 수행하는 저장된 절차를 만듭니다.

그런 다음 저장 프로 시저를 호출하는 작업을 만듭니다. 원하는 일정에 따라 작업을 구성 할 수 있습니다.

작업을 만들려면 절차 SP_ADD_JOB를 사용하십시오.

일정을 만들려면 절차 SP_ADD_SCHEDULE을 사용하십시오.

내가 자세히 설명한 것이 명확하고 이해할 수 있기를 바랍니다. 그러나 추가 지원이 필요하다면 자유롭게 줄을 버리십시오.

건배, 존

다른 팁

내 직감은 당신이 뭔가 잘못하고 있다고 말합니다. 밤에 서버를 재부팅하지 않으면 일부 시스템이 계속 유지 될 수없는 곳을 듣는 이야기와 비슷하게 들립니다 :-)

쿼리에 문제가 있으며, 가지고있는 행의 수는 거의 항상 성능과 관련이 없으며 데이터베이스는 어쨌든 매우 작습니다. SQL Server에 너무 익숙하지는 않지만 매우 달콤한 쿼리 분석 도구가 있다고 생각합니다. 또한 느린 쿼리를 기록하는 방법이 있다고 생각합니다.

나는 당신이 인덱스가 누락 된 것처럼 들립니다. 올바른 색인을 추가했다고 생각할 수도 있지만, 사용 중인지 확인할 때까지는 중요하지 않습니다. 어쩌면 당신은 당신이 올바른 것을 가지고 있다고 생각하지만 쿼리는 그렇지 않다고 제안합니다.

먼저 쿼리를 기록하는 방법을 알아 봅니다. 확률은 매우 좋습니다. 당신은 인덱스가 고칠 수있는 순차적 스캔을하는 살인자를 가지고 있습니다.

둘째, 대신 죽이는 작은 쿼리가있을 수 있습니다. 예를 들어, user_id에서 사용자 이름을 찾을 때마다 데이터베이스에 도달하는 "사용자"객체가있을 수 있습니다. 데이터베이스를 백 번 쿼리하는 지점을 찾아 캐시로 바꾸십시오. "캐시"가 요청이 끝날 때 삭제되는 개인 변수보다 더 이상 아무것도없는 경우에도 캐시로 교체하십시오.

결론적으로, 나는 그것이 SQL Server에서 잘못 구성된 것이라고 의심한다는 것입니다. 시스템이 중단되기 때문에 매일 밤 서버를 재부팅해야한다면 시스템이나 코드를 비난 하시겠습니까? 동일한 거래 ... SQL Server가 제공하는 도구를 배우십시오.

그것은 당신이 당신이 무언가 잘못하고 있다는 것을 받아들이면, 과정을 즐기십시오. 나에게는 아무것도 재미있는 데이터베이스 쿼리를 최적화하지 않습니다. 10 초 런 타임으로 쿼리를 가져 와서 잘 배치 된 단일 인덱스가있는 50ms 런타임으로 쿼리를 할 수 있다는 것은 놀라운 일입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top