매번 DB 사랑 사이트에 좋은 지식 얻고 가네요...
아래는 예시의 쿼리입니다.
BEGIN TRAN
SELECT * FROM TBL WITH(NOLOCK)
COMMIT TRAN
이런식으로 쿼리를 한다면 단점이 어떤게 있을까요?
사실 제가 보기에는 불필요한 트랜잭션으로 트랜잭션 로그가 쌓이고... 만약 부하가 심할 때는 장애로 유발할 것 같은데. 디테일한 문제점을 알고 싶습니다.
트랜잭션 로그를 확인하는 쿼리에서는 위의 예시 쿼리는 로그가 안남네요? 혹시 방법이 잘못되었나요?
SELECT
[Current LSN],
[Transaction ID],
[Operation],
[Transaction Name],
[CONTEXT],
[AllocUnitName],
[Page ID],
[Slot ID],
[Begin Time],
[End Time],
[Number of Locks],
[Lock Information]
FROM sys.fn_dblog(NULL,NULL)
WHERE Operation IN
('LOP_INSERT_ROWS','LOP_MODIFY_ROW',
'LOP_DELETE_ROWS','LOP_BEGIN_XACT','LOP_COMMIT_XACT')
아 그리고 Azure(MS 클라우드)에서는 DB의 트랜잭션 카운트에 따라 요금제가 달라지던데 ex) MAX Transaction size 100 이런걸로 유추해보면 DB 제품군 마다 최대 트랜잭션 사이즈가 있을 거 같은데 맞나요?
항상 감사합니다~
|