INTP 개발자
close
프로필 배경
프로필 로고

INTP 개발자

  • 분류 전체보기 (389) N
    • Java (54)
      • 소개 (2)
      • 기본 문법 및 OOP (9)
      • Java API (0)
      • Java 응용 프로그래밍 (0)
      • Java 8+ (0)
      • Java 외부 라이브러리 (0)
    • Spring (0)
      • Spring Core (0)
      • Spring Web (0)
      • Spring Data (0)
      • Spring Infra (0)
    • Docker (0)
    • Messaging & Event (2) N
      • EDA(Event Driven Architectu.. (2) N
      • Kafka (0)
    • CS (16)
      • 면접 준비 (7)
      • 운영체제 (0)
      • 네트워크 (2)
      • HTTP (6)
      • 스프링(Spring) IoC 컨테이너 (0)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • ETC (11)
  • 홈
  • 태그
SQL Transaction(트랜잭션): 데이터의 정합성을 보장하기 위한 방법

SQL Transaction(트랜잭션): 데이터의 정합성을 보장하기 위한 방법

트랜잭션: Transaction 트랜잭션은 DB에서 일련의 작업을 논리적으로 묶은 것입니다. 즉 여러 SQL 쿼리문을 하나의 처리로 묶는 것입니다. 유명한 예를 들어보겠습니다. 예제) 고객 A와 B가 있습니다. 고객 A가 고객 B에게 1,000원을 이체하려는 상황입니다. 문제 1. 고객 A가 고객 B에게 1,000원을 이체하게 된다면 고객 A의 잔고는 -1,000원 연산이 이루어져야 하고, 고객 B의 잔고는 +1,000원 연산이 이루어져야 합니다. 하지만 고객 A의 잔고가 줄어드는 연산은 이루어지고, 그 후 오류가 발생하여 B의 잔고가 오르는 연산이 이루어지지 않으면 고객 A의 돈은 감소하고 고객 B의 돈은 증가하지 않게 됩니다. 우리가 바라는 것은 오류가 발생하게 되어 B의 잔고가 오르지 않는다면, 당..

  • format_list_bulleted DBMS/SQL, RDBMS
  • · 2024. 1. 23.
  • textsms
SQL 조회 성능을 위한 인덱스(Index)

SQL 조회 성능을 위한 인덱스(Index)

인덱스 인덱스(Index)는 DB에서 조회, 정렬, 그룹화 등의 연산을 빠르게 수행하기 위해 사용되는 정렬된 자료구조입니다. 특정 열 또는 열의 조합에 대한 정렬된 키와, 해당 키가 대응한 실제 데이터 레코드의 위치로 이루어져 있습니다. (key-value) 형태 예를 들어 위와 같이 주어진 `user` 테이블에서 나이가 20세 미만인 사용자를 찾는 쿼리(`select * from user where age < 20`)를 실행한다고 가정해봅시다. 해당 쿼리는 모든 데이터를 순차적으로 조회하여 조건을 만족하는 결과를 찾아낼 것입니다. 위 테이블은 데이터가 적게 담겨져 있어서 조회 시간에 큰 문제가 없지만, 만약 테이블에 데이터가 매우 많이 담기게 된다면 조회 기능의 성능은 매우 저하될 것입니다. 우리는 조..

  • format_list_bulleted DBMS/SQL, RDBMS
  • · 2024. 1. 22.
  • textsms
MySQL 데이터베이스(DB)에 배열 넣기 (feat. JSON)

MySQL 데이터베이스(DB)에 배열 넣기 (feat. JSON)

일반적으로 배열의 값을 데이터베이스(DB)에 넣기 보다는, 별도의 테이블에 저장하고, 해당 테이블과 원래 테이블 간의 관계를 생성합니다. 즉 정규화를 하는 것인데 이를 통해 배열 요소의 개별 검색, 수정, 추가가 용이해지는 장점이 있지만, 배열의 크기가 크거나 굳이 정규화를 하지 않아도 될 경우에도 정규화를 하게 되면 성능 문제가 발생할 수 있습니다. 때문에 배열 그대로 테이블에 집어넣는 방법에 대해서 알아보도록 하겠습니다. 문자열로 저장하는 방법 `배열 자료형`을 `문자열`로 변환하고, 그대로 테이블에 문자열 컬럼으로 저장해버리는 방법입니다. 배열을 넣을 때는 문자열로 변환하여 저장하고, 가져올 때는 문자열을 불러와 파싱하여 배열 자료형으로 만들어 사용하면 됩니다. 1) org.json 라이브러리 의존..

  • format_list_bulleted DBMS/SQL, RDBMS
  • · 2023. 6. 13.
  • textsms
[MySQL] port 변경하기

[MySQL] port 변경하기

MariaDB의 포트를 3306으로 설정해줌으로 MySQL의 포트를 따로 설정해주어야 했다. 포트(port)를 변경하기 위해선 다음과 같은 과정을 거치면 된다. 1. my.ini 수정 기본 설정으로 MySQL을 다운로드 하였다면 my.ini의 경로는 다음과 같을 것이다. 경로: C:\ProgramData\MySQL\MySQL Server 8.0 my.ini 파일에서 두 군데 port 번호를 변경해주어야 한다. 2. 서비스에서 MySQL 재구동 my.ini에서 설정한 포트로 정상적으로 구동된다.

  • format_list_bulleted DBMS/SQL, RDBMS
  • · 2022. 10. 5.
  • textsms
Maria DB 설치

Maria DB 설치

1. Maria DB 설치 홈페이지로 이동 https://mariadb.org/ MariaDB Foundation - MariaDB.org … Continue reading "MariaDB Foundation" mariadb.org 2. Download Mirror에 Korea가 없어서 Taipei로 Download 하였다. 3. 다운받은 파일 실행 UTF-8을 체크해주어야 한글이 정상적으로 출력된다. 4. 설치 진행 만약 [Next]를 눌렀을 때 TCP port가 이미 사용중이라고 나오면 아마 대부분은 MySQL을 사용하다가 MaraiDB를 설치하려는 경우일 것이다. 이때는 당황하지 말고 [리소스 모니터]에 들어가 3306 port 사용처를 본다. [명령 프롬프트] > [관리자 실행] > taskkil..

  • format_list_bulleted DBMS/SQL, RDBMS
  • · 2022. 10. 4.
  • textsms
[MyBatis + MySQL] INSERT 시 PK값 가져오기

[MyBatis + MySQL] INSERT 시 PK값 가져오기

코딩을 하던 중 PK 값이자 자동 증가하는 id 값을 가져와야 할 일이 생겼다. MySQL 자체 문법으로도 가능한 방법이 있지만 MyBatis에서도 기능이 있다 해서 포스팅해보겠다. Oracle 같은 경우 아래와 같은 방법으로 안되기 때문에 다른 방법(selectKey 태그 사용)으로 구현해야 하기 때문에 따로 찾아보길 바란다. INSERT INTO board( title, content, writer, views ) values( #{title}, #{content}, #{writer}, 0 ) useGeneratedKeys insert나 update됨가 동시에 자동생성된 키를 가져올 수 있는 속성으로 true로 설정 (default: false) keyProperty 리턴 될 key property ..

  • format_list_bulleted DBMS/SQL, RDBMS
  • · 2022. 9. 27.
  • textsms
  • navigate_before
  • 1
  • 2
  • 3
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기 (389) N
    • Java (54)
      • 소개 (2)
      • 기본 문법 및 OOP (9)
      • Java API (0)
      • Java 응용 프로그래밍 (0)
      • Java 8+ (0)
      • Java 외부 라이브러리 (0)
    • Spring (0)
      • Spring Core (0)
      • Spring Web (0)
      • Spring Data (0)
      • Spring Infra (0)
    • Docker (0)
    • Messaging & Event (2) N
      • EDA(Event Driven Architectu.. (2) N
      • Kafka (0)
    • CS (16)
      • 면접 준비 (7)
      • 운영체제 (0)
      • 네트워크 (2)
      • HTTP (6)
      • 스프링(Spring) IoC 컨테이너 (0)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • ETC (11)
최근 글
인기 글
최근 댓글
태그
  • #servlet
  • #이펙티브 자바
  • #Java
  • #mybatis
  • #회원 관리
  • #환경 세팅
  • #querydsl
  • #JDBC
  • #jsp
  • #게시판
전체 방문자
오늘
어제
전체
Copyright © 쭈미로운 생활 All rights reserved.
Designed by JJuum

티스토리툴바