웹 개발 9

[SQL 튜닝] 2. 튜닝 실습 준비를 위한 사전 준비(2) - 오라클 옵티마이저 및 실행 계획

오라클의 옵티마이저는 사용자가 호출한 SQL에 대해 최적의 실행 계획을 도출해준다. 도출 기준은 SQL문 자체 분석과 각종 통계 정보이다. 쿼리 플랜(Query plan) 또는 쿼리 실행 계획 (Query execution plan)은 SQL 관계형 데이터베이스 관리 시스템의 데이터 접근에 사용되는 순서가 있는 단계별 집합이다. SQL이 선언형이기 때문에 주어진 쿼리를 실행하기 위해 수 많은 방법이 존재하는 것이 일반적이며 이에 따라 다양한 성능 차이를 보인다. 쿼리가 데이터베이스에 제출되면 쿼리 옵티마이저는 쿼리 실행을 위한 각기 다른 가능성 있는 올바른 플랜 중 일부를 평가한 다음 최적의 옵션을 고려할때 반환한다. 쿼리 옵티마이저가 불완전하기 때문에 데이터베이스 사용자와 관리자들은 더 나은 성능을 얻..

DB/Oracle 2023.05.19

[SQL 튜닝] 1. 튜닝 실습 준비를 위한 사전 준비

튜닝 실습을 위해 준비해야할 것 1. 데이터 저장소(테이블 스페이스)와 해당 저장소를 사용할 계정 2. SQL문만으로 대용량 테이블 구성하기 3. 오라클의 통계 정보 분석 하기 1. 테이블 스페이스 및 계정 생성 ※ 테이블 스페이스란? 테이블, 인덱스, 프로시저, 뷰 등의 객체를 저장해놓은 오라클의 논리적인 공간이다. Oracle에서 실제 데이터들을 Data file 형식의 물리적인 공간에 저장하고, 이러한 Data file이 하나 이상 모여서, 테이블 스페이스라는 논리적인 저장 공간을 형성한다. 테이블 스페이스는 데이터베이스에서 가장 큰 단위의 논리적 저장 공간의 구성단위이며, 업무의 단위나 사용용도에 따라서 여러개의 테이블 스페이스로 나누기도 한다. (1) 테이블 스페이스 생성 (2) 사용자 계정 생..

DB/Oracle 2023.05.19

H2 데이터베이스 설치 및 구성

https://www.h2database.com/html/main.html H2 Database Engine H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size Supp www.h2database.com 상기 페이지로 이동 한다. h2.bat을 실행하면 H2 데이터베이스를 서버 모드로 실행한다. h2.bat을 실행하게 되면 ..

JPA 2023.04.26

1. JPA란?

JPA는 ORM(object-relational mapping)에 대한 자바 명세이다. JPA는 자바 객체를 데이터베이스 테이블을 매핑하여, 개발자 들에게 SQL쿼리를 사용 하는 대신, 자바 객체로 데이터베이스 데이터를 조작하게 해준다. 개발자들은 Hibernate, ApacheOpenJPA, EclipseLink 같은 JPA 구현체 Library를 사용 할 수 있다. https://kodejava.org/what-is-jpa-java-persistence-api/ What is JPA (Java Persistence API)? | Kode Java JPA is a Java specification for object-relational mapping (ORM) in Java. JPA provide a ..

JPA 2023.04.04

자바스크립트 생성자 호출 시 new 연산자가 동반 되는 이유

자바스크립트의 new는 사용자 정의 객체 타입이나 내장 객체 타입의 인스턴스를 생성하는 연산자이며, 보통 생성자와 함께 호출 된다. 생성자를 호출할 때 new를 빼먹으면 어떻게 될까? 문법 오류나 런타임 에러가 발생하지는 않지만, 논리적인 오류가 발생하여 예상치 못한 결과가 나올 수 있다. new를 빼먹으면 생성자 내부의 this가 전역 객체를 가리키게 되기 때문이다. (브라우저에서라면 this가 window를 가리키게 된다.) // 생성자 function Waffle() { this.tastes = "yummy"; } // 새로운 객체 var good_morning = new Waffle(); console.log(typeof good_morning); // "object" console.log(goo..

JavaScript 2023.03.29

동적으로 생성되는 태그에 이벤트 위임하기

동적으로 생성된 a태그에서 onclick 함수를 바인딩 하려고 했지만, 위와 같이 선언된 함수는 호출되지 않았다 . 위와 같이 이벤트 함수를 바꿨을 때도 호출이 되지않는다. 아래 처럼 생성될 element의 바로 상위 태그를 써주도록 해야된다. $("생성될 element 의 상위 태그).on(이벤트, 생성될 태그 selector 표현식, function(){...}); 참고 https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=moonv11&logNo=60168511203

JavaScript 2021.06.11

함수 객체의 기본 프로퍼티

함수는 객체로 취급되므로 일반적인 객체의 기능에 호출됐을 때 정의된 코드를 실행하는 기능을 가지고 있다. 일반 객체와는 다르게 추가로 함수 객체만의 표준 프로퍼티가 정의되어 있다. function add(x,y){ return x+y; } console.dir(add); 결과를 살펴보면 add()함수는 arguments, caller, length 등과 같은 프로퍼티가 기본적으로 생성된 것을 알수 있다. 이러한 프로퍼티들이 함수를 생성할 때 포함되는 표준 프로퍼티다. - name 프로퍼티 : 함수의 이름을 나타낸다. 이름이 없는 익명 함수라면 name 프로퍼티는 빈 문자열이 된다. - caller 프로퍼티 : 자신을 호출한 함수를 나타낸다. - arguments 프로퍼티 : 함수를 호출할 때 전달된 인자..

JavaScript/함수 2021.02.08

[함수의 특성] 함수의 객체적 특성

1. 자바스크립트에서는 함수도 객체이다. 함수의 기본 기능인 코드 실행뿐만 아니라, 일반 객체처럼 프로퍼티들을 가질 수 있다. // add()함수를 생성할 때, 함수 코드는 함수 객체의 [[Code]] 내부 프로퍼티에 자동으로 저장된다. function add(x,y){ return x+y; } // add() 함수 객체에 result, status 프로퍼티 추가 add.result = add(3,2); // 일반 객체처럼 result 프로퍼티를 동적으로 생성하고 함수 실행 결과를 저장했다. add.status = 'OK'; console.log(add.result); // 5 console.log(add.status); // OK 위처럼 자바스크립트의 함수는 코드를 수행하는 역할과 자신의 프로퍼티를 가..

JavaScript/함수 2021.02.03

자바스크립트의 함수의 생성

함수 생성 방법 함수를 생성하는 3가지 방법. 각각의 방식에 따라 함수 동작 방식이 미묘하게 차이가 난다. 1. 함수 선언문 2. 함수 표현식 3. Function() 생성자 함수 1. 함수 선언문 방식 함수 선언문 방식으로 정의된 함수의 경우는 반드시 함수명이 정의 되어 있어야 한다. function add(x,y){ return x+y; } console.log(add(3,4)); 2. 함수 표현식 방식 함수도 하나의 값처럼 취급된다. 따라서 함수도 변수에 할당하는 것이 가능하다. 이런 방식으로 생성된 함수를 변수에 할당하여 함수를 생성하는 것을 함수 표현식이라고 말한다. - 익명함수 var add = function(x,y){ return x+y; }; // add는 함수 리터럴로 생성한 함수를 참..

JavaScript/함수 2021.02.02