2011-11-19 2 views
0

Windows Server 2008의 IIS7에서 실행되는 기존 ASP로 작성된 인트라넷 사이트를 관리하고 Microsoft Access를 데이터 저장소로 사용합니다 (보다 기능이 뛰어난 데이터베이스로 전환). 옵션이 아니며 .NET으로 전환하는 것도 아닙니다.IIS 7, Microsoft Access 및 Classic ASP에 대한 가장 효율적인 ADODB 연결

각 페이지는 다양한 뷰를 채우기 위해 데이터 저장소에 여러 호출을

등 사이트에 트래픽이 우리가 페이지 응답 시간과 하나의 가능한 원인과 문제가 발생하는 성장의 효율성에 달려있다으로

데이터 저장소에 대한 연결

이 유형의 설정에 사용할 가장 효율적인 ADO 연결 유형은 무엇입니까?

+0

MS 액세스 (어쩌면 SQL Express로)를 대체하지 않고 문제를 해결할 수있을 것입니다. 클래식 ASP는 인트라넷보다 더 많은 것을 처리 할 수 ​​있지만 액세스는 불가능합니다. – Filburt

+0

나는 그것을 고맙게 생각하지만 전환은 옵션이 아니다. 나는 우리가 가능한 한 많이 쥐어 짜려고 노력하고있다. – notreadbyhumans

+0

"연결 유형"이 무엇을 의미하는지 궁금합니다. 가장 효율적인 것은 Microsoft.JET.OLEDB 공급자와 같이 가장 원시적 인 공급자입니다. 그 밖의 무엇을 당신이 참조하고 있는지, 당신은 실제로 사용할 커서 유형에 대해 이야기하고 있습니까? – AnthonyWJones

답변

1

몇 가지 우리 웹 사이트에서 비슷한 문제가있었습니다. 모든 콘텐츠는 데이터베이스 중심이었습니다. SQL Server를 사용하여 웹 페이지를 표시 할 때 가능한 한 데이터베이스 왕복을 최소화했습니다. 우리는 과도한 사용 사이트가 지속적으로 데이터베이스에 충돌하고 웹 사이트가 앞으로 어떻게 구축되는지에 대해 약간의 변경을가하도록 염려했습니다.

데이터베이스 포함 콘텐츠의 약 70 %가 정적 포함 파일로 대체되었습니다. 우리는 웹 사이트 콘텐츠 데이터를 세 그룹으로 나누었습니다. 변경

  • 세미 정적 콘텐츠를 변경하지 않은

    1. 정적 컨텐츠 거의
    2. 데이터베이스 기반 컨텐츠

    우리는 파일을 포함와 정적 콘텐츠를 대체했다. 고객이 변경을 원할 경우 변경 사실을 알려주었습니다 (유료).

    Semi-Static 콘텐츠는 거의 바뀌지 않지만 고객이 백엔드 인터페이스을 사용하여 변경할 수있는 데이터 으로 분류되었습니다. 이 경우 정적 포함 파일도 사용했습니다. 데이터베이스를 변경 한 후에는 정적 데이터를 데이터베이스 업데이트를 기반으로하는 포함 파일로 다시 만든 정적 데이터 작성 위젯을 실행했습니다 (사용자에게 투명 함). 다음에 페이지를 호출 할 때 새로 빌드 된 include 파일을 사용합니다.

  • +0

    불행히도 그건 옵션이 아닙니다. 우리는 질문에 설명 된 설정을 고집합니다. – notreadbyhumans

    0

    다른 ADO 유형을 사용하여 성능을 향상시킬 수 있는지 확신하지 못합니다. 데이터베이스 크기와 구조와 관련이 있다고 생각합니다.

    나는 내 응용 프로그램과 비슷한 문제가있었습니다. 내 고객을 위해 많은 앱을 만들었지 만 그 중 많은 앱이 많은 잠재 고객을 보유하지 못했습니다. 최근에 나는 하나, 그리고 소년을 만들었고, 나는 그것을 효율적으로 만들기 위해서 한 두 가지를 배워야 만했다.

    아직 몇 가지 사항을 고려해야합니다. 일부는 너무 다른 사람에게 조금 당신을 위해 기본적이지만 유용 할 수 있습니다 :

    1) INDEX 또는 전체 텍스트 인덱스 - 내 데이터베이스 속도를 높이기 위해, 나는 INDEX의 내 쿼리에게 엄청난 양의 속도를 내가 쿼리 열을 추가 (그러나 INSERT의 속도는 약간 느려집니다). 또한 FULLTEXT INDEX를 여러 단어를 검색 한 열에 추가하여 끔찍하게 느린 LIKE/IN 절을 잃어 버릴 수있었습니다.

    2) 정상화 또는 정규화 - 내 쿼리 중 하나가 조인과 하위 쿼리를 사용하여 16 개의 테이블을 검색하여 느리고 부피가 커지고 혼란 스럽습니다. 필자는 검색에 필요한 16 개의 테이블에서 사용할 수있는 모든 데이터가 들어있는 "정규화되지 않은"테이블을 만들어이 문제를 해결했습니다.그래서 FULLTEXT INDEX와 de-normalized and indexed table의 도움으로, 쿼리의 길이는 몇 줄에 불과합니다. 정규화되지 않은 테이블을 사용하기 전에 먼저 정규화 된 테이블을 이해해야합니다. 나를 위해, 이것은 당신이 규칙을 어길 수있는 정확한 상황이었다.

    3) SQL 필드 선택 - SQL 쿼리에서 필요한 필드 만 선택하십시오. 이것은 단순한 실수이지만 여전히 만들 수 있습니다. 예를 들어 반환 된 열이 모두 필요하지 않은 경우 (select * from myTable) 필요하지 않은 경우 (myTable에서 select id, fname)와 같은 더 정확한 작업을 수행하십시오.

    4) 는 DB 정리을 - 나는 액세스에 대한 있지만 OPTIMIZE 쿼리를 사용하여 정리하여 DB를 할 수있는 MYSQL에 확실하지 않다 어떤 때로는 자주 많은 데이터를 삽입하고 삭제하여 생성하여 DB 수리 틈새를, . 타이머, 사용 된 색인, 사용 된 행 및 리턴 된 레코드와 같은 조회를 자세히 설명하는 EXPLAIN을 사용할 수도 있습니다.

    DB 성능을 확보하는 데는 여러 가지 방법이 있습니다. 당신이 구글 "데이터베이스 최적화"또는 "데이터베이스 튜닝", 당신은 좋은 읽기를 찾아야 만합니다.