DB
-
이번 포스트에서는 Spring Boot에서 단위테스트를 위한 H2 설정법에 대해 살펴보자. H2 Database 설정 h2의 모드 h2는 크게 3가지 모드로 사용할 수 있다. https://www.h2database.com/html/cheatSheet.html H2 Database Engine Using H2 Documentation Reference: SQL grammar, functions, data types, tools, API Features: fulltext search, encryption, read-only (zip/jar), CSV, auto-reconnect, triggers, user functions Embedded jdbc:h2:~/test 'test' in the user hom..
[H2] Spring Boot에서의 테스트를 위한 DB 설정이번 포스트에서는 Spring Boot에서 단위테스트를 위한 H2 설정법에 대해 살펴보자. H2 Database 설정 h2의 모드 h2는 크게 3가지 모드로 사용할 수 있다. https://www.h2database.com/html/cheatSheet.html H2 Database Engine Using H2 Documentation Reference: SQL grammar, functions, data types, tools, API Features: fulltext search, encryption, read-only (zip/jar), CSV, auto-reconnect, triggers, user functions Embedded jdbc:h2:~/test 'test' in the user hom..
2023.10.23 -
이번 포스트에서는 index를 적용하지 않았을 때, cluster index를 사용했을 때, 보조 index를 사용했을 때 성능 비교를 통해 효율적인 인덱스의 사용에 대해 고민해보자. 샘플 데이터베이스 설치 employees 스키마 설치 먼저 효율적인 테스트를 위해 많은 데이터를 포함한 데이터베이스 스키마를 설치해보자.https://dev.mysql.com/doc/employee/en/employees-installation.html MySQL :: Employees Sample Database :: 3 InstallationThe Employees database is available from Employees DB on GitHub. You can download a prepackaged ar..
[index] index 성능 확인이번 포스트에서는 index를 적용하지 않았을 때, cluster index를 사용했을 때, 보조 index를 사용했을 때 성능 비교를 통해 효율적인 인덱스의 사용에 대해 고민해보자. 샘플 데이터베이스 설치 employees 스키마 설치 먼저 효율적인 테스트를 위해 많은 데이터를 포함한 데이터베이스 스키마를 설치해보자.https://dev.mysql.com/doc/employee/en/employees-installation.html MySQL :: Employees Sample Database :: 3 InstallationThe Employees database is available from Employees DB on GitHub. You can download a prepackaged ar..
2023.10.12 -
이번 포스트에서는 Transaction Isolation level에 대해 살펴보자. 독립성과 Isolation Level Isolation Level데이터베이스에서는 lock의 경직성에서 동시성을 확보하기 위해 트랜젝션에 isolation level을 줘서 독립성과 동시성을 적절한 레벨에서 선택해서 사용할 수 있게 한다. isolation level은 동시에 여러 트랜젝션이 처리될 때 특정 T.X가 다른 T.X에서 변경중이거나 조회중인 데이터를 불 수 있게 허용할 것인가를 결정하는 수준으로 Read Uncommitted, Read Committed, Repeatable Read, Serialize 4가지가 존재한다.Read Uncommitted: 각 T.X의 commit, rollback 여부와 상관 ..
[Transaction] 02. Transaction Isolation Level이번 포스트에서는 Transaction Isolation level에 대해 살펴보자. 독립성과 Isolation Level Isolation Level데이터베이스에서는 lock의 경직성에서 동시성을 확보하기 위해 트랜젝션에 isolation level을 줘서 독립성과 동시성을 적절한 레벨에서 선택해서 사용할 수 있게 한다. isolation level은 동시에 여러 트랜젝션이 처리될 때 특정 T.X가 다른 T.X에서 변경중이거나 조회중인 데이터를 불 수 있게 허용할 것인가를 결정하는 수준으로 Read Uncommitted, Read Committed, Repeatable Read, Serialize 4가지가 존재한다.Read Uncommitted: 각 T.X의 commit, rollback 여부와 상관 ..
2023.10.11 -
이번 포스트에서는 Transaction과 동작 방식에 대해서 살펴보자. 일반적인 쿼리의 기준은 mysql로 한다. 다 아는 Transaction이야기 Transaction의 정의Transaction이란 데이터 처리의 한 단위로 개별 쿼리 단위가 아닌 사용자의 액션(업무)단위의 큰 틀로 묶어서 제어하게 된다. 트랜젝션의 목적은 데이터베이스 내의 데이터를 완전하게 유지하기 위해서 사용된다.예를 들어 A 계좌에서 B 계좌로 100원을 이체해야하는 경우를 생각해보자.이 과정에서는 2개의 update 문장이 필요하다. 즉 A 계좌에서 출금 update가 일어나고 B 계좌에서 입금 update가 일어나야 한다. 이 두 개의 sql을 하나로 묶은 것이 이체라는 업무이다.만약 A 계좌에서 성공적으로 인출한 후 무언가..
[Transaction] 01. Transaction이번 포스트에서는 Transaction과 동작 방식에 대해서 살펴보자. 일반적인 쿼리의 기준은 mysql로 한다. 다 아는 Transaction이야기 Transaction의 정의Transaction이란 데이터 처리의 한 단위로 개별 쿼리 단위가 아닌 사용자의 액션(업무)단위의 큰 틀로 묶어서 제어하게 된다. 트랜젝션의 목적은 데이터베이스 내의 데이터를 완전하게 유지하기 위해서 사용된다.예를 들어 A 계좌에서 B 계좌로 100원을 이체해야하는 경우를 생각해보자.이 과정에서는 2개의 update 문장이 필요하다. 즉 A 계좌에서 출금 update가 일어나고 B 계좌에서 입금 update가 일어나야 한다. 이 두 개의 sql을 하나로 묶은 것이 이체라는 업무이다.만약 A 계좌에서 성공적으로 인출한 후 무언가..
2023.10.10 -
이번 포스트에서는 order by 절에 사용되는 subquery의 용법에 대해 살펴보자. subquery 조회 문장을 사용할 때 subquery는 select, from, where, having, order by 절에 사용될 수 있다. 일반적인 상황에서의 sub query들은 다 써봤는데 order by 절에서 사용되는 sub query라는게 딱히 잘 사용해보지 않았던 항목이라 정리하고자 한다. order by 절에서의 subquery order by 절에는 정렬하기 위한 컬럼이 오는 것이 일반적이다. 그런데 subquery는 값을 반환한다. 뭔가 아귀가 안맞는것 같은데 subquery로 나온 값들을 기준으로 정렬 한다고 생각하면 되겠다. 이때 주의할 점은 order by 절에서 사용하는 subquer..
[subquery] order by 절에서의 sub query이번 포스트에서는 order by 절에 사용되는 subquery의 용법에 대해 살펴보자. subquery 조회 문장을 사용할 때 subquery는 select, from, where, having, order by 절에 사용될 수 있다. 일반적인 상황에서의 sub query들은 다 써봤는데 order by 절에서 사용되는 sub query라는게 딱히 잘 사용해보지 않았던 항목이라 정리하고자 한다. order by 절에서의 subquery order by 절에는 정렬하기 위한 컬럼이 오는 것이 일반적이다. 그런데 subquery는 값을 반환한다. 뭔가 아귀가 안맞는것 같은데 subquery로 나온 값들을 기준으로 정렬 한다고 생각하면 되겠다. 이때 주의할 점은 order by 절에서 사용하는 subquer..
2023.04.13 -
이번 포스트에서는 알아두면 유용한 mysql sql 문장들에 대해서 살펴보자. 문제링크 show create table show create table은 table에 대한 DDL을 보여준다. mysql> show create table country; +---------+-------------------------------------------------------------------------------- | Table | Create Table | +---------+-------------------------------------------------------------------------------- | country | CREATE TABLE `country` ( `country_id..
[mysql]알아두면 유용한 설정이번 포스트에서는 알아두면 유용한 mysql sql 문장들에 대해서 살펴보자. 문제링크 show create table show create table은 table에 대한 DDL을 보여준다. mysql> show create table country; +---------+-------------------------------------------------------------------------------- | Table | Create Table | +---------+-------------------------------------------------------------------------------- | country | CREATE TABLE `country` ( `country_id..
2023.02.05 -
이번 포스트에서는 mysql의 날짜 포멧에 있는 00월 00일에 대해서 살펴보자. 00월 00일이란? 날짜 포멧과 00월 00일 mysql의 날짜 포멧 문서(https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format)를 살펴보면 %m이 Month, numeric (00..12)를 의미하고 %d는 Day of the month, numeric (00..31)를 의미한다. 그냥 넘어갈 수 있는데 00부터 시작하는게 신기하다. 00~11이 라면 이해 되는데 00~12라니.. 참고로 oracle의 MM은 01~12이다. mysql에서 이런 입력이 가능한 이유는 mysql에서 불완전한 날짜의 입력을 허용하기 때문..
[mysql]00월 00일 입력?이번 포스트에서는 mysql의 날짜 포멧에 있는 00월 00일에 대해서 살펴보자. 00월 00일이란? 날짜 포멧과 00월 00일 mysql의 날짜 포멧 문서(https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_date-format)를 살펴보면 %m이 Month, numeric (00..12)를 의미하고 %d는 Day of the month, numeric (00..31)를 의미한다. 그냥 넘어갈 수 있는데 00부터 시작하는게 신기하다. 00~11이 라면 이해 되는데 00~12라니.. 참고로 oracle의 MM은 01~12이다. mysql에서 이런 입력이 가능한 이유는 mysql에서 불완전한 날짜의 입력을 허용하기 때문..
2023.02.05 -
Database에서 null은 이리 저리 처리해야하는 상황이 많아서 매우 피곤하다. 이번 포스트에서는 다양한 상황에서 null과의 연산에 대해 살펴보자. 참고로 테스트는 mysql에서 진행하였는데 필자가 아는 한 대부분 DB가 동일하다. null의 연산 산술 연산: 언제나 null select null+1, null-1, null*1, null/1 from dual; 문자열 결합 연산: null select concat(1, null, 2) from dual; 비교연산 이 부분이 가장 헷갈리는 부분이다. 비교 연산에서 null은 "무엇이든 될 수 있고 무엇도 될수 없는 값이다." (뭐래니.. unknown이라고도 한다. 즉 fix 할 수 없다는 이야기다.) 아래의 표를 살펴보자. 연산자 true fals..
[sql] Null의 연산Database에서 null은 이리 저리 처리해야하는 상황이 많아서 매우 피곤하다. 이번 포스트에서는 다양한 상황에서 null과의 연산에 대해 살펴보자. 참고로 테스트는 mysql에서 진행하였는데 필자가 아는 한 대부분 DB가 동일하다. null의 연산 산술 연산: 언제나 null select null+1, null-1, null*1, null/1 from dual; 문자열 결합 연산: null select concat(1, null, 2) from dual; 비교연산 이 부분이 가장 헷갈리는 부분이다. 비교 연산에서 null은 "무엇이든 될 수 있고 무엇도 될수 없는 값이다." (뭐래니.. unknown이라고도 한다. 즉 fix 할 수 없다는 이야기다.) 아래의 표를 살펴보자. 연산자 true fals..
2023.01.31