복붙노트

[SQL] 현대 RDBMS의에 인라인 진술보다 일반적으로 더 효율적인 저장 프로 시저 있습니까? [복제]

SQL

현대 RDBMS의에 인라인 진술보다 일반적으로 더 효율적인 저장 프로 시저 있습니까? [복제]

전통적인 지혜는 저장 프로 시저가 항상 빠른 것을 말한다. 그들은 항상 빠른 것 때문에 그래서, 그들에게 모든 시간을 사용합니다.

나는 확신이이 경우 한때 약간의 역사적 맥락에 접지하고 있습니다. 지금, 나는 procs 저장이 필요하지 않은 것을 옹호하고 있지 않다,하지만 난 경우 저장 프로 시저는 MySQL은, SQL 서버, 오라클, 또는 현대 데이터베이스의 필요가 무엇인지 알고 싶습니다. 그것은 과잉 저장 프로 시저를 통해 모든 액세스 할 수 있나요?

해결법

  1. ==============================

    1.저장 발동의 역사적 성능 이점은 일반적으로 (특별한 순서없이) 다음에서왔다 :

    저장 발동의 역사적 성능 이점은 일반적으로 (특별한 순서없이) 다음에서왔다 :

    사전 구문 분석 된 SQL - 컴파일 대와 유사한 혜택은 매우 마이크로 수준에서 제외하고, 코드를 해석했다.

    여전히 장점? 매우 현대적인 CPU에 전혀 눈에 띄는,하지만 당신은 매우 큰 eleventy 억 회 두 번째 단일 SQL 문을 전송하는 경우, 구문 분석 오버 헤드를 추가 할 수 없습니다.

    쿼리 실행 계획을 사전은 생성. 당신이 경우 많은 사람들이 순열 (현대 최적화는 성능상의 이유로 한계와 컷 오프가) 매우 관리하기 어려운 성장할 수 합류했다. 대기 시간이 구별이 매우 복잡한 SQL에 대한 알 수없는, 측정 인해 "가장 가까운 알아 내려고 노력 최적화에 (우리가 DBMS를 쥐게 전에 나는 10 + 초 단지 계획을 생성하는 복잡한 쿼리 테이크를 보았다) "실행 계획. 이 오버 헤드를 피할 수 있도록 저장 프로 시저, 일반적으로 메모리에이를 저장합니다.

    여전히 장점? 대부분의 DBMS '(최신 버전)을 크게 procs 저장 및 임시 SQL 사이의 성능 차이를 줄여 개별 SQL 문에 대한 쿼리 계획을 캐시합니다. 당신이 당신의 목표 DBMS에 테스트를해야합니다 있도록이는 경우가 아니라있는 몇 가지주의와 경우가 있습니다.

    또한, 점점 더 많은 DBMS는 상당히 최적화 시간을 줄이기 위해 최적화 경로 계획 (추상적 인 쿼리 계획)을 제공 할 수 있도록 (모두 임시 저장 프로 시저 SQL 위해를!).

    감소 된 네트워크 대기 시간 A) 당신이 반복해서 같은 SQL을 실행하는 경우 - 그리고 SQL 코드의 많은 KB까지 추가 - 간단한 "간부는 foobar"와 정말 개까지 추가 할 수 있음을 교체. B) 저장 프록는 DBMS로 절차 코드를 이동하는데 사용될 수있다. 이 단지는 정보 뒷면의 물방울 보내도록하기 위해 클라이언트에 떨어져 많은 양의 데이터를 셔플 저장 (전혀 또는 없음을!). 을 수행과 유사은 코드에서 DBMS 대에 가입하기 (모두가 좋아하는 WTF!)

    여전히 장점? A) 현대의 1Gb (및 10 기가비트 최대!) 이더넷은 정말 무시할합니다. 데이터를 밀쳐 메가 바이트 앞뒤로 더 좋은 이유에 대한 이유 - B)는 얼마나 포화 네트워크에 따라 다릅니다?

    잠재적 인 캐시 혜택 당신은 DBMS와 서버의 메모리에 필요한 데이터에 충분한 메모리가있는 경우 더 빨리 잠재적으로 될 수있는 데이터의 서버 측 변환을 수행.

    여전히 장점? 앱이 DBMS 데이터에 메모리 액세스를 공유하지 않는 한, 가장자리는 항상 저장 발동하는 것입니다.

    물론, 저장 프로 시저의 최적화 더 논의는 파라미터 및 임시 SQL에 대한 논의없이 완전하지 않을 것이다.

    파라미터 / 준비된 SQL 호스트 언어의 종류 저장 프로 시저 및 임시 SQL 사이의 십자가의, 그들은 임베디드 SQL 문이 사용하는 쿼리 값, 예컨대에 대한 "매개 변수":

    SELECT .. FROM yourtable WHERE foo = ? AND bar = ?
    

    이 저장 프로 시저의 성능 이점의 대부분의 결과로, 현대의 최적화 캐시 (재 사용)에 사용할 수있는 쿼리 쿼리 실행 계획을보다 일반화 된 버전을 제공합니다.

    임시 SQL 그냥 DBMS에 콘솔 창을 열고 SQL 문에 입력합니다. 과거에는 이러한는 DBMS가 매개 변수화 / 저장된 프로 시저의 방법으로 쿼리를 사전이-최적화 방법이 없었다 (평균)은 "최악의"공연 때문에이었다.

    아직 단점? 꼭 그렇지는 않습니다. 대부분의 DBMS는 매개 변수화 된 버전으로 "추상적"임시 SQL의 기능이 - 따라서 다소 둘 사이의 차이를 부정. 일부는 암시 적으로이 작업을 수행하거나 명령 설정 (SQL 서버를 활성화해야합니다 : http://msdn.microsoft.com/en-us/library/ms175037.aspx 오라클 : http://www.praetoriate.com/oracle_tips_cursor_sharing. HTM).

    교훈? 무어의 법칙은, 모든 릴리스 및 DBMS 옵티 마이저에 행진보다 정교한 얻을하고 있습니다. 물론, 당신은 저장된 프로 시저 내부의 모든 단일 바보 조그마한의 SQL 문을 배치하지만, 단지 최적화 작업을 프로그래머가 매우 똑똑하고 지속적으로 성능을 향상시킬 수있는 방법을 찾고있는 것을 알 수 있습니다. (이미 여기되지 않습니다 경우) 결국 임시 SQL 성능이 **, 저장 프로 시저의 성능에서 (! 평균)과 구별 될 대규모 저장 프로 시저를 사용하는 모든 종류의 너무합니다 전적으로 "성능상의 이유로"에 대한 ** 조기 최적화 등의 확인 소리 나 .

    당신이 가장자리 사례를 방지하고 공정하게 바닐라 SQL이있는 경우 어쨌든, 내 생각, 당신은 임시 저장 프로 시저 사이의 차이를 통지하지 않습니다.

  2. ==============================

    2.저장 프로 시저를 사용하는 이유 :

    저장 프로 시저를 사용하는 이유 :

  3. ==============================

    3.그들은 더 genaralized이기 때문에 대부분의 경우, 저장 프로 시저 실제로 느립니다. 저장 프로 시저가 높은 튜닝 할 수 있지만 그들이 그렇게 저장 프로 시저는 종종 "다만 경우에"열을 많이 반환하는 경향이 작동하면, 내 경험에 그들이 자리에 남아있어 충분히 개발 및 제도적 마찰이 - 당신이하지 않기 때문에 새로운 저장 프로 시저 당신이 응용 프로그램을 변경할 때마다 배포 할. 는 OR / M, 다른 한편으로는, 단지 불필요한 조인 컷 네트워크 트래픽 아래, 응용 프로그램을 사용하여 열, 등을 요청

    그들은 더 genaralized이기 때문에 대부분의 경우, 저장 프로 시저 실제로 느립니다. 저장 프로 시저가 높은 튜닝 할 수 있지만 그들이 그렇게 저장 프로 시저는 종종 "다만 경우에"열을 많이 반환하는 경향이 작동하면, 내 경험에 그들이 자리에 남아있어 충분히 개발 및 제도적 마찰이 - 당신이하지 않기 때문에 새로운 저장 프로 시저 당신이 응용 프로그램을 변경할 때마다 배포 할. 는 OR / M, 다른 한편으로는, 단지 불필요한 조인 컷 네트워크 트래픽 아래, 응용 프로그램을 사용하여 열, 등을 요청

  4. ==============================

    4.그것은 논쟁의이 계속적으로 격노 (예를 들어, 여기).

    그것은 논쟁의이 계속적으로 격노 (예를 들어, 여기).

    이 앱에 잘못된 데이터 액세스 로직을 작성하는 것입니다 그것은 나쁜 저장 프로 시저를 쉽게 작성할 수로입니다.

    내 환경 설정 저장 프로세서 수에 대한,하지만의 것을 나는 일반적으로 달콤하게 실행하는 데이터베이스 서버를 유지하는 책임이 있습니다 전용의 DBA가 기업 환경에서 매우 크고 복잡한 애플 리케이션과 함께 일하고 있기 때문이다.

    다른 상황에서, 나는 최적화 돌볼 같은 LINQ와 같은 데이터 액세스 기술에 대한 행복 충분 해요.

    순수 성능은하지만, 유일한 고려 사항이 아니다. 보안 및 구성 관리 등의 측면은 적어도 중요 일반적이다.

    편집 : 프랑스어 보우마의 기사는 참으로 장황하지만, 그것은 마일에 의해 보안과 관련하여 포인트를 벗어났습니다. 이 중, 관련성 도움이되지 않는 5 세의 사실.

  5. ==============================

    5.가장 현대적인 데이터베이스에서 매개 변수 또는 준비된 쿼리 대 저장 프로 시저에 대한 눈에 띄는 속도 차이는 없습니다 그 쿼리에 대한 데이터베이스 것 또한 캐시 실행 계획 때문이다.

    가장 현대적인 데이터베이스에서 매개 변수 또는 준비된 쿼리 대 저장 프로 시저에 대한 눈에 띄는 속도 차이는 없습니다 그 쿼리에 대한 데이터베이스 것 또한 캐시 실행 계획 때문이다.

    매개 변수가있는 쿼리가 임시 SQL와 동일하지 않습니다.

    오늘날 저장 프로 시저를 선호 IMO에 가장 큰 이유는 보안 기능과 더 많은 관계를 가지고있다. 당신이 독점적으로 저장 프로 시저를 사용하는 경우, 당신은 단지 EXECUTE로 떠나, INSERT, SELECT, UPDATE, DELETE, ALTER, DROP을 해제하고 응용 프로그램의 사용자 등의 권한을 만들 수 있습니다.

    이는 2 차 SQL 인젝션에 대한 약간의 추가 보호 기능을 제공합니다. 매개 변수화 된 쿼리는 1 차 주입을 방지.

  6. ==============================

    6.아무도 아직 저장 프로 시저의 혜택으로 언급되지 것을 한 주제는 보안입니다. 당신이 저장 프로 시저를 통해 데이터 액세스와 전용 응용 프로그램을 빌드하는 경우에만 액세스하는 저장 프로 시저를 통해하므로, 데이터베이스를 잠 그려면 수 있습니다. 그 때문에는, 누군가가 데이터베이스 ID와 암호를 얻을 경우에도, 그들은 그들이 참조하거나 해당 데이터베이스에 대해 무엇을 할 수 있는지에 제한됩니다.

    아무도 아직 저장 프로 시저의 혜택으로 언급되지 것을 한 주제는 보안입니다. 당신이 저장 프로 시저를 통해 데이터 액세스와 전용 응용 프로그램을 빌드하는 경우에만 액세스하는 저장 프로 시저를 통해하므로, 데이터베이스를 잠 그려면 수 있습니다. 그 때문에는, 누군가가 데이터베이스 ID와 암호를 얻을 경우에도, 그들은 그들이 참조하거나 해당 데이터베이스에 대해 무엇을 할 수 있는지에 제한됩니다.

  7. ==============================

    7.물론, 실제 성능은 개별 사례에서 측정되어야한다,하지 가정. 그러나도 성능이 저장 프로 시저에 의해 방해되는 경우에, 그 (것)들을 사용하는 좋은 이유가있다 :

    물론, 실제 성능은 개별 사례에서 측정되어야한다,하지 가정. 그러나도 성능이 저장 프로 시저에 의해 방해되는 경우에, 그 (것)들을 사용하는 좋은 이유가있다 :

    그것은 내가 나 자신을 제어 할 수 있도록 난 보통 내 응용 프로그램에서 원시 SQL을 고수했다. 그것은 당신의 개발 팀과 철학에 따라 달라집니다.

  8. ==============================

    8.2007 년 우리는 ORM을 통해 MS SQL 서버를 사용하는 프로젝트에 있었다. 우리는 SQL 서버의로드 시간이 7-8 초까지했다이 큰 성장 테이블을했다. 2 개의 대형 저장 SQL 프로 시저를 만들고, 쿼리 플래너에서 그들을 최적화 후, 각 DB 로딩 시간이 저장 SQL 프로 시저를 사용하는 효율 이유가 거기에 여전히 너무 명확 미만 20 밀리 초까지 얻었다.

    2007 년 우리는 ORM을 통해 MS SQL 서버를 사용하는 프로젝트에 있었다. 우리는 SQL 서버의로드 시간이 7-8 초까지했다이 큰 성장 테이블을했다. 2 개의 대형 저장 SQL 프로 시저를 만들고, 쿼리 플래너에서 그들을 최적화 후, 각 DB 로딩 시간이 저장 SQL 프로 시저를 사용하는 효율 이유가 거기에 여전히 너무 명확 미만 20 밀리 초까지 얻었다.

    그런 말을하는 데, 우리는 저장 프로 시저의 가장 중요한 장점은 추가 maintaince 편의성, 보안, 데이터 무결성, 그리고 2 개 개의 절차의 재사용에서 모든 미들웨어 논리를 혜택을, 미들웨어 로직에서 비즈니스 로직을 분리하는 것을 발견 .

    우리의 ORM 공급 업체 떨어져 발사 많은 작은 SQL 쿼리가 큰, 결합 데이터 세트를 가져 오는 것보다 더 효율적이 될 것되었다는 일반적인 주장을했다. (놀랍게도) 우리의 경험은 다른 뭔가를 보여 주었다.

    물론이 5 월은 그래서 어떤 이익을 측정, 컴퓨터, 네트워크, 운영 체제, SQL 서버, 애플리케이션 프레임 워크, ORM 프레임 워크 및 언어 구현에 따라서 다릅니다, 당신은 당신이 뭔가 다른 일을에서 얻을 수있다 생각합니다.

    우리는 우리가 문제가 ORM 모든 부하를 복용 데이터베이스 사이에 있었다 발견 한 벤치마킹 때까지 아니었다.

  9. ==============================

    9.나는 그것들을 사용하는 의미가 때 SP가있어 사용하는 것을 선호합니다. SQL 서버에서 어쨌든 매개 변수화 쿼리를 통해 SP의에는 성능 이점이 없습니다.

    나는 그것들을 사용하는 의미가 때 SP가있어 사용하는 것을 선호합니다. SQL 서버에서 어쨌든 매개 변수화 쿼리를 통해 SP의에는 성능 이점이 없습니다.

    하지만, 내 현재의 직장에서 상사 우리가 우리의 고객의 그들을 필요로하기 때문에 SP의를 사용하도록 강요 언급했다. 그들은 더 안전 느낀다. 나는 우리가 역할 기반 보안을 구현하고 있는지 충분히 여기되지 않았습니다 그러나 나는 우리가 느낌이있다.

    이 경우 다른 모든 인수는 고객의 감정 트럼프 그래서.

  10. ==============================

    10.나에게 저장 프로 시저 중 하나 장점은 호스트 언어 무신론자가 될 것입니다 : 당신은 당신의 코드를 재 작성하지 않고 C, 파이썬, PHP 또는 다른 프로그래밍 언어에 어떤 응용 프로그램에서 전환 할 수 있습니다. 또한, 대량 작업과 같은 일부 기능은 정말 성능을 향상시키고 호스트 언어 (모든시?) 쉽게 사용할 수 없습니다.

    나에게 저장 프로 시저 중 하나 장점은 호스트 언어 무신론자가 될 것입니다 : 당신은 당신의 코드를 재 작성하지 않고 C, 파이썬, PHP 또는 다른 프로그래밍 언어에 어떤 응용 프로그램에서 전환 할 수 있습니다. 또한, 대량 작업과 같은 일부 기능은 정말 성능을 향상시키고 호스트 언어 (모든시?) 쉽게 사용할 수 없습니다.

  11. ==============================

    11.그에 읽기 프란스 보우마의 (조금 바이어스 경우) 우수 게시 할 수 있습니다.

    그에 읽기 프란스 보우마의 (조금 바이어스 경우) 우수 게시 할 수 있습니다.

  12. ==============================

    12.내가 말할 수있는 것은 SQL 서버입니다. 해당 플랫폼에서 저장 프로 시저는 사랑스러운 서버 저장하기 때문에 대부분의 경우 성능에게 좋은 비트 속도 실행 계획. SP가 널리 실행 경로를 변경 한 경우 최적의 성능을 얻을 수 있기 때문에 나는, "대부분의 경우"말한다. 그러나, 이러한 경우에, SP의 일부 계몽 리팩토링은 일을 속도를 높일 수 있습니다.

    내가 말할 수있는 것은 SQL 서버입니다. 해당 플랫폼에서 저장 프로 시저는 사랑스러운 서버 저장하기 때문에 대부분의 경우 성능에게 좋은 비트 속도 실행 계획. SP가 널리 실행 경로를 변경 한 경우 최적의 성능을 얻을 수 있기 때문에 나는, "대부분의 경우"말한다. 그러나, 이러한 경우에, SP의 일부 계몽 리팩토링은 일을 속도를 높일 수 있습니다.

  13. ==============================

    13.CRUD 작업을위한 저장 프로 시저를 사용하는 것은 과잉 아마이지만, 사용 도구와 자신의 환경 설정 (또는 요구 사항)에 따라 달라집니다. 나는 인라인 SQL을 선호하지만, 나는 확실히 SQL 주입 공격을 방지하기 위해 매개 변수화 된 쿼리를 사용 할 수 있습니다. 나는 만화 당신이 조심하지 않으면 잘못 갈 수있는 상기시켜이 XKCD에서 인쇄를 유지한다.

    CRUD 작업을위한 저장 프로 시저를 사용하는 것은 과잉 아마이지만, 사용 도구와 자신의 환경 설정 (또는 요구 사항)에 따라 달라집니다. 나는 인라인 SQL을 선호하지만, 나는 확실히 SQL 주입 공격을 방지하기 위해 매개 변수화 된 쿼리를 사용 할 수 있습니다. 나는 만화 당신이 조심하지 않으면 잘못 갈 수있는 상기시켜이 XKCD에서 인쇄를 유지한다.

    저장 프로 시저는 하나의 데이터 집합을 반환하는 여러 데이터 세트로 작업하는 실제 성능상의 이점을 가질 수 있습니다. 그것은 클라이언트 측에서 처리 할 수있는 와이어를 통해 그들을 보내는 대신 저장 프로 시저의 데이터 세트를 처리하는 것이 더 효율적입니다.

  14. ==============================

    14.이되어 실현 조금 주제에서 벗어난 질문에, 당신은 저장 프로 시저를 많이 사용하는 경우 그러나, 확실 소스 제어 일종의 아래에 넣어하는 일관된 방법이 확인 (예를 들어, 파괴 또는 자식)와 수있을 생산 시스템으로 테스트 시스템을 개발 시스템에서 마이그레이션 업데이트됩니다.

    이되어 실현 조금 주제에서 벗어난 질문에, 당신은 저장 프로 시저를 많이 사용하는 경우 그러나, 확실 소스 제어 일종의 아래에 넣어하는 일관된 방법이 확인 (예를 들어, 파괴 또는 자식)와 수있을 생산 시스템으로 테스트 시스템을 개발 시스템에서 마이그레이션 업데이트됩니다.

    이가 할 수있는 방법으로, 손으로 완료되면 쉽게 빨리 악몽이 될 경우, 코드가 무엇인지 감사.

  15. ==============================

    15.나는 그들이 더 빠른 것을 알고하지 않습니다. (바퀴를-발명을 다시하지 않도록) 데이터 액세스에 대한 ORM을 사용하여 같은 I 그러나 나는 항상 실행 가능한 옵션이 아니다 알고 있습니다.

    나는 그들이 더 빠른 것을 알고하지 않습니다. (바퀴를-발명을 다시하지 않도록) 데이터 액세스에 대한 ORM을 사용하여 같은 I 그러나 나는 항상 실행 가능한 옵션이 아니다 알고 있습니다.

    프란스 보우마는이 주제에 대한 좋은 기사가 있습니다 http://weblogs.asp.net/fbouma/archive/2003/11/18/38178.aspx

  16. ==============================

    16.저장 발동 데이터베이스 저장은 메모리에 토큰 화 때문에 SQL 코드가 자주 실행되는 경우를 위해 중대하다. 반복적으로 저장된 프로 시저의 동일한 코드 외부를 실행 한 경우, 당신은 같은 코드를 파싱 데이터베이스에서 성능 저하를 발생 likey 것입니다.

    저장 발동 데이터베이스 저장은 메모리에 토큰 화 때문에 SQL 코드가 자주 실행되는 경우를 위해 중대하다. 반복적으로 저장된 프로 시저의 동일한 코드 외부를 실행 한 경우, 당신은 같은 코드를 파싱 데이터베이스에서 성능 저하를 발생 likey 것입니다.

    나는 일반적으로 자주 저장된 프로 시저로 또는 SqlCommand를 (.NET) 객체로 코드라고하며 필요한만큼 여러 번 실행합니다.

  17. ==============================

    17.네, 시간이 빨리 대부분이다. SQL 구성도 엄청난 성능 튜닝 영역입니다. 나는 백 오피스 형 응용 프로그램을하고있는 중이하면 내가 그들을 건너 뛸 수 있지만 모든 이유 다른 사람을 위해 확실히 사용할 직면 아무것도 생산은 ... 너무 즉 보안을 말했다.

    네, 시간이 빨리 대부분이다. SQL 구성도 엄청난 성능 튜닝 영역입니다. 나는 백 오피스 형 응용 프로그램을하고있는 중이하면 내가 그들을 건너 뛸 수 있지만 모든 이유 다른 사람을 위해 확실히 사용할 직면 아무것도 생산은 ... 너무 즉 보안을 말했다.

  18. ==============================

    18.이럴 ...

    이럴 ...

    저장 프로 시저 "C_UD"작업을 제한하면 한 곳에서 데이터 무결성 논리를 유지할 수 있습니다. 이것은 또한 하나의 미들웨어 층에 "C_UD"작업을 제한하여 수행 할 수 있습니다.

    그들이 필요한 경우에만 테이블 / 컬럼에 가입 할 수 있도록 읽기 작업은 응용 프로그램에 제공 할 수있다.

  19. ==============================

    19.저장 프로 시저 대신 매개 변수화 된 쿼리의 사용 (또는 임시 쿼리) 다른 장점이 너무 될 수있다 :

    저장 프로 시저 대신 매개 변수화 된 쿼리의 사용 (또는 임시 쿼리) 다른 장점이 너무 될 수있다 :

  20. ==============================

    20.네트워크 트래픽 감소 - SP 후 일반적으로 더 동적 SQL이다. 당신은 단지 하나의 열이 사용에게 그들이 필요하고 나머지는 무시 열을 가지고있는 SP를 듣는다 필요하다면 사람들은 모든 선택에 대한 새로운 SP를 생성하지 않기 때문에. 여분의 열 및 그냥 가버했다 덜 네트워크 사용량을 가져옵니다. 또한 당신은 SP를 사용하는 경우 클라이언트 필터링을 많이 가지고하는 경향이있다.

    네트워크 트래픽 감소 - SP 후 일반적으로 더 동적 SQL이다. 당신은 단지 하나의 열이 사용에게 그들이 필요하고 나머지는 무시 열을 가지고있는 SP를 듣는다 필요하다면 사람들은 모든 선택에 대한 새로운 SP를 생성하지 않기 때문에. 여분의 열 및 그냥 가버했다 덜 네트워크 사용량을 가져옵니다. 또한 당신은 SP를 사용하는 경우 클라이언트 필터링을 많이 가지고하는 경향이있다.

    캐싱 - MS-SQL이 아닌 MS-SQL 2000 년 이후, 어떤 다르게 취급하지 않습니다 월 7되어 있지만 내가 기억하지 않습니다.

    권한 - 문제 없어 내가 할 거의 모든 웹 또는 이후 모든 데이터베이스 액세스를 수행 일부 중간 응용 프로그램 계층이있다. 데이터베이스 액세스에 직접 클라이언트가 그와 함께 유일한 소프트웨어 I 작업은 사용자가 직접 액세스 할 수 있도록 설계되어 사용자 권한 부여를 기반으로하는 타사 제품입니다. 그리고 네의 MS-SQL 권한 보안 모델은 형편 없어! 웹 및 중간 응용 프로그램 서버 프로그래밍 대 얼마나 많은 사람들이 여전히 일을 직접 클라이언트 / 서버 프로그래밍의 설문 조사를보고 싶습니다 이에 대한 최종 일환으로 (아직 2008 시간을 보낸 적이없는) 그들은 왜 ORM 대형 프로젝트를 수행되지 않은 경우.

    분리 - 당신이 중간 계층의 비즈니스 로직 외부를 가하고 있습니다 왜 사람들이 의문을 제기한다. 당신은 별도의 데이터 처리 코드를 찾고 또한 경우에 그 일을하는 방법이있다 데이터베이스에 넣어없이.

    편집 할 수있는 능력 - 당신은 당신에 대해 걱정할 필요가 전혀 테스트 및 버전 제어 할 수 없습니다 무엇입니까? 웹 세계에서 클라이언트 / 서버 또한 단지 문제가 아니라 문제.

    테이블 찾기 - 당신이 그것을 사용하는 SP를 식별 할 수있는 경우에만, 찾을 수있는 버전 관리 시스템, 에이전트 더듬다 또는 Visual Studio의 도구를 고수 할 것이다.

    최적화 - 당신의 DBA가 필요 최적화하는 쿼리를 찾기 위해 데이터베이스의 도구를 사용해야합니다. 데이터베이스는 문이 가장 많은 시간과 자원을 이야기하고 무엇 DBA를 알 수 있습니다 그리고 그들은 거기에서 해결할 수 있습니다. 간단한 선택은 그것에 대해 걱정하지 않는 경우 복잡한 SQL 문에 대한 프로그래머는 DBA에게 이야기를 얘기해야했다.

    SQL 주입 공격 - SP의 서비스 더 나은 보호. 그들은 고개를 끄덕 얻을 수있는 유일한 방법은 그들의 대부분은 대부분의 예제 매개 변수를 무시 동적 SQL 대 매개 변수를 사용하여 가르 칠 것입니다.

  21. from https://stackoverflow.com/questions/59880/are-stored-procedures-more-efficient-in-general-than-inline-statements-on-mode by cc-by-sa and MIT license