MSSQL - LOCK

(DB) MS SQL/LOCK 2017. 4. 12. 14:54

[ MSSQL - LOCK ]

 

/*  MS SQL의 LOCK 개념 *
1. MS SQL 은 기본적으로 레코드 락임
2. MS SQL Server는 SELECT시 LOCK을 걸지 않음
   (내부적으로는 SELECT LOCK이라는게 걸리지만, 이 LOCK은 INSERT, UPDATE LOCK하고는 다름)
*/

 

/* SELECT 종류 */
/*1. 단순 SELECT */
--Insert, Update중에 아래 SELECT문장을 수행 할 경우
--  > 조회결과에 Insert, Update중인 자료가 존재 하면  대기함.
--  > 조회결과에 Insert, Update중인 자료가 존재 하지 않으면 바로 조회 됨.
--단, 이때 index scan인 경우에 해당 됨
--    즉, 만약 full scan인 경우에는 조건절 및 결과절과 관계 없이 모조건 대기함.
SELECT * FROM TEMP_KYH;
SELECT * FROM TEMP_KYH WHERE temp1 = '2';

 

/*2. with(nolock), WITH(READUNCOMMITTED) */
--Insert, Update중 lock이 발생했지만 commit되지 않은 상태라도
--commit되었다 판단하여 자료가 조회 됨
SELECT * FROM TEMP_KYH with(nolock);
SELECT * FROM TEMP_KYH WITH(READUNCOMMITTED);

 

/*3. with(readpast) */
--Insert, Update중 lock이 발생한 레코드를 제외 하고 나머지 자료만 조회
SELECT * FROM TEMP_KYH with(readpast);

 

/*4. with(updlock) */
--SELECT시 UPDATE LOCK을 설정
--조회결과에 Insert, Update중인 자료가 존재시 조회 대기 함.
SELECT * FROM TEMP_KYH WITH (UPDLOCK)  WHERE temp1 = '1';


/* PROCEDURE 개발시 아래 문장존재 하면 좋음 */
--procedure에서 모든 select문장에 with(nolock), with(readpast)을 기술하지 않아도 됨
--SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;   --with(unlock)
--SET TRANSACTION ISOLATION LEVEL READ COMMITTED;     --with(readpast)

참고 url : http://kuaaan.tistory.com/97
Posted by 농부지기
,

[ Oracle Insert - 속도 향상하는 방법 ]

 

 

1. ALTER TABLE 테이블명_1 NOLOGGING;
    - 해당 테이블에서 작업시 훨씬 적은 양의 redo log만을 생성한다.

 

2. insert /*+append*/ into 테이블명_1

      select * from ....;

    - APPEND 힌트를 줌으로써 DIRECT PATH INSERT가 가능하도록 한다.

Posted by 농부지기
,

[ Nexacro.html5 모드로 실행하기 ]

 

1. eclipse 환경
   1. 프로젝트 생성 : Dynamic Web Project
   2. 프로젝트명    : FarmerStudy
   3. Tomcat 연동   : port - 8080

2. nexa환경
   1. runtime 환경에서 Qucik View가 아닌 Launch Project에서 수행이 되어야 html5 모드에서 실행가능
   2. nexa 프로젝트명 : FarmerStudy
   3. nexa -> 메뉴 -> Options > Build : Generate Path : D:\Study\eclipse\workspace\FarmerStudy\WebContent
   4. nexa -> Generate Applicaiton icon 클릭

3. eclipse 폴더 변경
   1. 농부지기 좀더 기술이 늘면 이 작업은 하지 않아도 되도록 문서 변경 ^^
      현재는 이 환경이 초보라 필요
   2. nexa에서 [Generate Applicaiton icon]을 클릭 하면 eclipse 폴더구조에
      /workspace/FarmerStudy/WebContent/FarmerStudy/.. 여기에 nexa js 소스들에 위치 함.
   3. 앞쪽 /workspace/FarmerStudy/ 의 FarmerStudy는 eclipse에서의 Project명이고
      뒤쪽 /WebContent/FarmerStudy/의 FarmerStudy는 nexa에서의 Project명이 된다.
   4. 실적으로 eclipse환경에 맞추기 위해서는 뒤쪽 nava용 FarmerStudy 폴더가 존재하면 안된다.
   5. 결론, /WebContent/FarmerStudy/ 하위에 존재하는 모든 폴더및소스를 /WebContent/밑으로 옮기고
      /WebContent/FarmerStudy/에서 FarmerStudy 폴더는 삭제해 버린다.
   6. 문제점, 이렇게 했을 경우 nexa에서 Generate Application등을 했을 경우 /WebContent/FarmerStudy/폴더가
      다시 생성 된다.
      그래서 차후에 이 부분을 어떻게 해결할지 고민해야 될 부분 이다.

 

 

* * 추가 필요 설정

1. trace 시 Log 출력

    1. FarmerStudy.xadl.js 파일 내부에

        this.set_tracemode("none");   -- this.set_tracemode("append");

Posted by 농부지기
,