일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스트림
- spring
- 토비의 스프링 정리
- GC
- 쿠버네티스
- MSA
- 토비의 스프링
- 이스티오
- JPA
- 보조스트림
- IntellJ
- Java
- gradle
- 백준
- thread
- 스프링
- list
- OS
- K8s
- redis
- Real MySQL
- mysql
- Kotlin
- Stream
- jvm
- SpringBoot
- Stack
- 자바
- 자바 ORM 표준 JPA 프로그래밍
- Collection
- Today
- Total
목록DataBase (14)
인생을 코딩하다.
Redis(Remote dictionary server)란? Remote -> 외부, dictionary -> HashMap (Key - Value), server -> 서버 Database, Cache, Message borker In-memory Data Structure Store Supports rich data structure Redis(레디스)는 REmote DIctionary Server의 약자로 오픈소스DBMS입니다. In-memory 데이터 저장소이며, Key-Value기반의 NoSQL DBMS입니다. 보통 DB, Cache(캐시), 메시지 브로커 등의 용도로 사용합니다. Redis를 효율적으로 쓰기 위해선 Cache에 관해 잘 알아야합니다. Cache는 나중의 요청에 대한 결과를 미리..
5장, 인덱스5.1 디스크 읽기 방식5.1.1 저장 매체서버에 사용되는 데이터를 저장할 수 있는 매체는 크게 3가지로 나뉜다.내장 디스크(Internal Disk)DAS(Direct Attached Storage)NAS(Network Attached Storage)SAN(Storage Area Nework)5.2 인덱스란?DBMS에서 인덱스는 데이터의 저장(INSERT, UPDATE, DELETE) 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능이다. 인덱스를 역할로 구분해본다면 PK와 보조 키로 구분할 수 있다.PK : 레코드를 대표하는 칼럼의 값으로 만들어진 인덱스보조키 : PK를 제외한 나머지 모든 인덱스PK를 제외한 나머지 모든인덱스는 보조 인덱스라고 분류한다, 유니크 인덱스는 PK와 ..
트랜잭션과 잠금트랜잭션MySQL에서의 트랜잭션트랜잭션은 작업의 완전성을 보장해주는 것이다. 즉 논리적인 작업 셋을 모두 완벽하게 처리하거나 또는 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용 되는 현상이 발생하지 않게 만들어주는 기능이다. 트랜잭션은 꼭 여러 개의 변경 작업을 수행하는 쿼리가 조합됐을 떄만 의미있는 개념은 아니다. 트랜잭션은 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개 이상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100% 적용되거나(COMMIT을 실행했을 때) 또는 아무것도 적용되지 않아야(ROLLBACK 또는 트랜잭션을 ROLLBACK 시키는 오류가 발생했을 때)함을 보장해 주는 것이다.주의사항일반적으로 데이터베이스 커넥션은 개수가 제한적이라서 각 단위..
MySQL 아키텍처 MySQL의 전체 구조 MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분해서 볼 수 있다. MySQL 엔진 클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL파서 및 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 요청된 SQL 문장을 분석하거나 최적화하는 등 DBMS 두뇌에 해당하는 처리를 수행한다. 스토리지 엔진 실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지로부터 데이터를 읽어오는 부분은 스토리지 엔진이 전담한다. MYSQL 서버에서 MySQL 엔진은 하나지만 스토리지 엔진은 여러개를 동시에 사용할 수 있다. 다음 예제와 같이 테이블이 사용할 스토리지 엔진을 지정하면 이후 테이블의 모든 읽기 작업이나 변경 작업은 정의..
Connection Pool을 사용하지 않으면, DB 서버 접속을 위한 과정을 HTTP요청이 있을 때마다 DB서버에 지속적으로 접근하는 작업이 반복적으로 필요하다. DB서버에 최초로 연결하여 Connection 객체를 생성는 작업은 비용적인 측면에서 큰 성능 저하를 이야기 한다. 이것이 반복되면 더 큰 성능 저하를 불러온다. 이와 같은 문제를 사전에 방지하기 위해 사용하는것이 바로 Connection Pool이다. Connection Pool은 WAS 실행시 일정량의 Connection 객체를 미리 생성하여 Pool 이라는 공간(캐시)에 저장해둔다. 그리고 DB연결 요청이 있을때 마다 Pool 에서 Connection 객체를 꺼내서 사용하고 사용이 끝나면 다시 Pool에 반납한다. 다들 여기까지는 보통 ..
DATETIME 자료형으로 저장된 게시물의 생성 날짜를 년도 - 월 - 일 형식으로 표시하고 싶어서 자바에서 처리할지, 뷰에서 처리할지, 어떤 방식으로 처리할지 고민하였다. 결국은 데이터베이스에서 받아올 때 내가 원하는 형식으로 받아오는 방법을 택했다. 간단하고, 늘어나는 코드의 양이 적은 것이 그 이유이다. MySQL에서 원하는 포맷으로 SELECT하려면 date_format 함수를 사용하면 된다. date_format(DATE, '포맷 형식') Y(4자리 년도), y(2자리 년도) m(월) d(일) H(24시 표기), h(12시 표기) i(분) s(초) 예를 들어 생성 날짜(createdDate) 칼럼을 가지고있는 테이블 temp가 있으면 SELECT date_format(creat..