전체 글

Database/mysql

[MySQL] 메모리 낭비 없이 전화번호 저장

int 형으로 전화번호를 적재하는 컬럼을 생성하고, 전화번호 01012345678 을 저장하면 1012345678 로 변환되어 저장된다. 그래서 보통 데이터 타입을 varchar 로 선언하는 경우가 많은데, zerofill 설정을 해주면 값이 없으면 공백을 0으로 채워주기 때문에 01012345678가 정상적으로 출력된다. 그리고 전화번호는 절대 음수가 될 일이 없으므로 UNSIGNED-ZEROFILL 으로 설정해준다. 예시 : alter table user modify column number int(11) unsigned zerofill not null; 이 방식으로 하면 vachar 보다 메모리를 절약할 수 있어서 효율적이다.

Database/mysql

[MySQL] Count 성능 비교

쿼리문 성능 볼 수 있는 명령어는 EXPLAIN 1. count(*) over() as 2. (select count(*) from TABLE) as count + group by 결론 => 서브쿼리 없이 count(*) over() as 하는 것이 성능이 더 좋음

Server

[nginx] ssl 연동하여 배포한 서버 socket 연결하기

서버에 ssl 연동하여 배포하고 소켓에서 https로 통신을 시도하면 에러가 납니다. 소켓 요청에 대한 프록시 설정을 따로 해주지 않았기 때문입니다. 소켓 공식문서를 보시면 https://socket.io/docs/v3/reverse-proxy/#nginx nginx 연동을 어떻게 해야하는지 나와있습니다. location ^~ /socket { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_pass http://localhost:3000; // 포트번호를 소켓을 배포한 서버의 포트로 작성합니다. proxy_http_version 1.1; proxy_set_header Upgrade..

AWS

[aws] react 를 aws cli 이용해서 s3에 연동

1. cli 사용을 위한 패키지 다운 : https://awscli.amazonaws.com/AWSCLIV2.pkg 2. 잘깔렸나 확인 : sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws 3. aws configure --profile [설정할 이름] 5. AWS Access Key ID [None]: [엑세스 아이디] AWS Secret Access Key [None]: [엑세스 키] Default region name [None]: [지역] //ap-northeast-2 Default output format [None]: json 6. 입력 후 프론트 package.json에 scripts 추가 "deploy": "aws s3 sync ./..

AWS

[aws] 도메인+ elb + ssl

nginx + docker + ec2 배포 과정은 올려두었으니 생략하고 진행하겠습니다. 1. aws 도메인 등록페이지에서 도메인을 구입합니다. 2. Route 53 > 호스팅 영역 > 호스팅 영역 생성 순으로 진행합니다. 아래 설정대로 하고 생성완료를 누르시면 됩니다. 등록된 도메인으로 통신테스트를 해보면 정상적으로 등록된걸 확인할 수 있습니다. 3. 로드밸런서를 생성합니다. EC2 > Load balancers > Select load balancer type 저는 Application Load Balancer 옵션으로 진행하겠습니다. 상황에 맞게 선택해서 진행하시면 됩니다. 설정은 아래 이미지를 참고해주세요. 4. 보안그룹은 아래 형식으로 만들어둔 보안그룹으로 선택하였습니다. https를 허용해주는 ..

Database/mysql

[MySQL] auto_increment 쓰면 안되는 이유

1. 데이터베이스 이전시킬 때, 중간에 끊기는 숫자가 있으면 그 숫자부터 다시 센다. (데이터가 많을때, 예를 들면 1~100까지 데이터가 있었다고 치고, 52가 없는 상태면 새로 이전하는 db에서 데이터가 새로 들어올 때, 101번을 안매겨주고 52번을 매겨준다. 그 다음에 101번을 매겨줘야 하는데 53번을 매겨준다. 근데 53번은 이미 있으니 에러를 밷는다.) 2. 카운트가 1억 정도까지 가면 index 메모리 낭비가 심해진다.

Database/mysql

[MySQL] 파티션

데이터가 많아지면 mysql에 부하가 걸리므로 파티션을 나눠줘야 한다. MySQL에서는 4가지 파티션 종류를 지원한다. - Range 파티션 - List 파티션 - Hash 파티션 - Key 파티션 Range 파티션 (출처 : https://hoing.io/archives/8527) 파티션 키의 연속된 범위로 파티션을 정의 하는 방식 이며 가장 일반적으로 사용 되는 파티션 종류 입니다. MAXVALUE 파티션을 이용해 정의 되지 않은 값의 범위의 키 값을 저장을 하게 됩니다. Range 파티션에서 NULL은 어떤 값보다 작은 값으로 간주 됩니다. 날짜 컬럼의 값으로 파티션 할 경우 다음의 예시 를 주의 해야 합니다. - UNIX_TIMESTAMP() 이용한 변환 식을 파티션 키로 사용 - 날짜를 문자열로..

AWS

인스턴스 보안그룹 best 설정 방법

이렇게 하는 방법이 베스트입니다. 전에 aws 인스턴스 생성할 때, 이렇게 하는 방법으로 알려드렸었는데, 위아래 둘 다 상관은 없습니다. 그러나 ::/0으로 하면 리소스가 그만큼 낭비되는 거라서 위에 캡처로 하는 것이 개인적으로 더 나은 것 같습니다.

hyun_ji
코딩일기