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 타입의 쿼리문의..

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를 위와 같은 방법으로 사용하면 성능..

MSSQL 로그인 계정 및 사용자 계정
컴퓨터 공부/SQL 2023. 8. 9. 20:31

MSSQL에서는 계정이 크게 로그인 계정(LOGIN)과 사용자 계정(USER)으로 나뉜다. 로그인 계정은 SQL Server에 접근하기 위한 계정이고, 사용자 계정은 DB에 접근하기 위한(작업 권한을 가지는) 계정이다. 이는 SSMS의 개체 탐색기 탭에서 명확하게 확인할 수 있다. 로그인 계정에 대한 정보는 SQL Server 아래 보안 항목에 묶여있고, 사용자 계정은 DB 아래 보안 항목에 묶여 있다. 로그인 계정과 사용자 계정을 분리시켜서 보안을 강화시킬 수 있다. 보통 작업 용이성 때문에 계정명을 DB_MANAGER, SERVER_MANAGER처럼 작업과 관련된 명칭으로 설정하는데, 로그인 계정을 다음과 같이 설정했을 경우 외부 침입이 발생했을때 해당 로그인 계정이 쉽게 타겟이 될 수 있다. 따라서..

MySQL vs MS SQL server
컴퓨터 공부/SQL 2023. 8. 8. 20:34

MySQL과 Microsoft SQL server(MS SQL)은 대표적인 관계형 데이터베이스 관리 시스템 (DBMS)이다. 각각의 DBMS는 특징 및 차이점이 있으며 이를 이해하면 업무 수행에 조금이나마 도움이 된다. MySQL 세계에서 가장 많이 사용되는 오픈 소스 DBMS 중 하나이다. 정확하게는 최초에는 오픈 소스로 개발되었지만 제작사가 오라클로 인수되면서 유료화가 진행되고 약간은 오픈 소스에 호의적이지 않은 행보를 이어가고 있다. 이에 기존 MySQL 핵심 개발자가 MySQL을 기반으로 MariaDB를 개발하여 오픈소스 DBMS로 지원하고 있다. 따라서 MySQL에서 지원하는 대부분의 기능을 MariaDB에서 사용할 수 있으며, 무료 서비스라는 점에서 사용하는 업체들이 늘어나는 추세이다. MyS..