반응형

데이터 베이스/RDS 17

RDB 공유 잠금 기능

1. 개요 오늘 팀 단톡방에 좋은 질문이 올라와 읽던 중 공유 2. 질문 - 공유 잠금 기능이 MSSQL 만의 기능인가? -> "MSSQL 은 기본적으로 SELECT 시 공유잠금(S Lock) 이 걸린다. 이는 MSSQL 의 기본 격리수준(Isolation Level) 이 Read Committed 이기 때문이다. 즉, DML(INSERT, UPDATE, DELETE) 작업중인 ROW 또는 TABLE 에 SELECT 할 경우, 해당 작업이 끝나야 SELECT 할 수 있다는 의미이다. 3. 답변 - DBMS 마다 lock 정책이 다르지만, 공유잠금이란 개념은 모두 존재 - MSSQL 은 read commited 정책을 도입함 - 아래 내용은 read lock 이 왜 생기게 되었는지, 이를 해결하기 위해선 ..

[ DB ] 데이터 베이스 이중화 - postgresql 를 예제로

이번 프로젝트에서 운영하는 데이터 베이스가 이중화로 되어 있어 이중화에 대한 개념 및 참고할만한 링크를 기록한다. 1. DB 이중화란 '기준이 되는 데이터베이스(Master)의 변경된 데이터를 물리적으로 떨어진 각각의 데이터베이스(Slave)에 동일하게 유지하여 관리하는 것' 실서비스에서는 데이터의 유실을 방지하거나 무중단 서비스를 위해서는 이중화가 필수 2. 참고 링크 https://velog.io/@jwpark06/Postgresql-%EC%9D%B4%EC%A4%91%ED%99%94%ED%95%98%EA%B8%B0-Streaming-%EB%B0%A9%EC%8B%9D Postgresql 이중화하기 먼저, DB 이중화에 대해 알아보겠습니다. DB 이중화란 '기준이 되는 데이터베이스(Master)의 변경된..

[MySql] 리눅스 -> 윈도우 Mysql 워크벤치 연결하는 방법

1. 소개 리눅스와 윈도우는 환경이 다르기 때문에 막연하게 다른 운영체제에서 운영중인 DB 를 연결하는 것은 어려울 수 있겠구나..라는 막연한 불안감이 있긴 했었다. 하지만, 생각보다 너무 쉬웠다. 알아야 하는 것은 리눅스의 IP 주소, MYSQL 의 포트번호 이 두개만 있으면 된다 2. 연결 방법 mysql 을 설치했다는 가정 하에 진행한다. 1) 우선 외부에서 특정 포트 번호로 접속할 수 있도록 리눅스 방화벽에 특정 포트 번호를 오픈해준다 firewall-cmd --permanent --add-port=3306/tcp 2) 그 다음에는 방화벽을 다시 시작해준다 - 설정을 변경한 경우 다시 시작하지 않으면 설정이 반영되지 않을 수 있다 firewall-cmd --reload 3) 윈도우로 돌아와 워크벤..

[MySQL] CSV 파일 넣기

이미 CSV 파일을 넣기위한 테이블이 준비되어 있다고 가정한다 1. 실행방법 1) mysql에서 아래와 같은 명령어를 입력하면 엑셀 파일의 데이터가 저장된다 LOAD DATA INFILE 파일경로/파일명.csv INTO TABLE 테이블 이름FIELDS TERMINATED BY ',' 을 하면 된다. LOAD DATA INFILE `c:/test.csv` INTO TABLE lotto FIELDS TERMINATED BY `,`; 또는 LOAD LOCAL DATA INFILE `c:/test.csv` INTO TABLE lotto FIELDS TERMINATED BY `,`; 을 하면된다.

[SQL] MySQL Subquery Count Using DATE_FORMAT alias

어제 데이터를 연도별로 카운트를 하기위해 쿼리문을 작성했는데.. 원하는 대로 잘 나오지가 않았다.. 년도 별로해서 카운트를 하고 싶은데..날짜가 다 달랐던 탓인지 GROUP BY 로 연도별로 카운트를 해도 동일한 연도가 계속해서 나오는 문제가 발생했는데..아래 이미지와 같이 나왔었다. 이것을 어떻게 해결해야되는지... 분명 GROUP BY 로 나누어주는 것은 맞는데...왜 위 이미지와 같이 나올까.. 그것이 이상했고.. 몇시간을 서칭해도 나오지를 않았다.. 결국에는 STACK OVERFLOW 덕분에 해결을 햇는데.. 생각보다는 간단했다.. stackoverflow.com/questions/5425748/mysql-subquery-count-using-date-format-alias MySQL Subque..

[SQL] 테이블 안의 컬럼 값 변경하기 UPDATE

데이터 베이스의 테이블에서 만약 컬럼(필드)에 있는 값을 변경하기 위해서는 아래의 명령어를 사용하면 변경이 가능한데, 이때 UPDATE 키워드를 사용한다. UPDATE 는 원하는 컬럼 안의 특정 값을 변경할 수 있게 해준다. 1. 사용방법 UPDATE [테이블 명] SET [컬럼명]='변경할 값' WHERE [컬럼명]='해당값' ## 여기서 컬럼명을 쓸 때 [ ] 괄호는 빼고 사용하면 된다 UPDATE 는 이미 존재하는 값을 변경하기 위해 사용한다. 2. 하나의 값만 수정 UPDATE 를 사용한 가장 기본적인 방법이며, 수정할 필드와 찾을 값을 지정하면 된다. update [tablename] set [column_A]= 'abc' where test='gdw'; 위 예시는 test 필드에 gdw 라는 ..

[SQL ] INSERT INTO VALUES 사용시 주의할 점

INSERT INTO VALUES 는 새로운 값을 기존의 TABLE 에 넣는 역할을 하는 함수이다... 그때 VALUES 에는 외부에서 입력하는 새로운 값만 들어가야 되고 기존의 값을 참고해야되는 MAX, COUNT 같은 집계함수 등은 사용할 수가 없다 왜냐하면, 집계함수를 넣을 때는 기존에 있는 테이블의 값을 참고해야되는데, VALUES 는 이 값들을 참고할 수 없기 때문이다. 만약 VALUES 안에 위 집계함수들을 사용하고, 기존 테이블을 참조하는 값들이 들어가게 된다면 There is a column named [칼럼이름] in table , but it cannot be referenced from this part of the query. 위와 같은 에러를 발생시킬 수도 있다. 만약 JOIN 을..

[SQL Query] select 후 Insert 하기

사용 상황 수많은 value 들을 한번에 insert를 해야될 때, insert 문에 select 문을 사용한다. 사용방법 insert 문을 사용하고 난 후에 그 바로 아래 select 를 하면된다 INSERT INTO table_1 ( title, name, regdate, id, category ) SELECT title, name, regdate, id, category FROM table_2 WHERE category=10 장점 여러개의 값을 한번에 insert 시킬 때, 편리하게 사용할 수 있다 단점 테이블의 value 의 개수가 0인 경우, insert 가 안될 수 있다. 참고 링크 blog.outsider.ne.kr/263 여러 행 SELECT해서 INSERT 하기 :: Outsider's ..

반응형