전체 글 96

TEXT 컬럼은 무조건 피해야할까?

예전에 TEXT vs LONG TEXT 에 대해서 다루고(https://glqdlt.tistory.com/504), varchar 로 한글 65355 개를 입력할수 있는지를 다룬 적(https://glqdlt.tistory.com/509)이 있다. 이 때 vs text 에 대한 내용도 살짝 다루었었는데, 오늘은 이를 주제로 다루어볼까 한다.어떠한 게임 서비스든 웹 서비스든 최초 진입점에 노출되는 공지 사항, 배너 같은 것들이 있을테고, 여기에 사용되는 이미지가 있긴 마련일테다. 이 이미지의 주소를 mysql 테이블에 저장해야한다면, VARCHAR 컬럼을 써야할지 TEXT 컬럼을 써야할지가 고민이 들 수 있다.이에 대해서는 관습적으로 '어쩔 수 없을 때 TEXT 컬럼을 써라' 라는 대답이 주를 이룬다. 청..

JPA 와 커버링인덱스

JPA 를 쓰면 사실 인덱스가 필요없다. 이건 또 무슨 헛소리일까, 7월의 무더위를 먹어버린 탓일까? 자 한번 내 얘기를 들어보시라.이 주장은 커버링인덱스와 관련이 있다. 커버링인덱스는 어떠한 쿼리보다도 가장 빠르게 응답 할수있는 현상을 말한다. 커버링인덱스는 select 쿼리의 결과 필드가 쿼리에 쓰인 인덱스인 경우에 커버링인덱스가 발동한다. 아래의 쿼리를 보자.select t.col1, t.col2 from tb_table as t where t.col1 = ? and t.col2 =?이 쿼리의 대상 tb_table 에는 복합인덱스 col1 과 col2 가 있다. 이 쿼리의 반환 결과는 col1 과 col2 만 반환한다. 이 경우에 커버링인덱스가 발동한다. 커버링인덱스는 mysql explain 실행..

스칼라 서브쿼리는 최악이다

서브쿼리의 결과가 정확히 1행 1열이라면, 이를 스칼라 서브쿼리(Scalar Subquery) 라고 부른다. 스칼라 서브쿼리는 이러한 단일 값을 SELECT 절, WHERE 절, HAVING 절 등에서 필드처럼 사용할 수 있는 서브쿼리를 의미한다. A scalar subquery is a simple operand, and you can use it almost anywhere a single column value or literal is legal, and you can expect it to have those characteristics that all operands have: a data type, a length, an indication that it can be NULL, and so ..

JPA 에서는 int 를 써야하나요? integer 를 써야하나요?

제목에 대한 대답은 JPA 에서는 integer 를 써야한다가 나의 대답이다, 그것도 확고하게. JPA 에서는, 더 나아가서 Java 에서는 int 를 사용하면 안된다.Java에서 정수를 표현하는 방법은 두 가지가 있다. int와 Integer. 전자는 primitive type이고, 후자는 wrapper type 이라 부른다. 이 정도는 JPA를 쓰는 Java 개발자라면 당연히 알고 있는 내용일테니 더 길게 설명하진 않겠다. 중요한 건 이 차이가 JPA에서 매우 중요한 문제가 된다는 거다.RDBMS에서는 null이란 개념이 존재한다. RDBMS에서 null 은 값이 아직 할당 되지 않은 상태를 나타내는 표현이며, 이는 RDBMS 에서 매우 중요하다. 그런데 java 세상에서는 int, long, boo..

테이블 풀스캔이 인덱스 보다 성능이 더 좋다.

제목이 참 자극적이다. 사실 이 말은 절반만 맞다. 상황마다 다르기 때문이다. 대체적으로 인덱스가 성능이 좋지만, 절대적으로 테이블 풀 스캔이 마냥 나쁘다는 선입견을 없애고자 이렇게 지었다.테이블 풀스캔이 무조건 나쁜 것으로 많이들 생각하지만 엄연히 말하면 나쁜 것은 아니다. 오히려 인덱스 보다 더 효율이 좋을 때가 많다. 인덱스를 깊게 공부를 해보면 인덱스가 생각보다 비효율적이란 걸 알 수 있는데, 이에 비해 풀스캔은 매우 효율적으로 동작한다.예를 들어서 PK 가 단순 증가 정수(auto increment) 로 되어 있는 테이블에 아래 쿼리를 날렸다 보자.select * from some_table where write_date between 오늘 and 다음주 limit 500,000이 때 write..

레코드 식별키 가상키 vs 복합PK

RDBMS 모델링에서는 키 에 대한 정의가 세분화 되어 있다. 논리 모델링과 물리 모델링 에서 쓰여지는 키가 각각 다름에도 통용적으로 얘기가 되다 보니 헷갈려 하는 사람이 많다. 적어도 나는 공부할 때 많이 헤맸었다. 각각의 키에 대해서는 따로 정리 해둔 글이 있음으로, 해당 글의 설명으로 대체하겠다. https://glqdlt.tistory.com/528개인적으로는 가상키를 PK로 많이 쓰는 편이다. 컬럼 이름은 id 이고 타입은 Integer 이며 auto increment 옵션을 둔다. 그냥 단순 증가 정수를 PK로 쓴다. 그런데 가끔은 클러스터링 군집화 때문에 복합PK를 정의해야할 때도 있다, 이럴 땐 단순 증가 정수 유니크컬럼을 추가로 만들고 JPA 엔티티 상에서는 ID 인 마냥 쓰기도 한다. ..

[250620] mysql 파티션은 만병통치약일까?

MySQL에서 테이블에 파티션을 걸면 성능이 빨라진다고들 한다. 특히 대용량 테이블에선 "파티션이 정답이다", "파티션만 걸면 빨라진다"는 맹신 하는 사람이 가끔 있다. 마치 파티션이 만병통치약인 마냥 말이다.그런데 정말 그럴까? 파티션이 만병통치약이라면, 왜 mysql 은 기본적으로 파티션을 강제화하지 않는걸까? 그 이유는 파티션은 잘 써야 약이고, 잘못 쓰면 독이기 때문이다, 만병통치약이 아니다파티션은 테이블을 물리적으로 분리하는 개념이다. 동일한 하드디스크에서 테이블 데이터가 적재되어있는 물리적 파일을 N개로 나눈다고 할지라도, 같은 하드디스크 IO 영향을 받는다. 만약 물리적으로 나뉜 N개의 파일을 각기 다른 하드디스크에 적재한다면 병렬 IO 의 이점으로 성능은 많이 올라갈 수 있다. 여기서는 병..

듀얼브레인, 이선 몰릭

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=358739031 듀얼 브레인 : 알라딘AI 시대를 살아가기 위해 꼭 읽어야 할 필독서다. 저자 이선 몰릭은 타임에서 선정한 ‘인공지능 분야에서 가장 영향력 있는 인물’ 중 한 명이다. 여러 AI 기업에 자문을 제공하고, 와튼 스쿨에www.aladin.co.kr 완독일 : 2025-06-20요즘 하도 AI가 개발자를 다 없앨거라나 뭐라나 하길래 사서 읽어봤다. 책의 저자가 의외의 사람인데, 펜실베니아 대학교 와튼 스쿨의 경영학과 교수다. AI 전문가라길래 전산 쪽일 줄 알았더니, 비즈니스 백그라운드인 사람이다. 국내 번역본 소개에는 저자가 경영학과 교수인 사실이 빠져 있다. 꽤 중요한 내용이라고 생각하는데, 판매량..

Topic/독서 2025.06.16

미국 셰일 오일의 진실(a.k.a 빨강 사기맵)

미국 셰일 오일에 대해서 이야기해보려고 한다. 미국은 세계 최고의 패권국이다. 미국은 세계 최고로 소비를 가장 많이 하는 나라이기도 하다. 미국이 가장 소비를 많이 하게 된 것은 기축통화국으로서의 입지 때문이다. 미국은 달러 부채를 세계에 수출하곤 하는데, 부채를 수출하기 위해서는 무엇인가를 사야 한다. 그래서 미국은 자연스레 외부에서 많은 여러가지를 사들이면서 소비를 하게 되었다. 소비의 가장 큰 핵심 품목은 당연코 에너지이다. 미국은 중동의 에너지자원인 기름에 굉장히 많은 관심을 가졌었다. 이 관심은 중동 최대의 적인 미국이, 중동 최대 산유국이 사우디아라비아와의 기묘한 동맹으로 까지 이어졌다. 종교적인 왠수인 미국(정확히는 이스라엘) 과 기묘한 동맹에는 최대 기름 소비 국가와 최대 기름 생산 국가의..

카테고리 없음 2025.06.16

우리 몸 연대기, 대니얼 리버먼

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=148012222 우리 몸 연대기 : 알라딘진화의 정점에 이른 현대인이 왜 각종 만성질환과 기능장애에 시달리는지, 인간의 몸과 문명은 서로 어떤 영향을 주고받아 왔는지를 진화적 관점에서 폭넓게 탐구하는 책이다. 저자인 대니얼www.aladin.co.kr 완독일 2025-05-21 이 책은 진화론에 흥미를 끌게한 책이다. 알라딘 서점에서 시간 때우다가, '건강한 두 발 동물은 어쩌다 병든 문명인이 되었나' 광고 에 혹해서 구매했다. 광고 말마따나 건강에 관한 내용을 배울 것이라고 생각했었는데, 진화론을 공부하게 될 줄 누가 알았을까. 현대인의 신체가 원시인과 거의 다를 바 없다는 사실도 처음 알게 되었다. 진화론 이..

Topic/독서 2025.06.12