| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 리눅스
- @JUnit
- Spring JDBC
- pointcut
- Framework
- Dependency Injection
- JDBC TEMPLATE
- 컨테이너
- java spring
- AOP
- spring framework
- spring
- Di
- @AspectJ
- JdbcTemplate
- XML
- @test
- Linux
- POJO
- SpringJDBC
- spring aop
- java
- @Spring-Test
- myBatis
- STS
- Spring Boot
- 마이바티스
- 프로퍼티
- Ubunt
- unix
- Today
- Total
목록2026/01/19 (10)
개키우는개발자 : )
"SQLite는 테스트용 아니야?"몇 년 전까지만 해도 맞는 말이었다. 하지만 2026년 현재, SQLite를 프로덕션에서 쓰는 서비스가 급격히 늘고 있다. Rails 8이 SQLite를 기본 DB로 밀고 있고, Turso, Litestream 같은 도구들이 등장하면서 MVP나 신규 프로젝트에서 SQLite를 선택하는 게 더 이상 이상한 일이 아니게 됐다.SQLite가 달라진 점최신 버전 (3.51.x, 2025년)jsonb_each(), jsonb_tree() - JSON 처리 강화unistr() - 유니코드 문자열 함수 추가sqlite3_setlk_timeout() - 락 타임아웃 세밀한 제어성능 최적화 - 읽기 트랜잭션 커밋 속도 개선IN 연산자 최적화 - 서브쿼리 재사용 개선25주년 기념 릴리스 ..
새 프로젝트를 시작할 때마다 고민되는 질문이다. "PostgreSQL이랑 MySQL 중에 뭘 써야 하지?"2026년 기준으로 두 데이터베이스를 비교하고, 상황별 선택 가이드를 정리한다.한눈에 보는 비교표항목 PostgreSQL MySQL타입객체 관계형 (ORDBMS)관계형 (RDBMS)라이선스PostgreSQL License (완전 무료)GPL (상용 시 유료 가능)최신 버전 (2026)17.x8.4 LTS / 9.x강점복잡한 쿼리, 데이터 무결성단순 읽기, 빠른 속도약점메모리 사용량 높음복잡한 쿼리 성능적합한 용도금융, 분석, 대규모 시스템웹사이트, 중소규모 앱1. 성능 비교읽기 성능단순 SELECT 쿼리는 MySQL이 빠르다.MySQL: 단순 읽기 위주 → 승리PostgreSQL: 복잡한 읽기 → 승..
WHERE 절에서 여러 값을 조회할 때 IN을 많이 쓴다. 그런데 IN, ANY, EXISTS 중에 뭐가 가장 빠를까? PostgreSQL의 실행계획을 분석하면서 정리한다.IN, ANY, EXISTS 기본 문법먼저 세 가지 문법을 비교해보자.IN 절SELECT * FROM usersWHERE id IN (1, 2, 3, 4, 5);-- 서브쿼리 사용SELECT * FROM usersWHERE id IN (SELECT user_id FROM orders WHERE status = 'completed');ANY 연산자SELECT * FROM usersWHERE id = ANY(ARRAY[1, 2, 3, 4, 5]);-- 서브쿼리 사용SELECT * FROM usersWHERE id = ANY(SELECT u..
Ubuntu에서 MySQL 설치하는 방법을 정리한다. APT 패키지 매니저로 쉽게 설치할 수 있다. 서버 운영을 고려해서 원격 접속 설정까지 다룬다.지원 Ubuntu 버전Ubuntu 버전 지원 MySQL24.04 LTSMySQL 8.0, 8.422.04 LTSMySQL 8.0, 8.420.04 LTSMySQL 8.0이 글은 Ubuntu 22.04 / 24.04 기준으로 작성했다.설치 방법 선택방법 장점 단점APT 기본 저장소간편함최신 버전 아닐 수 있음MySQL APT Repository최신 버전저장소 추가 필요이 글에서는 둘 다 설명한다.방법 1: APT 기본 저장소로 설치가장 간단한 방법이다. Ubuntu 기본 저장소의 MySQL을 설치한다.1-1. 패키지 목록 업데이트sudo apt update1-..
macOS에서 MySQL 설치하는 가장 쉬운 방법은 Homebrew다. 터미널 명령어 몇 줄이면 끝난다.버전 선택버전 Homebrew 패키지 특징8.4 LTSmysql@8.4안정적, 장기지원최신 (9.x)mysql최신 기능실무나 학습용이면 8.4 LTS를 추천한다.1. Homebrew 설치 확인터미널 열고 Homebrew가 설치되어 있는지 확인brew --version설치되어 있으면 버전이 표시된다.Homebrew 4.x.xHomebrew 미설치 시/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"설치 후 터미널 재시작2. MySQL 설치8.4 LTS 설치 (권장)brew install..
2026년 1월 기준 MySQL 설치 방법을 정리한다. 현재 MySQL은 8.4 LTS와 9.x Innovation 두 가지 버전 라인이 있다. 입문자나 실무용으로는 8.4 LTS를 추천한다.MySQL 버전 선택 가이드버전 타입 특징 추천 대상8.4 LTS장기지원안정적, 버그 수정 중심실무, 입문자9.xInnovation새 기능 (Vector, JS 지원)최신 기능 테스트8.4 LTS는 2032년까지 지원 예정이라 오래 쓸 수 있다. 이 글에서는 8.4 LTS 기준으로 설치한다.1. 설치 전 확인사항시스템 요구사항Windows 10 / 11 (64bit)최소 4GB RAM (8GB 권장)디스크 여유 공간 2GB 이상기존 MySQL 설치 여부 확인이미 MySQL이나 MariaDB가 설치되어 있으면 충돌이 ..
CREATE TABLE은 가장 기본적인 DDL이지만, 제대로 활용하면 성능과 유지보수에 큰 차이가 난다. 기본 문법은 이미 알고 있다고 가정하고, 실무에서 자주 쓰는 고급 기능들을 정리한다.목차CREATE TABLE IF NOT EXISTSCREATE TABLE AS SELECT (CTAS)제약조건 심화테이블 상속 (INHERITS)파티셔닝 (PARTITION BY)임시 테이블 (TEMPORARY)UNLOGGED 테이블LIKE 절로 테이블 복사1. CREATE TABLE IF NOT EXISTS테이블이 이미 있으면 에러 없이 넘어간다. 스크립트 여러 번 실행할 때 유용하다.-- 테이블이 있으면 에러 발생CREATE TABLE users ( id SERIAL PRIMARY KEY, name VA..
다른 테이블의 값을 참조해서 UPDATE 해야 할 때가 있다. 예를 들어 주문 테이블의 상품명을 상품 테이블에서 가져와서 수정하는 경우다. PostgreSQL에서는 FROM 절을 사용해서 JOIN UPDATE를 할 수 있다.MySQL과 문법이 다르다MySQL에서는 UPDATE에 JOIN을 직접 쓴다.-- MySQL 문법UPDATE orders oJOIN products p ON o.product_id = p.idSET o.product_name = p.name;PostgreSQL에서는 이 문법이 안 된다. FROM 절을 사용해야 한다.-- PostgreSQL 문법UPDATE orders oSET product_name = p.nameFROM products pWHERE o.product_id = p.id..
UPDATE를 실행하고 나서 수정된 데이터를 다시 SELECT 하는 경우가 많다. PostgreSQL에서는 RETURNING 절을 사용하면 UPDATE와 SELECT를 한번에 처리할 수 있다.RETURNING이 필요한 상황보통 이런 식으로 작성한다.-- 1. 데이터 수정UPDATE usersSET point = point + 100WHERE id = 1;-- 2. 수정된 데이터 조회SELECT id, name, point FROM users WHERE id = 1;쿼리를 2번 실행해야 한다. API 개발할 때 이런 패턴이 자주 나온다. RETURNING을 쓰면 한번에 처리된다.기본 문법UPDATE 끝에 RETURNING 절을 추가한다.UPDATE TABLE_NAMESET COLUMN = VAL..
UPDATE는 단순히 데이터를 수정하는 것처럼 보이지만, 대량의 데이터를 처리할 때는 생각보다 많은 문제가 발생한다. 실무에서 100만 건 이상의 데이터를 UPDATE 할 때 겪었던 문제들과 해결 방법을 정리한다.UPDATE가 느린 이유PostgreSQL에서 UPDATE는 내부적으로 DELETE + INSERT와 비슷하게 동작한다. 기존 행을 삭제 표시하고 새로운 행을 추가하는 방식이다. 이를 MVCC(Multi-Version Concurrency Control)라고 한다.그래서 UPDATE를 많이 하면테이블 크기가 커진다 (Dead Tuple 증가)인덱스도 새로 추가된다VACUUM이 필요해진다-- 테이블의 Dead Tuple 확인SELECT relname, n_live_tup, n_d..