일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- getEntityGraph
- fractional seconds
- mysql =
- 티스토리챌린지
- NamedEntityGraph
- spring boot
- 운영체제별 차이
- getDateCellValue
- mysql8업그레이드
- +9:00
- yml
- MSSQL
- mysql not equal null
- apatch poi
- 오블완
- load order
- createEntityGraph
- jdbc utf8mb4
- AuditingEntityListener
- mysql equal null
- https
- MYSQL
- sendFractionalSeconds
- 버전 문자열 비교
- 운동해서 광명찾자
- 1*1000
- Protecle
- java jdbc utf8mb4 연결 오류
- jdbc characterencoding utf8mb4
- RootGraph
- Today
- Total
목록DB (18)
Hello

회사에서 동료분이 MySql datetime 처리 시 소수점 시간이 반올림된다는 내용을 공유해주셨습니다. 그래서 공식문서를 보며 테이블을 만들고 테스트한 내용을 기록하고자 글을 작성합니다. 공식문서를 보면 Mysql은 6자리의 소수 초(microSecond)를 time, datetime,timestamp 데이터 타입 사용시 지원한다고 명시되어있습니다. 아래 작성 부터는 소수초를 ms라고 칭하겠습니다. ms 설정은 0~6 범위 내의 값이어야하고, 0은 ms 없음을 의미하고, 생략하면 ms는 0입니다. 아래 쿼리에서 date_start는 ms 사용 X, date_end는 ms 6자리를 사용하도록 작성했습니다. CREATE TABLE `tb_test` ( `date_start` DATETIME NOT NULL..

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..