650 숫자 (19,4) 열이있는 테이블을 만들었습니다. 페이지 압축을 켤 때
ALTER TABLE fct.MyTable REBUILD WITH (DATA_COMPRESSION = PAGE);
나는 얻다
메시지 1975, 수준 16, 상태 1
인덱스 'PK_Mytable'행 길이가 최대 허용 길이 인 '8060'바이트를 초과합니다.
그러나 650 곱하기 9 바이트는 5850 바이트에 불과하며, 이는 명시된 제한 8060 바이트와는 거리가 멀습니다.
서버에서 SQL Server 2016 SP1 CU2와 함께 Windows 2012 r2를 실행 중
페이지 압축을 사용할 때 행 오버 헤드는 무엇입니까?
다음은 내가 의미하는 바를 보여주는 코드입니다.
/* test script to demo MSG 1975 */
DECLARE @sql NVARCHAR(max)='', @i INT =0
drop table if exists dbo.mytable;
SET @sql = 'Create table dbo.Mytable (MyTableID bigint not null
identity(1,1) primary key clustered, '
WHILE @i < 593 BEGIN
SET @sql += ' Column' + LTRIM(@i) + ' numeric(19,4) null, '
SET @i +=1
END
SET @sql += ' LastColumn int) '
--SET @sql += ' with (DATA_COMPRESSION = ROW) '
SET @sql += ' with (DATA_COMPRESSION = PAGE) '
SELECT @sql
EXEC sys.sp_executesql @sql
SELECT top 10000 * FROM dbo.MyTable MT
행 압축도 실패하지만 다른 행 수에 있습니다.