Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

갑을병정이야기 53

🔑 Oracle MERGE 성능 개선 방안

🔑 Oracle MERGE 성능 개선 방안 ON 조건 인덱스 최적화 – MERGE는 대상과 소스를 조인하므로 ON 조건 컬럼에 인덱스 필요변경된 값만 UPDATE – 불필요한 UPDATE 방지USING 절 단순화 – 복잡한 JOIN, GROUP BY 최소화병렬 처리 힌트 – 대용량 배치 작업 시 효과적실행 계획 확인 – EXPLAIN PLAN으로 Full Scan 여부 점검파티셔닝 활용 – 병목 완화 및 Local Index 사용MERGE 분리 전략 – UPDATE와 INSERT를 분리해 옵티마이저 활용 극대화최신 통계 유지 – DBMS_STATS로 실행 계획 정확성 확보⚠️ 실무에서 자주 발생하는 문제Snapshot too old 오류 – Undo 영역 과다 사용 → 사전 필터링으로 해결인덱스 무시 ..

Oracle OFFSET 성능 최적화와 Keyset 페이징

Oracle OFFSET 성능 최적화와 Keyset 페이징 OFFSET은 데이터가 많아질수록 성능이 급격히 떨어집니다. 대용량 환경에서는 Keyset Pagination(Seek 방식)을 사용하고, 정렬 컬럼에 적절한 인덱스를 추가하는 것이 가장 효과적인 방법입니다.OFFSET 성능 문제OFFSET-FETCH 방식은 지정된 OFFSET만큼 데이터를 건너뛰기 위해 정렬 후 스캔을 수행합니다.데이터가 수백만 건 이상이면 TEMP 공간 사용과 CPU 부하가 급격히 증가합니다.페이징 방식 비교방식장점단점성능 특성ROW_NUMBER정렬 순서 보장, 임의 페이지 접근 가능전체 정렬 비용 발생대량 데이터에서 성능 저하OFFSET-FETCHSQL 문법 간결, 직관적OFFSET 커질수록 성능 급격히 저하수백만 건 이상에..

JavaScript input 길이 체크 방법

JavaScript input 길이 체크 방법 1. 기본적인 길이 체크JavaScript에서 input의 길이를 확인할 때는 value.length 속성을 사용합니다.확인2. 주요 방법value.length : 문자열 길이를 직접 확인maxlength 속성 : HTML에서 입력 가능한 최대 길이를 제한이벤트 리스너 활용 : input 이벤트로 실시간 길이 체크const input = document.getElementById("username");input.addEventListener("input", () => { console.log("현재 길이:", input.value.length);});3. 활용 팁보통은 maxlength로 기본 제한을 두고, 추가적인 검증은 value.length로 처리하는..

DevExtreme dxDataGrid 활용 정리

DevExtreme dxDataGrid 활용 정리 이번 글에서는 DevExtreme dxDataGrid를 사용하면서 자주 쓰이는 기능과 팁들을 정리했습니다. JavaScript와 함께 동적으로 데이터를 제어하거나 UI를 커스터마이징할 때 유용합니다.1. 특정 셀 숨기기cellTemplate을 활용하여 조건에 따라 셀을 숨길 수 있습니다.columns: [ { dataField: "Phone", cellTemplate: function(container, options) { if (options.data.IsHidden) { container.text(""); // 숨김 처리 } else { container.text(options.value); ..

ORA-30926 오류 개요

ORA-30926 오류는 Oracle Database에서 MERGE나 UPDATE 작업 시 동일한 대상 행(row)을 두 번 이상 갱신하려 할 때 발생하는 에러입니다. 주로 소스 데이터에 중복된 키가 있거나 ON 조건이 불완전해 하나의 대상 행에 여러 소스 행이 매칭될 때 나타납니다.📌 ORA-30926 오류 개요에러 메시지: ORA-30926: unable to get a stable set of rows in the source tables원인:소스 테이블에 중복된 키 값 존재ON 절의 조인 조건 불충분 → 하나의 대상 행에 여러 소스 행 매칭비결정적(non-deterministic) WHERE 절 사용ETL 과정에서 데이터 품질 문제 (중복 데이터 유입)🔎 발생 시나리오 예시MERGE INTO ..

Eclipse에서 MyBatis XML Schema 검증 방법

Eclipse에서 MyBatis XML Schema 검증 방법 MyBatis를 사용할 때 XML 매퍼 파일은 SQL 실행의 핵심입니다. 하지만 문법 오류나 매핑 문제로 인해 The error may exist in SQL 같은 에러가 발생할 수 있습니다. 이를 예방하기 위해 Eclipse에서 Schema(DTD) 검증을 설정하는 방법을 정리했습니다.1. DTD 선언 추가매퍼 XML 상단에 MyBatis 공식 DTD를 선언해야 Eclipse가 문법 검증을 수행합니다.이 선언이 없으면 Eclipse는 단순 XML로 인식해 검증을 하지 않습니다.2. XML Validation 활성화Eclipse 메뉴에서 Window → Preferences → XML → XML Files → Validation으로 이동합니다..

Tomcat 서버 요청 로그와 디버깅 방법

Tomcat 서버 요청 로그와 디버깅 방법1. 기본 로그 확인Tomcat은 logs 디렉터리에 다양한 로그를 남깁니다. 요청 내역은 보통 Access Log에 기록됩니다.Access 로그: localhost_access_log.YYYY-MM-DD.txtCatalina 로그: 서버 동작 및 에러 관련 메시지실시간 모니터링: tail -f logs/localhost_access_log.*2. 헤더와 바디까지 확인하기Access Log만으로는 부족합니다. 요청의 HTTP Header와 Body Payload를 확인하려면 다음 방법을 사용합니다.RequestDumperValve 설정Filter 구현하여 HttpServletRequest에서 직접 읽기프록시 서버(Nginx, Apache)에서 로깅디버깅 툴 (Wi..

오라클 유사도

Oracle에서 유사도 검색 방법 정리1. 문자열 기반 검색LIKE 연산자 패턴 매칭에 사용 % : 0개 이상의 문자 대체 _ : 정확히 1개의 문자 대체SELECT * FROM employees WHERE first_name LIKE '%ohn%';→ "John", "Johnson" 등 포함된 결과 반환INSTR 함수 특정 문자열 내에서 부분 문자열의 위치를 반환SELECT INSTR('CORPORATE FLOOR', 'OR', 3) FROM dual;2. PURGE 명령어DROP TABLE ... PURGE테이블을 Recycle Bin에 남기지 않고 즉시 삭제DROP TABLE employees PURGE;PURGE RECYCLEBIN현재 사용자 스키마의 Recycle Bin 전체 비움PURG..

공공데이터포털의 개발계정 상세보기 (준비 땅~)

공공데이터포털의 개발계정 상세보기 화면으로, 국세청 사업자등록정보 진위확인 및 상태조회 API에 대한 설명이 담겨 있습니다. 핵심 내용을 요약하면 다음과 같습니다: 📌 기본 정보데이터명: 국세청 사업자등록정보 진위확인 및 상태조회 서비스서비스 유형: REST API호출 제한: 하루 1,000,000회데이터 포맷: JSON, XML 지원Base URL: https://api.odcloud.kr/api/nts-businessman/v1Swagger 문서: 제공됨 (API 명세 확인 가능)⚙️ 주요 기능사업자등록정보 진위확인 API (POST /validate)사업자등록번호, 대표자 성명, 개업일자 등 필수 항목 입력 필요외국인 사업자의 경우 영문명/한글명 입력 규칙 존재응답: 사업자등록정보의 진위 여부 반..

WebSquare Studio에서 FusionChart 버블 차트 구현기

WebSquare Studio에서 FusionChart 버블 차트 구현기 오늘은 WebSquare Studio에서 FusionChart의 Bubble Chart를 구현하면서 겪은 시행착오와 해결 방법을 정리해보려 합니다. 데이터 바인딩, 텍스트 표시, 색상 처리, 다운로드 기능까지 다양한 이슈를 경험했는데요, 그 과정을 공유합니다.1. dataList vs ref: 데이터 바인딩 방식WebSquare에서는 FusionChart에 데이터를 바인딩할 때 dataList 속성이나 ref="data:dcBubble"와 같은 ref 속성을 사용할 수 있습니다.dataList: DataCollection을 직접 연결ref: WebSquare의 데이터 바인딩 규칙을 따름하지만 FusionChart는 x, y, z, ..

반응형