개요 MySQL/MariaDB는 전통적으로 특정 테이블에 대한 ALTER 명령 실행시, 작업이 완료될 때까지 해당 테이블 전체에 락을 걸어 읽기, 쓰기 작업이 불가능했다. MySQL 5.6(MariaDB 10.0)부터 InnoDB 테이블에 Online DDL 기능이 추가되어 테이블 락을 최소화한 테이블 수정이 가능해졌다. 사용자는 ALTER 명령 실행시 ALGORITHM, LOCK 2개 옵션을 추가로 명시해주면 테이블 락을 최소화하여 테이블 스키마를 수정하는 작업을 수행할 수 있게 되었다. ALTER TABLE foobar ADD COLUMN is_foobar TINYINT(1) NULL DEFAULT 0 COMMENT 'foobar 여부', ALGORITHM=INSTANT; ALTER TABLE foo..
개요 이번 글에서는 Kotlin, Spring Cloud Function을 이용하여 함수를 작성하고, AWS Lambda에 업로드하는 방법을 설명하고자 한다. Spring Boot 프로젝트 생성 Spring Initializr 웹사이트를 방문하여 아래 옵션으로 빠르게 시작점이 되는 빈 프로젝트를 생성할 수 있다. 브라우저에서 https://start.spring.io/ 접속 → Project: [Gradle Project] 선택 (기본값: Maven Project) → Language: [Kotlin] 선택 (기본값: Java) → Spring Boot: 2.X.X (Java 11을 지원하는 마지막 버전인 2.X.X를 선택) → Packaging: [Jar] 선택 → Java: [11] 선택 → [Gen..
개요 Spring Boot 기반의 REST API를 설계할 경우, 예외 상황에 대한 응답 구조 설계에 있어 신중한 접근이 요구된다. 프로젝트 초기에 충분한 고민 없이 무작정 오류 응답을 처리하게 되면, 참여 개발자가 늘어날수록 자기 입맛에 따라 그 때 그 때 다른 구조로 응답하여 예외를 통제하기가 매우 힘들어진다. (나는 이런 사례를 Exception Hell이라고 부른다.) 이번 글에서는 철저히 통제된 예외 응답 구조를 설계하는 방법을 설명하고자 한다. Spring Boot의 기본 에러 응답 Spring Boot의 요청 처리 과정에서 어떠한 설정도 하지 않은채 예외가 발생하면 아래 형식으로 오류를 응답한다. # 400 BAD_REQUEST { "timestamp": 1500597044204, "stat..
개요 현재 내가 몸 담고 있는 프로젝트는 세금 계산과 관련되어 한 번에 수십에서 수백만의 엔티티 생성이 발생하는 비지니스 로직이 존재하며, 레코드 생성의 속도가 곧 경쟁력이 되기에 최적화에 있어 아주 중요한 요소이다. 이번 글에서는 기존에 대량의 엔티티가 단건으로 저장되던 것을 Buik Insert로 개선하는 과정을 정리하였다. MySQL 커넥션 스트링 추가 MySQL은 반다시 rewriteBatchedStatements=true 옵션을 커넥션 스트링에 추가해야 Bulk Insert가 활성화된다. Hikari Pool을 이용하여DataSource를 생성할 경우 아래와 같이 옵션을 추가하면 된다. val config = HikariConfig().apply { ... addDataSourceProperty..
- Total
- Today
- Yesterday
- 로드 바이크
- 구동계
- node.js
- 평속
- 로드바이크
- CentOS
- Docker
- Eclipse
- graylog
- Spring MVC 3
- spring
- Tomcat
- chrome
- 알뜰폰
- DynamoDB
- jpa
- jstl
- JavaScript
- java
- maven
- MySQL
- Spring Boot
- jsp
- Kendo UI Web Grid
- kotlin
- bootstrap
- JHipster
- Kendo UI
- 자전거
- 태그를 입력해 주세요.
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |