database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 1784 게시물 읽기
No. 1784
메모리 DB에 대한 문의 - 꼭 답변 주세요...
작성자
복팅이
작성일
2005-02-18 10:58
조회수
4,640

메모리 DB에 대해 찾아보고 있는데요.

이 비슷한 기능을 MS-SQL에서 구현할 수 있는지요.

누군가 쿼리에 어떤 걸 붙이면 메모리에서 처리할 수 있다고 하는데요.

 

table변수나 #을 붙이는 임시테이블 말고,

메모리에서 동작하는 테이블이 생성될 수 있는지도 궁금합니다.

제 상식으로는... 메모리 DB가 아니라면, 불가능할 것 같습니다만...

 

제가 메모리DB에 대해 잘 모르기 때문에, 더 자세하게 질문을 못 드림을 용서해주세요.

 

꼭 답변주세요... 꼭요...

이 글에 대한 댓글이 총 4건 있습니다.

우선 짧은 저의 실력으로 답을 드리면

oracle에서는 메모리Table이 있는데 반해

mssql에서는 메모리DB, 메모리Table이 없습니다.

 

그래서 그와 유사한 개념인 #, ##을 이용하여 sessionTable을 만들어 사용하거나

사용자 정의 함수를 이용하여 Table을 생성하는 걸로 알고 있습니다.

 

꼭 메모리DB를 사용해야 하는 것이라면 어쩔수 없이 포기하셔야 할 듯한데요.

해결하고자 하는 부분에 대한 것을 자세하게 설명하시면

또 다른 해결책이 나올지도 모르겠네요.

여리님이 2005-02-18 12:41에 작성한 댓글입니다. Edit

update가 자주 일어나는 테이블이 있는데.

저의 '갑'이 메모리 DB에 대해 어디서 들으셨나봐요.

그래서, 메모리에 올려두면 훨씬 performance가 낫지 않겠냐고요.

 

그런데. 그러기 위해서는 우선

해당 table이 메모리에 create 되어야 하잖아요.

짧은 저의 소견으로는. MS-SQL이 메모리DBMS가 아니기 때문에.

그건 불가능 할 것 같구요.

 

임시테이블이나, table 데이터 타입으로 생성하면.

모든 사용자가 같은 정보를 갖게되지 못하잖아요...

 

만약에... 이게 해결이 안된다면.

결국, 어플리케이션에서... static으로 메모리에 올려야 되나...

생각도 했었는데...

join같은 오퍼레이션 시 문제가 되겠더라구요.

 

그래서. 혹시... 메모리를 사용할 수 있는 방법이 있는지 해서요.

제가 너무 실력이 짧은 관계로...

고수님들께 여쭤보려구요 ^^

 

 

복팅이님이 2005-02-18 13:29에 작성한 댓글입니다. Edit

MS-SQL에 'DBCC PINTABLE'이라는 DBCC 문이 있습니다.
이 명령을 사용하시면, MS-SQL에서 원하시는 것을 비슷하게 처리 하실 수 있을 것 같네요.


일반적으로 Transact-SQL 문장 실행 시, 필요에 따라 테이블 내용을 디스크에서  메모리로 읽어들이고
처리 후 메모리에서 사라지는 것에 비하여,'DBCC PINTABLE' 문에 의해 테이블이 내용이 메모리
(정확히는 버퍼 캐시)에 올라가 버퍼 캐시에 고정 부분을 차지하게 되고, 특정한 명령(DBCC UNPINTABLE)이
있기 까지 그 공간을 계속해서 차지하게 됩니다.(새로운 페이지 필요시 늘어나기도 합니다.)
더블어 이후에 발생한 테이블(DBCC PINTABLE문에 의해 버퍼 캐시에 올라간 테이블) 관련 작업들은
메모리 상에서 이루어집니다.(저는 SELECT만 사용해 보았는데, BOL상에는 페이지 내용 업데이트도
가능하다고 합니다.)

그런데, 이 명령을 사용할 때 주의하실 것이 있는데,
첫째 서비스가 시작할 때 마다 'DBCC PINTABLE' 명령으로 버퍼 캐시에 관련 테이블의 고정 공간을 확보해
     주셔야 합니다.

둘째 커다란 테이블을  'DBCC PINTABLE' 했거나,  'DBCC PINTABLE'한 테이블의 페이지 내용의 대량
      업데이트에 의한 많은 버퍼 캐시를 사용하게 되어, 다른 테이블들이 사용할 캐시들이 부족할 경우
      MS-SQL이 자동으로  'DBCC PINTABLE'에 의한 고정 부분을 해지 또는 swap해 주지 않습니다.
      (MS-SQL이 메모리 DB가 아니기 때문에 당연한 결과라고 볼수 도 있겠죠...)
      즉 먹통 DB서버가 되어 버립니다. 이 문제를 해결하기 위해서는 수동으로
      관리자가 MS-SQL 서버를 재시작해 주셔야 합니다.
     

제가 아는대로 적어 보았는데, 도움이 되었으면 좋겠군요.

그럼 수고하세요.


관련 DBCC 명령들
   DBCC MEMUSAGE
   DBCC PINTABLE
   DBCC UNPINTABLE
   DBCC DROPCLEANBUFFERS
   DBCC FREEPROCCACHE

가을남자님이 2005-02-19 02:03에 작성한 댓글입니다. Edit

감사합니다!!!!

진짜 감사합니다!!!!

복팅이님이 2005-02-21 11:13에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1787stored procedure에서 쿼리의 값을 저장하고 싶은데요.. [3]
화사한봄날
2005-02-21
4499
1786... [2]
매커
2005-02-21
2764
1785[질문]stored procedure들 정보 가져오기 [1]
솔이아빠
2005-02-18
4583
1784메모리 DB에 대한 문의 - 꼭 답변 주세요... [4]
복팅이
2005-02-18
4640
1783[질문]sql analyzer에서 자동 접속 [3]
솔이아빠
2005-02-17
2830
1782[쿼리 질문] 최고 점수의 과목 찾기 [2]
소병민
2005-02-17
7112
1781group by count [1]
초보자
2005-02-17
3812
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다