오늘 저는 MSN 그룹의 몇몇 친구들과 ASP.net 프로그램의 성능 최적화에 관해 이야기를 나누었습니다.
이제 최적화 방법을 요약해 보겠습니다.
1. 테이블 구조 최적화, 인덱스 최적화, SQL 문 최적화, 저장 프로시저 최적화를 포함한 데이터베이스 최적화
2. ViewState 최적화
3. 캐싱 사용
4. 정적 페이지 생성(주로 대화형이 아닌 정보 게시 시스템의 프런트엔드용)
5. 프런트 엔드 IIS/Apache를 사용하여 정적 페이지, 그림 및 js 파일에 대한 요청 처리
6. 최적화 알고리즘
7. 누구나 추가할 수 있습니다
. 성능 튜닝과 관련하여 거의 모든 전문가의 조언은 다음과 같습니다. 정확한 성능 측정이 없으면 성능 튜닝을 수행하지 마십시오. 벤치마크 성능 테스트 없이 튜닝하면 기본적으로 시스템 코드를 지저분하게 만드는 것 외에는 다른 이점이 없습니다. 0.1초에서 0.01초로 알고리즘을 개선하기 위해 열심히 노력하여 얻은 효과는 잘못된 선택 문으로 인해 손실되는 경우가 많습니다.
따라서 이전 방법이 만병통치약은 아닙니다. 튜닝을 하려면 먼저 시스템이 느린 부분을 이해해야 합니다. 절대로 서둘러 의료 조치를 취하지 마십시오. 다음 내용은 개인적인 업무 경험에서 나온 내용으로, 모든 시스템을 적용할 수 있는 것은 아니니 꼭 기억해주세요! ! ! !
다음 네 가지 조정 방법을 분석해 보겠습니다.
OA/비즈니스 관리 시스템 유형 애플리케이션의 경우 데이터베이스 최적화는 다음과 같은 여러 가지 이유로 핵심이 되는 경우가 많습니다.
1. 데이터베이스의 CRUD는 이러한 시스템에서 가장 일반적인 작업입니다.
2. 데이터베이스 시스템 작업으로 인해 디스크 I/O가 발생하는 경우가 많습니다(데이터베이스 파일 및 로그가 디스크에 저장되기 때문).
3. 데이터베이스 시스템의 애플리케이션 작업은 종종 프로세스 간 또는 심지어 시스템 간 수행됩니다. (디스크 I/O + 네트워크 I/O, CPU 속도나 메모리 양에 관계없이 우리가 감당할 수 없는 수준입니다)
따라서 데이터베이스에 대한 이러한 작업은 전체 시스템의 성능 병목 현상을 일으키는 경우가 많습니다.
그렇다면 이러한 일반적인 방향을 알면서 어떤 SQL 또는 저장 프로시저가 느린지 어떻게 알 수 있을까요? 이를 위해서는 데이터베이스 프로파일러를 결합해야 합니다.
SQL Server의 경우 이 문서를 읽어보세요.
http://www.microsoft.com/china/msdn/library/data/sqlserver/Profiler.mspx?mfr=true
Oracle의 경우 이 기사를 읽을 수 있습니다.
http://www.javaeye.com/post/117389
2. ViewState, 이 동동은 상대적으로 규모가 크고 인터넷 애플리케이션에 일정한 영향을 미칠 것입니다. 최적화에 관해서는 정원에서 이미 이야기를 했으니 직접 검색해 보시면 됩니다.
3. 캐시 사용에 대한 나의 의견은 MSN 그룹의 몇몇 친구들의 의견과 그다지 일치하지 않습니다. MSN 그룹의 한 친구는 캐시가 정적 변수 집합이거나 캐시 컨트롤러에 의해 제어되는 일부 변수일 수 있다고 믿습니다. 저는 개인적으로 이러한 캐시가 단일 서버 환경에서 좋은 성능을 발휘할 수 있다고 생각합니다. 다중 서버 환경에서는 이러한 캐시가 성능 병목 현상이 될 수 있습니다. 왜냐하면 애플리케이션이나 캐시 컨트롤러가 여러 프로세스의 캐시 콘텐츠를 신중하게 보장해야 하기 때문입니다. . 일관된. 이 프로세스는 프로그램의 확장성을 크게 감소시킵니다. 100개의 서버가 있는 웹 팜을 생각해 보십시오. 하나의 프로세스에서 캐시를 수정하려면 나머지 99개의 서버가 올바르게 변경되었는지 알림과 확인이 필요합니다.
이를 위해 Memcache는 비교적 좋은 솔루션입니다. 유명한 위키 제품인 mediawiki는 이를 캐시 서버로 사용합니다. Memcache에는 .net 클라이언트 API도 있습니다.
4. 잘 모르겠습니다. 전문가의 조언을 부탁드립니다
. 5. 인터넷에 소개가 많이 있습니다. 특히 Java에 대한 소개가 많이 있습니다. 직접 구글링해 보세요.
6. 이 최적화는 가장 복잡하고 효과가 가장 눈에 띄지 않을 수 있습니다. 꼭 그렇게 해야 한다면 여덟 명의 불멸자가 바다를 건너 그들의 마법의 힘을 보여주도록 하십시오.
http://www.cnblogs.com/ncindy/archive/2006/11/07/553533.html