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 6409 게시물 읽기
No. 6409
VIEW Table Select시 Base Table을 조회하나요?
작성자
김영환(passion012)
작성일
2012-09-05 13:16
조회수
8,260

 당연한 말이겠죠?

만약 TEST라는 테이블이 있습니다.

 

create view [dbo].[uv_TEST]

as

select * from TEST

go

 

이렇게 해서 뷰테이블을 생성했습니다.

 

 

select * from TEST

go

select * from uv_TEST

 

 

이렇게 조회를 하게 되면 결과는 똑같게 나옵니다.

 

여기서 궁금한게 생겨요. 이 TEST테이블의 특정컬럼을 주기적으로 update가 자주 일어날 것을 염두해서 이와동일한 뷰테이블을 만들어

특정 app에서는 뷰테이블에서 select만을 하게 하고 update하는 특정app는 Base Table을 이용하게 했는데...

옆에분 얘기를 들어보니 뷰테이블을 조회하는건 원본테이블을 조회하는 것이기 때문에 의미없는 행위라고 해서

이게 과연 맞는 것인지 궁금해서 질문을 드려봅니다.

 

SQL Server Profiler를 이용해서 보면 위 두군문의 select가 각각 이루어지는것을 확인하였는데 정말 한 테이블을 핸들링하는거랑 차이가 없는걸까요?

정말 궁금합니다. 전 그동안 위 처럼 뷰테이블 사용하면 DB Lock이 안걸리는 줄로만 알았거든요.

어쩌면 참 기본적인거인데 저에겐 오늘 특별히 중요한 문제로 다가오네요.

 

 

 

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

 뷰를 사용하여 select를 해도 주어진 isolation level에 따른 lock은 발생합니다.

lock을 피해서 dirty read(커밋되지 않은 읽기)를 수행하기 위해서는 read uncommitted 로 설정하시면 되겠습니다.

 

참고로 뷰를 사용하는 목적의 예는 

-. 각 사용자가 데이터베이스를 보는 시각에 초점을 맞추고 데이터 조작을 간소화하며 사용자 지정할 수 있습니다.

-. 뷰는 원본이 되는 기본 테이블에 직접 액세스할 수 있는 권한을 부여하지 않고 뷰를 통해 데이터에 액세스하도록 하기 때문에 보안 메커니즘으로 사용할 수 있습니다.

-. 이전 버전과 호환되는 인터페이스를 통해 스키마가 변경된 기존 테이블을 에뮬레이트할 수 있습니다.

라고 http://technet.microsoft.com/ko-kr/library/ms187956.aspx를 참조해 보시면 되시겠습니다.

 

 

우욱님이 2012-09-05 13:34에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6412정렬에 관한 질문입니다. [4]
박원준
2012-09-13
7619
6411msql 쿼리 도움 요청합니다. [1]
궁금이
2012-09-11
7433
6410셀렉트 쿼리 하나 질문이요~ [4]
유상혁
2012-09-06
7493
6409VIEW Table Select시 Base Table을 조회하나요? [1]
김영환
2012-09-05
8260
6408외부 라이브러리(dll) 활용 [4]
노진광
2012-09-04
9644
6406자동증가 설정 [1]
초보
2012-08-21
7371
6405SQL Server 2005에 이후버전의 Management Studio를 붙이면 [1]
박선웅
2012-08-17
6903
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다