MSSQL Lock 문제 해결
컴퓨터 공부/SQL 2023. 8. 21. 23:30

sp_who2 프로세스를 조회하는 명령어 BlkBy 칼럼을 통해 락이 걸렸는지 확인 가능하다. (결과가 '.'이 아니면 lock이 발생한 프로세스이다.) 현재 작업 중인 모든 세션을 확인할 수 있기 때문에 서버가 내려갔는지에 대한 것도 해당 명령어로 확인 가능하다. sp_lock 락이 걸린 세션을 확인하는 명령어 mode 컬럼에서 어떤 종류의 lock이 걸렸는지 확인 가능하다. lock의 종류는 다양한데, 대표적인 lock으로는 shared-lock(S)과 exclusive-lock(X)이 있다. S-lock은 트랜잭션이 데이터를 읽는 동안에만 잠금이 되는 것인데, 여러 트랜잭션이 동시에 하나의 개체를 읽을 수 있다. 다시 말해 S-lock끼리는 서로 충돌하지 않는다. 따라서 S-lock은 크게 문제를 ..

MSSQL 프로시저 캐시 / 버퍼 메모리
컴퓨터 공부/SQL 2023. 8. 18. 22:25

데이터베이스 작업을 하면서 주어진 자원을 최대한 효율적으로 사용하는 것은 하나의 중요한 포인트이다. 따라서 SQL문을 최적화하기 위해서 SQL튜닝을 진행하는데, SQL 튜닝을 진행하기 앞서 SQL에 대한 이해와 SQL 데이터의 분석이 선행되어야 한다. 프로시저 캐시(Procedure cache/Plan cache) 프로시저 캐시는 쿼리 플랜이 저장되는 메모리 공간으로 쿼리 플랜이 재사용될 수 있도록 함으로써 쿼리문을 컴파일하는데 드는 비용을 최소화하기 위해 사용된다. 일반적으로 SP(Stored Procesure)의 사용을 권장하는 이유가 쿼리 플랜을 재사용하여 성능 향상을 기대할 수 있기 때문인데, 프로시저 캐시도 비슷한 역할을 하는 것이다. 하지만 프로시저 캐시에 저장되는 ad-hoc 타입의 쿼리문의..

SQL 와일드카드
컴퓨터 공부/SQL 2023. 8. 16. 21:56

% (Represents zero or more characters) 가장 많이 사용하고 기본적인 와일드카드이다. 모든 문자를 포함하고 없는 경우도 해당된다. ex) SELECT * FROM tb_test WHERE name LIKE '%동%' 결과) 이동건 김동곤 박동 동숙 _ (Represents single character) 해당하는 문자만큼의 와일드카드이다. DB를 관리하다 보면 테이블명에 '_'를 많이 사용하게 되는데 이 때문에 곤란한 경우가 있다. ex) SELECT * FROM tables WHERE name LIKE 'tb_%' 결과) tb_test tb_item tbs 위과 같이 tb_로 시작하는 것을 조건으로 걸고 싶었지만 결과는 '_'를 와일드카드로 인식하여 의도하지 않은 결과를 출..

MSSQL Linked server(연결된 서버)
컴퓨터 공부/SQL 2023. 8. 14. 22:47

Linked Server는 SQL server에서 제공하는 기능 중 하나이며, Linked Server를 사용하면 SQL Server 인스턴스 외부의 DB 데이터 원본에 대해 명령을 실행할 수 있도록 연결된 서버를 구성할 수 있다. 즉, 이를 통해 SQL Server 외부에서 데이터를 액세스 할 수 있게 된다. 따라서 용도에 따라 DB서버가 분리되어 있을 때 데이터 조회 시에 각각의 Server에서 진행할 필요없이 Linked Server를 통해 한 번에 조회가 가능하다. Linked Server의 데이터를 불러오는 가장 대표적이고 간단한 방법은 From절의 조회하고자 하는 테이블명 앞에 Linked Server 별칭을 붙여주는 것이다. 하지만 Linked Server를 위와 같은 방법으로 사용하면 성능..

MySQL 사용자 권한 부여 명령어(GRANT)
컴퓨터 공부/SQL 2023. 8. 10. 21:03

우선 MySQL에서 계정 및 접속 권한에 대한 정보를 확인하기 위해서는 내장되어있는mysql 데이터베이스의 user 테이블에서 사용자에 대한 정보를 조회할 수 있다. 사용자 권한을 부여하기 위해서는 grant 옵션을 사용해야하며 기본 명령어는 다음과 같다. GRANT 권한 ON [데이터베이스명.테이블명] TO [사용자@호스트] IDENTIFIED BY '비밀번호' [WITH GRANT OPTION] ; 여기서 사용자는 쉽게 말해 id 개념이고 호스트는 접속 ip정보이다. 따라서 호스트 정보에 localhost라고 하면 DB가 설치되어 있는 ip로만 접속이 가능하다는 것이며, %는 모든 ip에서 접속이 가능하다는 것을 의미한다. 만약 특정 계정과 동일한 권한을 부여하기위해 권한을 조회하기 위해서는 아래의 ..