현재 응용 프로그램의 성능/메모리 사용 최적화를 다루고 있습니다. 수행 할 작업 중 하나는 빈 배열에 해당하는 테이블의 모든 BLOB를 null 값으로 바꾸는 것입니다. 이렇게하면 db 크기, 메모리 사용량이 줄어들고로드 속도가 빨라집니다.SQL Server 성능 저하
CREATE TABLE [dbo].[SampleTable](
[id] [bigint] NOT NULL,
[creationTime] [datetime] NULL,
[binaryData] [image] NULL,
[isEvent] [bit] NULL,
[lastSavedTime] [datetime] NULL,
CONSTRAINT [PK_SampleTable] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
테이블을 업데이트하고 적절한 이미지 필드 값 (binaryData)을 NULL 값 (응용 프로그램의 빈 배열에 해당하는 데이터)으로 바꿨습니다. 이제는 사소한 SELECT * FROM SampleTable을 실행할 때 성능 저하를 관찰했습니다.
원래 업데이트 된 필드의 길이는 512 바이트 였지만 문제가 있는지는 확실하지 않았습니다.
NULL 값을 포함하는 BLOB를 선택하는 것이 다른 행에 대해 데이터가 동일하더라도 실제 이진 데이터를 선택하는 것보다 더 오래 걸리는 이유는 무엇입니까?
을 NULL로 업데이트? 당신이 사용한 두 개의 SQL 명령은 무엇입니까? 같은 장소/환경에서 실행 했습니까? SSMS? –
미안합니다. 두 경우 모두 동일한 'Select * from Table'쿼리를 실행하고 있습니다. 두 가지 다른 방법으로 성능을 확인했습니다. 1. 관리 스튜디오 2. db에 연결된 응용 프로그램을 실행하고 쿼리를 실행하고 SQL 프로파일 러에서 결과를 검사합니다. 결과는 두 경우 모두 비슷했습니다. – Daniel
'[dbo]. [image]'유형이 무엇입니까? 그것은 사용자 지정 CLR 데이터 형식입니까? –