반응형

전체 글 150

[MSSQL] MSSQL 쿼리문에서 NOLOCK 사용해야하는 이유

1. (NOLOCK)SELECT 쿼리에서 테이블 공유 잠금을 피하고 다른 트랜잭션이 테이블을 업데이트하는 동안에도 읽을 수 있도록 하는 힌트. "읽기 잠금" 을 건너뛰므로 성능 향상 효과가 있다.① NOLOCK 사용: 쿼리 실행시간이 긴 SELECT 쿼리 실행 중에도 다른사용자가 테이블에 INSERT, UPDATE, DELETE 가능SELECT A.ORDERID , A.ORDERDATE , B.CUSTOMERNAME , C.PRODUCTNAME , C.QUANTITY FROM ORDERS A (NOLOCK) JOIN CUSTOMERS B (NOLOCK) ON A.CUSTOMERID = B.CUSTOMERID JOIN ORDERDETAILS C (NOLOCK) ON A.O..

Dev/Database 2024.10.02

[Oracle] 데이터 중복처리 막는법, for update 사용

FOR UPDATE 하면 오라클에서 중복처리를 막을 수 있는데, ORACLE은 row 단위로 LOCK을 하므로 해당 데이터만 중복 접근을 막아주는 것이다.사용자가 화면에서 버튼을 눌러 프로시저에서 STUDENT 테이블의 데이터를 수정하던 도중에, 사용자가 버튼을 한번 더 눌렀을 때, 서비스단에서 걸어둔 처리 완료 플래그 validation에 걸리지 않을 수 있다. 왜냐하면, 프로시저가 다 돌고나서 완료 플래그 처리하기전이기 때문이다.LOCK 을 걸고자 하는 데이터를 가져오는 쿼리에  FOR UPDATE 만 붙혀주면 된다.SELECT * INTO v_student FROM STUDENT WHERE NAME = P_NAME AND STD..

Dev/Database 2024.08.28

[Oracle] SELECT 1 FROM 의미, SELECT 1 의미, SELECT 1 FROM table 의 의미와 사용 예시

1. 개요"SELECT 1 FROM table" 구문은 주어진 테이블의 각 행에 대해 숫자 1을 반환한다.만약 테이블에 N개의 행이 있다면, 결과로 N개의 1이 반환된다.ex) users라는 3개의 행을 가지는 데이터베이스 테이블이 있다고 가정해보자.idnameage1Alice302Bob253Carol28이 테이블이 있을 때 "SELECT 1 FROM users" 구문을 실행하면 다음과 같은 결과가 반환된다.1111 2. 시사점SQL에서 1은 TRUE를 의미하므로,  "SELECT 1 FROM ..." 형식의 구문은 논리식으로 사용될 수 있다. 3. 사용 예시 - EXISTS 조건보통 이 구문은 WHERE 절의 (NOT) EXISTS 안에 있는 서브쿼리로 사용된다.-- 예시 쿼리 1: 특정 사용자가 존재..

Dev/Database 2024.07.10

[Oracle/MSSQL] 인덱스 종류, 인덱스 종류별 속도, 인덱스 스캔 종류, 인덱스 스캔 종류별 속도

인덱스 스캔이란? 데이터베이스의 옵티마이저가 데이터를 효율적으로 검색하기 위해 사용하는 다양한 방법을 의미한다. 인덱스 스캔의 종류를 빠른 순서대로 나열하면 같다. Unique Index Scan (유일 인덱스 스캔)유일한 값만을 찾기 때문에 가장 빠른 스캔 방법.유일 인덱스가 적용된 컬럼에 대해 특정 값을 조회할 때 사용ex) SELECT * FROM table WHERE unique_column = 'value'Index Range Scan (인덱스 범위 스캔)인덱스의 특정 범위 내에서 여러 행을 찾을 때 사용.일반적으로 조건절에 범위 조건이 포함될 때 사용ex) SELECT * FROM table WHERE indexed_column BETWEEN 'value1' AND 'value2'Index S..

Dev/Database 2024.07.09

[Oracle/MSSQL] WHERE 조건절 순서에 따른 속도차이, 조건절 순서 속도, WHERE 절 속도차이

TABLE에서 INDEX 가 참조하는 컬럼이 A,B,C 일때, 아래 두 쿼리중에 실행속도는 뭐가 더 빠를까? 1. SELECT * FROM TABLE WHERE A = 1 AND B=2 AND C=3 2. SELECT * FROM TABLE WHERE A = 1 AND C=3 AND B=2두 쿼리의 실행 속도는 사실상 동일하다. 왜냐하면, 데이터베이스의 쿼리 최적화 엔진이 WHERE 절의 조건 순서를 자동으로 최적화하여 가장 효율적인 방법으로 쿼리를 실행하기 때문이다. 옵티마이저가 똑똑해서 쿼리의 WHERE절을 살펴보고 키가 있는것을 우선 적용해 검색을 한다. 단, 인덱스의 쿼리가 모두 조건절에 들어있어야 인덱스를 100% 활용한다고 볼 수 있다. ​예를 들어, 다음 두 쿼리는:SELECT * FROM ..

Dev/Database 2024.07.04

[Java/Eclipse] 디버깅 로그, 자바 현재시간, 현재타임, 프로그램 소요시간, java 소요시간, java 시스템시간, java 로그찍기

java 서비스 실행시간을 측정하기 위하여 currentTimeMillis() 라는 시스템 함수를 사용할 수 있다.서비스 호출 전, 후로 시간을 기록한 다음, log4j 를 이용하여 확인할 수 있다.@RequestMapping("/wms/inbound/json/SaveStudentInfo.*")public String SaveStudentInfo(HttpServletRequest request, Map model) throws Exception{ // 시작시간 long start = System.currentTimeMillis(); DataMap map = (DataMap)request.getAttribute(CommonConfig.PARAM_ATT_KEY); // 서비스 실행 Object dat..

Dev/Backend 2024.07.02

[JQUERY/JSP/JAVASCRIPT] 자바스크립트 파일 업로드 제한, 파일 최대용량 제한, JQUERY 파일 용량 제한

클라이언트 측에서 파일 크기를 미리 확인하는 것이 서버 부하를 줄이는데 더 효과적일 수 있음1- 사전 필터링: 서버에 도달 전 크기가 큰 파일을 걸러낼 수 있으므로, 서버로 전송되는 데이터 양이 줄어 서버 부하 감소2- 빠른 응답: 서버 측에서 추가적인 검증이나 처리를 할 필요가 없어지므로, 클라이언트에게 더 빠른 응답 가능3- 확장성: 서버 측에서 파일 크기를 확인하는 경우, 파일 업로드가 많을수록 서버의 부하가 증가할 수 있으나, 클라이언트 측에서 파일 크기를 확인하면 서버 측에서는 파일 크기를 검증하는 추가적인 부하 없이도 더 많은 요청을 처리 가능1. JAVASCRIPT 2. HTML

Dev/Frontend 2024.06.25
반응형