데이터베이스 최적화 실습 [TSQL]
앞에서 인덱스를 올바르게 사용하는 방법을 소개했습니다. 인덱스를 조정하는 것이 가장 빠른 성능 튜닝 방법이지만 일반적으로 인덱스를 조정하면 쿼리 성능이 향상됩니다. 또한 데이터 액세스 코드와 TSQL을 조정할 수도 있습니다. 이 기사에서는 데이터 액세스 코드와 TSQL을 최적의 방식으로 재구성하는 방법을 소개합니다.
4단계: 애플리케이션에서 데이터베이스로 TSQL 코드 마이그레이션
아마도 여러분이나 여러분의 팀에는 ORM을 사용하라는 기본 무언의 규칙이 이미 있을 수도 있습니다. Object Relational Mapping)을 사용하여 모든 SQL을 생성하고 SQL을 애플리케이션에 넣습니다. 그러나 데이터 액세스 성능을 최적화하고 싶거나 애플리케이션 성능 문제를 디버깅해야 하는 경우 SQL 코드를 데이터베이스에 이식하는 것이 좋습니다(저장 프로시저, 뷰 사용). , 함수 및 트리거) 이유는 다음과 같습니다.
1. 저장 프로시저, 뷰, 함수 및 트리거를 사용하여 애플리케이션에서 SQL 코드의 기능을 구현하면 애플리케이션이 줄어드는 데 도움이 됩니다. 프로그램에서 SQL 복제의 단점은 이제 SQL은 한 곳에서만 처리되므로 향후 코드 재사용을 위한 좋은 기반이 마련됩니다.
2. 데이터베이스 개체를 사용하여 모든 TSQL을 구현하면 TSQL 성능 문제를 분석하고 TSQL 코드를 중앙에서 관리하는 데 도움이 됩니다.
3. TS QL을 데이터베이스에 이식한 후 TSQL 코드를 더 잘 재구성하여 데이터베이스의 고급 인덱싱 기능을 활용할 수 있습니다. 또한 SQL 코드가 없어도 애플리케이션이 더 깔끔해집니다.
이 단계는 처음 세 단계만큼 즉각적이지는 않을 수 있지만, 이 단계를 수행하는 주요 목적은 후속 최적화 단계의 기반을 마련하는 것입니다. ORM(예: NHibernate)을 사용하여 애플리케이션에서 데이터 액세스 루틴을 구현하는 경우 테스트 또는 개발 환경에서는 제대로 작동하지만 프로덕션 데이터베이스에서는 문제가 발생할 수 있습니다. ORM을 기반으로 한 데이터 액세스 논리를 반영합니다. 이는 TSQL 개체를 사용하여 데이터 액세스 루틴을 구현하는 좋은 방법입니다. 이렇게 하면 데이터베이스 관점에서 성능을 최적화할 수 있는 더 많은 기회가 제공됩니다.
장담합니다. 마이그레이션을 완료하는 데 1~2인월이 소요된다면 향후 1~2인년보다 더 많은 비용을 절감할 수 있을 것입니다.
프로그래머마다 능력과 습관이 다르기 때문에 그들이 작성하는 TSQL의 스타일도 다를 수 있으며, 일부 코드는 최적으로 구현되지 않을 수도 있습니다. 보통 수준의 프로그래머에게는 먼저 작성을 생각할 수도 있습니다. TSQL 구현 요구 사항 성능 문제에 대해서는 나중에 논의할 것이므로 개발 및 테스트 중에 문제가 발견되지 않을 수 있습니다.
모범 사례를 알고 있지만 코드를 작성할 때 여러 가지 이유로 모범 사례를 채택하지 않는 사람들도 있습니다. 그들은 모범 사례에 대해 다시 생각하기 전에 사용자가 화를 낼 때까지 기다립니다.
아직은 모범 사례가 무엇인지 소개하는 것이 필요하다고 생각합니다.
1. 쿼리에 "select *"를 사용하지 마세요
(1) 불필요한 열을 검색하면 추가 시스템 오버헤드가 발생합니다. "지방에 있는 것은 무엇이든 저장된다"는 말이 있습니다.
(2) 데이터베이스는 "커버링 인덱스"를 활용할 수 없으므로 쿼리가 느립니다.
2. 선택 목록에서 불필요한 열을 피하고 연결 조건에서 불필요한 테이블을 피하세요
위 내용은 데이터베이스 최적화 실습 [TSQL]의 내용입니다. PHP 중국어 홈페이지(www.php.cn)!