안녕하세요 대용량 로그저장용 테이블 수정을하려합니다



현재는 한 테이블에 약 23억 row가 저장되어있고 구조는

CREATE TABLE [dbo].[LOGTABLE](

[idx] [bigint] IDENTITY(1,1) NOT NULL,

[protocol] [smallint] NOT NULL,

[processtick] [int] NOT NULL,

[ItemIDX] [bigint] NOT NULL,

[PlayerIdx] [bigint] NOT NULL,

[Slot] [tinyint] NOT NULL,

[Pos] [tinyint] NOT NULL,

[Type] [int] NOT NULL,

[Count] [smallint] NOT NULL,

[Money] [bigint] NOT NULL,

[OPTION] [tinyint] NOT NULL,

[limited] [tinyint] NOT NULL,

[map] [smallint] NOT NULL,

[x] [int] NOT NULL,

[y] [int] NOT NULL,

[npc] [int] NOT NULL,

[maker] [int] NOT NULL,

[time] [datetime] NOT NULL,

[optOrder] [tinyint] NOT NULL,

[optItemType] [int] NOT NULL,

[optRate] [smallint] NOT NULL,

[ip] [int] NOT NULL,

[mac] [bigint] NOT NULL

) ON [PRIMARY]


인덱스는 idx, time(클러스터) , protocol , ItemIDX , PlayerIdx ,Type, maker에 걸려있습니다


select는 주로  time , PlayerIdx , Type을 조건으로걸고 검색을합니다 



현재는 약 1년어치의 로그가 저장되어있고


이것을 현재시간기점으로 3~4개월어치만 저장되며 해당 기간이 넘어가면 삭제하는 방식으로 수정하려합니다


해당테이블은 INSERT만 하는 A와 SELECT만 하는 B 2가지 프로그램만있는상태이고 INSERT,SELECT 둘다 속도가 나오게하려합니다


INSERT,SELECT,DELETE(3~4개월 유지) 를 하고싶은데 좋은 테이블 설계나 기능들이 있는지 알고싶습니다


가능하면 DELETE는 자동화(SQL Agent 등등)를 하려합니다




로그테이블이 2가지있는데

하나는 현재 작업이안되있고 (작업하려는 테이블)


하나는  매일매일 SQL Agent로 

DECLARE @DATE BIGINT = GETDATE() - 90
DELETE FROM LOGTABLE WHERE TIME < @DATE
방식으로 삭제중인데 해당작업도 오래걸리고(매일 약 1시간반) 인덱스나 파일 파편화?? 등이 생기는거같습니다


혹은 

LOG1910
LOG1911
LOG1912
LOG2001 이렇게 월별로 자동으로 테이블생성하고 해당 월에 해당하는 테이블에만 INSERT하고

SELECT는 VIEW?로 하고서 DELETE를 테이블자체 DROP하는방식도 생각해봤는데 이게 가능한지 잘 모르겠네요

너무 복잡해지고 테이블이 많아지는 문제도있는거같고


뭐 좋은방법이 있을까요