일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- IntelliJ
- 맛집
- java
- Oracle
- devops
- Design Patterns
- db
- MySQL
- redis
- docker
- javascript
- linux
- AWS
- Git
- elasticsearch
- tool
- jenkins
- laravel
- Web Server
- php
- Spring
- Gradle
- ReactJS
- jsp
- JPA
- ubuntu
- springboot
- Spring Boot
- it
- 요리
- Today
- Total
목록MySQL (23)
아무거나
파티션 (partition) 대량의 데이터를 테이블에 저장할 때, 물리적으로 별도의 테이블로 분리해서 저장시키는 기법 (단, mysql 내부적으로 분리되어 처리되기 때문에, 파티션이 얼마나 있든 사용자는 하나의 테이블로 보인다.) 특정 DML과 Query의 성능을 향상시키고, 주로 데이터가 실시간으로 쌓이는 데이터베이스 환경에서 효율적이다. 특히 Full Scan에서 데이터의 접근 범위를 줄여 성능 향상을 가져올 수 있습니다. 물리적인 파티셔닝으로 인해 전체 데이터의 훼손 가능성이 줄어들며, 각 파티션 별로 독립적으로 백업하고 복구할 수 있다. 다만, 테이블 간 Join이 일어날 경우 비용이 증가 하며 테이블과 인덱스를 별도로 파티셔닝 할 수는 없다. 파티션 종류 기본적으로 파티셔닝은 수평 분할과 수직 ..
로컬세팅시 자주 사용하는 명령들을 귀찮아서 한 번에 저장하였다. Docker 설치(CentOS8) sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce Elasticsearch + Kibana + Cerebro 설치 (Docker Compose 또는 Docker 중 선택) Docker Compose [docker-compose.yml] version: '3.6' services: elasticsearch: image: 'docker.e..
AWS RDS MySQL VS Aurora Aurora란 AWS가 MySQL과 Postgresql을 호환해서 만든 RDBMS이다. 둘의 가장 큰 차이점은 Storage이며 Aurora는 Shared Storage를 사용하며 MySQL은 Binary Log 기반의 Replication 기반이 아닌 Storage와 Page 기반의 Replication을 사용 Aurora 장점 기본적으로 MySQL 및 PostresSQL 호환 가능하다. 스토리지 용량이 64TB까지 자동 증가된다. (RDS MySQL은 EBS 볼륨 할당을 직접 해야함) 3개의 AZ (가용 영역)에 대해서 6방향 복제를 지원한다 (6개의 스토리지 지원) Read Replica (읽기 전용 복제본)을 15개까지 지원한다 Read Replica에 ..
MySQL에서의 인덱스: insert, update, delete의 성능을 희생하고 select의 성능을 향상(update, delete, insert의 행위가 느린것이며 해당 쿼리를 실행하기 위해 데이터를 조회하는 것은 인덱스가 존재하면 빠름) B-Tree Index(=Balanced Tree) 설계기준 개수는 3~4개가 적당 인덱스의 키는 길면 길수록 성능이 저하(인덱스 키란 데이터타입(ex: varchar, int ..)의 크기로 이해하면 되고, InnoDB Storage Engine에서 전체 인덱스 키 크기는 767byte이다.) 1개의 컬럼만 Index를 적용시 카디널리티(=Cardinality)가 가장 높은 것으로 잡는게 좋음(인덱스로 최대한 효율을 내기 위해서는 많은 부분을 걸러내야 한다. ..
테이블 복사 복사할 테이블이 존재하지 않을경우 CREATE TABLE [대상 테이블명] SELECT * FROM [원본 테이블명] 복사할 테이블이 존재하는 경우 INSERT INTO [대상 테이블명] SELECT * FROM [원본 테이블명] 다른 데이터베이스 간의 테이블 값 복사 INSERT INTO [대상 데이터베이스명].[대상 테이블명] SELECT * FROM [원본 데이터베이스명].[원본테이블명] 중복 레코드 에러가 생길 겨우 예외처리 방법 // ignore 처리 INSERT ignore INTO .....
스칼라 서브쿼리 SQL에서 단일 값을 스칼라(=Scala)값 이라고 표현한다. 즉, 스칼라 서브쿼리(=Scala Subquery)는 SELECT절에 오는 서브쿼리로 결과값으로 1행만 반환하는것을 말한다. -- SELECT문 안에 SELECT문으로 스칼라 서브쿼리 사용 SELECT board_title, ( SELECT board_contents FROM tb_board AS a WHERE a.board_no = b.board_no ) AS board_contents, board_no FROM tb_board AS b WHERE board_contents like '%contents%';
Spring Boot + Mybatis + Mysql 을 활용한 계층형(=hierarchy) 게시판 구현 테이블 설계 CREATE TABLE `tb_board` ( `BOARD_NO` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '게시판 고유 값', `GROUP_NO` int(11) unsigned NOT NULL COMMENT '게시판 그룹번호 (원글은 자신의 값)', `SORT_SEQ` int(2) unsigned NOT NULL COMMENT '게시글 정렬 순번', `BOARD_LVL` int(2) unsigned NOT NULL COMMENT '게시글 레벨(depth)', `BOARD_TITLE` varchar(45) NOT NULL COMMENT '게시..
- SELECT * FROM {table} LIMIT 10 OFFSET 0; // LIMIT와 OFFSET을 같이 쓸 경우에는 LIMIT가 앞 OFFSET이 뒤에 온다. - SELECT * FROM {table} LIMIT 0, 10; // LIMIT만 올 경우에는 OFFSET앞 LIMIT는 뒤에 온다.
컬럼 생성시에 unsigned 선언의 의미] 1 CREATE TABLE `Code` ( 2 `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, 3 ... 4 ... 5 ) 컬럼을 생성할때 활용도에 따라 범위를 다르게 주는 부분이다. id 같은 경우 솔직히 음수는 쓰지 않으므로 int의 범위에서 반은 쓰질 않는다. 이럴때 unsigned를 선언해 주면 그 범위가 양수로 옮겨진다. -2147483648 ~2147483647 에서 0 ~ 4294967295 로 옮겨가는 것이다.
[docker mariaDB 설치] 1. 도커에서 mariaDB 이미지 받은후 컨테이너 생성 - sudo docker pull mariadb:latest - sudo docker run --name mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:latest - sudo docker exec -it mariadb bash // 해당 컨테이너 접속 - mysql -u root -p 명령으로 db접속 2. 마리아 DB 설정 - CREATE database `DB명` DEFAULT CHARACTER SET utf8; - create user `user명`@'%' identified by '비밀번호'; - grant all privileges on DB명.* t..