RPC Event RPC Message RPC Event SQL Language

  • Slides: 41
Download presentation

RPC Event를 통하지 않은 호출 RPC Message (RPC Event) SQL Language Message (Batch Event)

RPC Event를 통하지 않은 호출 RPC Message (RPC Event) SQL Language Message (Batch Event) SET rs = New ADODB. Recordset. . . rs. Open “EXEC Proc param 1”. . . cmd. Connection = cnn; cmd. Command. Text = “dbo. Proc”; cmd. Command. Type = Stored. Procedure; NO cmd. Parameters. Add(“@member_no” , Sql. Db. Type. Int , 4). Value = param_value; . . . rdr = cmd. Execute. Reader(); NO cmd. Connection = cnn; cmd. Command. Text = “EXEC Proc param 1”; cmd. Command. Type = Command. Type. Text; rdr = cmd. Execute. Reader(); SQL 엔진이 원하는 것은 RPC Event 실행 계획 재사용 능력 및 성능 향상 파라미터 Caching/재사용 능력 제공 SQL Injection을 포함한 보안 강화

파라미터 개체 자동 생성 Parameter 개체 암시적 생성 NO WITH cmd. Active. Connection =

파라미터 개체 자동 생성 Parameter 개체 암시적 생성 NO WITH cmd. Active. Connection = cn. Command. Text = “Proc”. Command. Type = ad. Cmd. Stored. Proc 혹은 이것도 생략 가능. Parameters. Refresh. Parameters(1). Value = 1000. . . 추가 Request, I/O 등 성능 문제 유발 sp_procedure_params_rowset 실행 서버의 라운드 트립 유발 시스템 테이블 접근 유발-sysobjects 등

파라미터 암시적 데이터 형식 지정 Parameter 데이터 형식의 생략 혹은 암시적 지정 NO cmd.

파라미터 암시적 데이터 형식 지정 Parameter 데이터 형식의 생략 혹은 암시적 지정 NO cmd. Connection = cnn; cmd. Command. Type = Command. Type. Text; cmd. Command. Text = “SELECT * FROM dbo. member WHERE firstname = @fname”; cmd. Parameters. Add. With. Value(“@fname”, lst. Fname. Selected. Item); . . . App/DB에서 암시적 형 변환 유발 불필요한 Procedure Cache 소비 SARG 위반할 경우 성능 문제 유발 Parameterized Query에서 특히 주의

SARG 위반 CREATE PROC dbo. up_1 @ID char(2) AS SELECT * FROM dbo. table

SARG 위반 CREATE PROC dbo. up_1 @ID char(2) AS SELECT * FROM dbo. table WHERE char_col LEFT(char_col, 2) = @ID LIKE @ID. . . CREATE PROC dbo. up_3 @ID char(10) @ID varchar(5) AS SELECT * FROM dbo. table WHERE char_col LIKE RTRIM(@ID) @ID <column_name> <inclusive_operator> <value> [AND…] CREATE PROC dbo. up_2 @IDvarchar(5) int @ID AS SELECT * FROM dbo. table WHERE char_col = @ID CREATE PROC dbo. up_4 @ds datetime AS. . . SET @s = @ds + 7 SELECT * FROM dbo. table WHERE date_col BETWEEN @ds AND (@ds+7) @s @ds AND @ds 2

Parameter Sniffing • 문제: (초기/재)컴파일 시 사용된 파라미터로 생성된 실행 계획 이, 재사용 시에는

Parameter Sniffing • 문제: (초기/재)컴파일 시 사용된 파라미터로 생성된 실행 계획 이, 재사용 시에는 잘못된 실행 계획이 되는 경우 @B_Date=‘ 19960710’ @E_Date=‘ 19960930’ FROM dbo. Orders WHERE Order. Date Between @B_Date AND @E_Date @B_Date=‘ 19960710’ @E_Date=‘ 19960711’ 선택도 = 65/830 실행계획 = CL Index Scan 선택도 = 2/830 실행계획 = Index Seek

동적 검색 조건-예제 모든 경우의 수에 따른 성능 확인 필요 @orderid int = NULL

동적 검색 조건-예제 모든 경우의 수에 따른 성능 확인 필요 @orderid int = NULL , @fromdatetime = NULL , @todatetime = NULL , @prodname nvarchar(40) = NULL 개별 구문 별 재사용 처리. . . SELECT @sql = 'SELECT * FROM Northwind. dbo. Orders o JOIN Northwind. dbo. [Order Details] od 동일 구문에 대해서는 여전 ON o. Order. ID = od. Order. ID 히 재사용 문제 내포 JOIN Northwind. dbo. Products p ON p. Product. ID = od. Product. ID WHERE 1 = 1 ' 프로시저와 다른 Scope로 처리 IF @orderid IS NOT NULL Recompile 강제 어려움 SET @sql = @sql + 'AND o. Order. ID = @xorderid ' sp_recompile 테이블 IF @fromdate IS NOT NULL SET @sql = @sql + 'AND o. Order. Date >= @xfromdate ' IF @todate IS NOT NULL SET @sql = @sql + 'AND o. Order. Date <= @xtodate ' IF @prodname IS NOT NULL SET @sql = @sql + 'AND p. Product. Name LIKE @xpname + ''%'' '. . . EXEC sp_executesql @sql, @paramlist, @orderid, @fromdate, @todate, @prodname

추가 자료들 • Microsoft SQL Server Query Processor Internals and Architecture http: //msdn. microsoft.

추가 자료들 • Microsoft SQL Server Query Processor Internals and Architecture http: //msdn. microsoft. com/library/default. asp? url=/library/enus/dnsql 7/html/sqlquerproc. asp • (기술자료) 저장 프로시저 재컴파일 문제 해결 http: //support. microsoft. com/kb/243586/ko • Microsoft SQL Server 성능 튜닝 Technical Reference Whalen, Garcial, Deluca, Thompson | 정보문화사 • Inside Microsoft SQL Server 2000 Kalen Delaney | 정보문화사 • SQL Server 최적화 튜닝 정원혁, iti 교육센타 • Programming a Microsoft SQL Server 2000 Database 2073, MOC 교육 과정

여러분의 Microsoft 기술 능력 평가 Microsoft Skills Assessment 무엇인가? • 현재 제품 및 기술

여러분의 Microsoft 기술 능력 평가 Microsoft Skills Assessment 무엇인가? • 현재 제품 및 기술 솔루션에 대한 능력 평가 • Windows Server 2003, Exchange Server 2003, Windows Storage Server 2003, Visual Studio. NET, Office 2003 • 무료, 온라인, 누구나 사용 가능 • 평가결과를 기초로 Microsoft 교육 프로그램을 제안합니다. • 평가항목과 최고점수 표시 • 방문하세요! www. microsoft. com/assessment

Specialization 인증을 도전하세요. • MCSA/MCSE specializations? – IT 전문가를 위한 메시징, 보안 전문분야의 인증제도

Specialization 인증을 도전하세요. • MCSA/MCSE specializations? – IT 전문가를 위한 메시징, 보안 전문분야의 인증제도 • 현재 인증 가능한 전문? – MCSA: Security – MCSE: Security – – MCSA: Messaging MCSE: Messaging • 자세한 정보는 아래 URL를 참고하세요? www. microsoft. com/mcsa or www. microsoft. com/mcse

어디서 정보를 얻을 수 있나요? • 웹 캐스트 또는 온라인 채팅 www. microsoft. com/technet/community/chats

어디서 정보를 얻을 수 있나요? • 웹 캐스트 또는 온라인 채팅 www. microsoft. com/technet/community/chats www. microsoft. com/technet/community/webcasts • 뉴스그룹 목록 www. microsoft. com/technet/community/newsgroups • Microsoft 커뮤니티 사이트 www. microsoft. com/technet/community • 커뮤니티 이벤트 www. microsoft. com/technet/community/events • 커뮤니티 칼럼 www. microsoft. com/technet/community/columns