DataBase/MSSQL 9

인덱스의 개념과 성능이 향상되는 이유/유의사항 (With SSMS)

실제 현업에서 몇억 개의 row를 가진 테이블에 적절한 인덱스를 추가했더니, 조회 시간이 수십 초에서 몇 초 이내로 대폭 감소한 경험이 있었다. 이런 현상은 대용량 데이터베이스 성능 최적화의 대표적인 사례로, 인덱스가 어떻게 데이터베이스에서 성능을 향상시키는지 보여준다. 이번 포스팅에서는 인덱스의 개념과 성능이 향상되는 이유를 SQL Server Management Studio(SSMS) Version 16을 중심으로 정리해보고자 한다.  1. 인덱스란?데이터베이스에서 인덱스(Index)는 특정 데이터를 빠르게 찾기 위해 사용되는 구조로, 책의 색인 역할을 한다고 볼 수 있다. 데이터베이스 테이블은 수백만, 수억 개의 데이터를 포함하고 있을 수 있으며, 인덱스는 이러한 대용량 데이터를 효율적으로 조회하는..

DataBase/MSSQL 2024.09.19

[MSSQL] SQL Server 문자열 데이터 타입: `varchar`와 `nvarchar`의 차이점 및 사용 가이드

SQL Server에서는 문자열 데이터를 저장할 수 있는 다양한 데이터 타입을 제공한다. 이 중에서 `varchar`와 `nvarchar`는 가장 많이 사용되는 타입이다.  이 글에서는 `varchar`와 `nvarchar`의 차이점, 다른 대표적인 문자 타입과의 비교, 길이 선언 방법, 그리고 실제 사용 시 권고사항을 다룬다.   1. `varchar`와 `nvarchar`의 차이점- `varchar` (Variable Character):   - 비-Unicode 지원: 주요 영어와 같은 단일 언어의 문자열 데이터를 저장할 때 사용한다.   - 저장 크기: 각 문자는 1바이트를 사용한다. 예를 들어, `varchar(20)`은 최대 20바이트를 차지한다.   - 사용 사례: 영어 텍스트, 로그 데이터..

DataBase/MSSQL 2024.07.26

[MSSQL] SQL Server에서 sa 계정을 잃어버렸을 때 복구 방법

관리하고 있는 SQL Server DB의 sysadmin권한을 가진 계정이 없고, 심지어 sa계정이 비활성화 상태이다..(비유하자면 전에 금고를 관리하던분이 관리하던 키와 함께 어디론가 사라진 그런 상황이다) 이런 답이 없는 상황을 어떻게 풀어나갈 수 있을까?    오늘은 SQL Server의 sa 계정이 비활성화된 경우, 권한을 복구하기 위한 절차를 설명한다. 이 포스팅에서는 SQL Server를 단일 사용자 모드로 설정하여 sa계정을 활성화하고 비밀번호를 변경하는 방법을 중점적으로 설명하고자 한다. *시스템 환경Database: SQL Server (v15.0.2000)운영체제: Window Server 2019    1. SQL Server 단일 사용자 모드에서 권한 복구단일 사용자 모드를 사용하여..

DataBase/MSSQL 2024.07.20

[MSSQL] 특정 테이블 열을 참조하는 모든 외래키를 탐색하는 방법

SQL Server의 특정 테이블 열을 참조하는 모든 외래 키 제약 조건을 찾으려면 시스템 카탈로그 뷰를 쿼리하면 된다. 다음은 특정 테이블의 특정 열을 참조하는 모든 외래 키 제약 조건을 보여주는 쿼리 예시이다.DECLARE @TableName NVARCHAR(128) = '';DECLARE @ColumnName NVARCHAR(128) = '';SELECT fk.name AS ForeignKeyName, tp.name AS ParentTable, cp.name AS ParentColumn, tr.name AS ReferencedTable, cr.name AS ReferencedColumnFROM sys.foreign_keys AS fkINNER JOIN sy..

DataBase/MSSQL 2024.07.13

[MSSQL] 테이블 내 Auto Increment(SERIAL Number) 컬럼 만들기

MSSQL에서 테이블을 생성할 때, Postgresql에서 SERIAL 타입과 같이 자동으로 값이 1씩 증가되어 입력되는 컬럼을 생성해보자.    1. 테이블 생성 혹은 수정 시, 설정할 컬럼의 Data Type을 숫자형(ex: int)로 지정해준다.  2. 해당 컬럼을 클릭하여, Column Properties에서 "Identity Specification" 항목을 찾는다   3. 해당 값 중 Is Identity 항목을 Yes로 수정하고, 증가값(Increment), 초기값(Seed)을 지정해준다.   (기본값은 사진과 같이 Identity Increment: 1, Identity Seed: 1이다.)   이렇게 설정하고 저장하면 적용된다.바로 테스트해보자.    확인해보면 다음과 같이 자동으로 증가..

DataBase/MSSQL 2024.06.02

[MSSQL] 컬럼 수정시 ”Saving changes is not permitted.” 에러가 뜰경우

1. 상황 MSSQL에서 테이블을 수정하려고 하면 아래의 에러가 나오는 경우가 있다. MSSQL 공식 홈페이지에 따르면, 이는 다음과 같은 경우에 발생한다. 컬럼의 널 허용 옵션을 수정할 경우 컬럼의 정렬 순서를 변경할 경우 컬럼의 데이터 타입을 변경할 경우 새로운 컬럼을 추가했을 경우 테이블의 filegroup이나 해당 text/image 데이터를 변경할 경우 테이블의 메타데이터 구조를 변경하기 위해 테이블을 변경한 다음 테이블을 저장하는 경우 이러한 변경 사항에 따라 테이블을 다시 만들어야 한다. 이로 인해 테이블을 다시 생성하는 동안 메타 데이터가 손실되고 데이터가 직접 손실될 수 있기에, 위를 옵션으로 선택할 수 있게 둔 후, 기본적으로 막아준다고 한다. (하지만 필자가 현업에서 위 옵션을 비활성..

DataBase/MSSQL 2024.04.13

[MSSQL] 특정 Table을 사용하는 Procedure 조회하기

특정 테이블을 사용하는 모든 Stored Procedure를 찾는 일은 데이터베이스 유지 보수 및 의존성 분석에 중요하다.   SQL Server에서 특정 Table를 사용하는 Procedure를 검색해보자. 아래의 쿼리로 검색을 하면 된다.SELECT A.name, B.name AS 'schema', create_date, modify_dateFROM sys.procedures AINNER JOIN sys.schemas B ON A.schema_id = B.schema_idWHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%%' 실행하면 위의 에 준 텍스트가 포함된 모든 procedure 목록들이 출력된다.(프로시저 이름과, 스키마명, 생성날짜와 업데이트된 날짜를 표시한다.) 이..

DataBase/MSSQL 2024.04.13

[MSSQL] 대량의 Data를 DB에 삽입하는 방법

1. 개요 매일 자정마다 수많은 데이터를 가진 Table을 원격 DB에서 끌어다 와서 관리하는 DB로 복제하는 작업을 수행해야 했다. 하지만 매일 자정마다 복제하는 데이터의 크기가 자그마치 10~20만개 수준이었고, 이를 일일히 insert하면 약 16시간이라는 절망적인 퍼포먼스를 낳게 되어, 개선 방안을 강구하게 되었다. 2. 1차 개선 방법 우선은 현재 관리하는 DB와 원격 DB의 데이터들 중에 동일한 데이터들은 복제를 하지 않아도 된다. 이를 이용하여 원격 DB에서 가져온 데이터와 현재 관리하는 DB에서 가져온 데이터를 대조하여, 코드상에서 완전히 동일한 레코드는 C#코드에서 필터링 하는 로직을 추가하였다. 하지만 이는 추가적인 시간 소모를 불러일으켰다. 복제할 데이터들과 원본 데이터가 각각 10만..

DataBase/MSSQL 2024.03.31

[MSSQL] MSSQL이란?

1. MSSQL이란? MSSQL(MS-SQL)은 미국 마이크로소프트(Microsoft)에서 개발한 관계형 데이터베이스 관리 시스템(RDBMS)이다. 마이크로소프트 SQL 서버(Microsoft SQL Server)라고도 한다. 윈도우(Windows) 기반의 IIS서버에서 주로 사용한다. 2. MSSQL의 특징 MSSQL은 대규모 데이터베이스 애플리케이션을 지원하는 기능적인 데이터 관리 솔루션이다. 이를 통해 사용자는 데이터를 구성, 저장, 관리하고, 데이터베이스에 대한 효율적인 액세스 및 조작이 가능하다. MSSQL은 다양한 기능을 제공하는데, ACID(원자성, 일관성, 고립성, 지속성) 트랜잭션 지원, 복제, 보안 및 접근 제어, 데이터 백업 및 복구, 데이터베이스 관리 등이 포함된다. 또한 고급 쿼리..

DataBase/MSSQL 2023.05.21
반응형