일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- https
- yml
- apatch poi
- load order
- 운동해서 광명찾자
- fractional seconds
- mysql not equal null
- MSSQL
- RootGraph
- 오블완
- NamedEntityGraph
- @EntityListeners
- +9:00
- AuditingEntityListener
- sendFractionalSeconds
- mysql =
- deserializer
- Protecle
- pooled-lo
- mysql equal null
- 버전 문자열 비교
- getDateCellValue
- createEntityGraph
- getEntityGraph
- 1*1000
- spring boot
- EmbeddedId
- MYSQL
- @CreateDate
- 티스토리챌린지
- Today
- Total
목록DB (17)
Hello
a컬럼의 값이 1 일 때 b컬럼을 다른 테이블과 조인해야 하는 쿼리가 필요해 구글링하다보니 아래 블로그에서 join - on절에 case 문을 작성해 쿼리를 만드는 방법을 보고 오! 해보자! 라는 생각이 들어 테스트 해보았다. 참고 : https://ggmouse.tistory.com/143 테스트 tb_table1 tb_table2 join-on에 case문 사용하는 쿼리 SELECT a.*, b.name FROM tb_table1 a LEFT JOIN tb_table2 b ON a.code_id= case when a.code =1 then b.id END; code 값이 1일 때만 조인하는 것을 확인할 수 있다. 위 쿼리를 실제 적용 하기전에 dba분에게 신기한 쿼리가 있음을 공유하며 성능에 이슈가..
회사에서 DB 모니터링을 진행하고 있어 개선 해야하는 쿼리들을 공유 받았다. 그 중 조회 쿼리 개선을 요청 받은 것이 있어 몰랐던 부분을 알게되어 정리한다. CREATE TABLE `tb_test` ( `seq` INT(11) NOT NULL AUTO_INCREMENT, `string_data1` VARCHAR(50) NOT NULL COLLATE 'utf8_general_ci', `string_data2` VARCHAR(50) NOT NULL COLLATE 'utf8_general_ci', `number_data3` BIGINT(20) NOT NULL, `date` DATETIME NOT NULL, INDEX 'seq' (`seq`) USING BTREE, INDEX `date` (`date`) USI..
개발 도중 데이터 정리가 필요해 보여 특정 테이블 데이터 전체를 다 날렸는데 테이블 사이즈가 줄어들지 않아 의문이 들었다. 분명 테이블을 조회 하면 데이터가 0개 인데 테이블 사이즈는 1gb에서 바뀌지 않았다. 아래 쿼리로 실제 테이블의 크기를 확인 할 수 있다. Data_length, Index_length 컬럼을 합친 값이 실제 테이블이 점유하는 테이블 크기이다. SHOW TABLE STATUS LIKE 'tb_t1'; MySQL의 테이블스페이스는 데이터베이스 테이블 데이터, 인덱스가 저장되는 물리적인 공간(파일)을 의미 하며 아래 5가지 테이블스페이스를 가진다. 이 중 실제 데이터는 File-Per_Table Tablespace에 저장 된다. The System Tablespace File-Per_..
CREATE TABLE `tb_t1` ( `id` INT(11) NOT NULL, `key` VARCHAR(50) NOT NULL COLLATE 'utf8_general_ci', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB; CREATE TABLE `tb_t2` ( `id` INT(11) NOT NULL, `some_value1` INT(11) NOT NULL, `some_value2` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8_general_ci', PRIMARY KEY (`id`) USING BTREE, CONSTRAINT `FK__tb_t1` FOREIGN KEY (`id`) REFERENCES `settlement`.`tb..
사내 인프라 방화벽 규정에 기본적으로 모든 포트는 닫아두고 사용하는 포트만 열어두는 정책이 있다. Redis 에 접속해서 Pub/Sub을 사용해서 게임 서버와 의사소통을 하는 일이 필요해 방화벽 작업 요청 할 일이 있었는데 나는 공유받은 Sentinel ip/port만 신청 후 통신을 했는데 time out에러가 발생했다. ConnectTimeoutException: connection timed out: /xxx.xxx.xxx.xxx:xxxx 나는 Sentinel 정보가 Redis 서버 정보와 동일하다고 생각했는데 잘못 알고 있었던 것이다. Redis Sentinel 구성은 Redis 서버와 Sentinel서버를 연결하고 어플리케이션과 Sentinel을 연결해 Redis master 을 전달한다. Re..
a 테이블의 컬럼을 b 테이블의 값으로 업데이트 할 때, 테이블을 조인해서 사용할 수 있다. UPDATE [테이블1] JOIN [테이블2] ON [테이블1].key = [테이블2].key SET [테이블1].value1 = [테이블2].value1;
한글 검색을 할 경우 데이터 조회가 안되는 문제가 있었다. 처음에는 DB를 master, slave 이중화 하여 사용하고 있어 동기화 이슈로 예상을 하고 데이터를 확인 해보니 이슈가 없어 한글인 경우만 문제가 있는 것을 파악했다. insert할 때 한글값 저장이 잘되고 조회할 때 안되는걸로 보아 master, slave의 차이가 있을 것이라 추측하고 각 디비의 character를 확인해보니 character_set_server 값이 latin1로 설정되어 있었는데 이것이 문제였다. 일전에 slave db복구 작업이 이루어졌는데 5.7.x버전을 사용하고 있어 기본 설정 latin1로 적용 된 것 같다. 캐릭터 셋을 명시적으로 설정하지 않으면 MySQL 5.7 이하는 latin1, MySQL 8은 utf8m..