안녕하세요, 작은 모바일 인터넷 회사에서 DBA 비스므래한 일을 하고 있는 북설이라고 합니다^^

 

문제가 발생한것은 대략 300만 줄 정도 들어간 접속자정보 테이블 입니다.

 

CREATE TABLE [dbo].[tbl_meminfo](
 [USER_NO] [int] NOT NULL,
 [IMAGE_VER] [char](3) NOT NULL,
 [VOD_INFO] [varchar](10) NOT NULL,
 [LAN_INFO] [varchar](10) NOT NULL,
 [FLASH_INFO] [varchar](10) NOT NULL,
 [SCREEN_WIDTH] [int] NOT NULL,
 [SCREEN_HEIGHT] [int] NOT NULL,
 [MODEL] [varchar](30) NOT NULL,
 [MSG_INFO] [varchar](10) NOT NULL,
 [BROWSER_INFO] [varchar](10) NOT NULL,
 [BROWSER_NAME] [varchar](20) NULL,
 CONSTRAINT [PK_tbl_meminfo] PRIMARY KEY NONCLUSTERED
(
 [USER_NO] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
)

 

새로 사용자가 들어올때마다  아래와 같이 쿼리를 해서 접속정보를 최신으로 유지 시키는 테이블입니다.

 

 IF EXISTS (SELECT top 1 USER_NO FROM tbl_meminfo WHERE USER_NO = [유저번호])
       UPDATE tbl_meminfo SET ~~  WHERE USER_NO = [유저번호];
 ELSE
        INSERT tbl_meminfo ~~;

 

이 정보를 페이지에서 자주 조회해서 적절한 화면을 보여주는데 씁니다...

 SELECT TOP 1 * FROM tbl_meminfo WHERE USER_NO = [유저번호]

 

문제는 사용자가 많아지면서 다음과 같은 에러가 뜬다는 겁니다...

 

'PRIMARY KEY 제약 조건 'PK_tbl_meminfo을(를) 위반했습니다. tbl_meminfo 에 중복키를 삽입할 수 없습니다'

 

원인이 어디 있고, 어떤 방법을 쓰면 해결 할 수 있을지 알수있었으면 좋겠네요... 비슷한 문제를 해결하신 분 있으시면 코멘트 부탁드리겠습니다.