백엔드/SQL

[SQL] Stored procedure (1)

leejiwoo21 2021. 12. 4. 03:30

Stroed procedure

 

- Stored procedure은 SQL 서버 안에 있는 트랜젝션 SQL문의 집합입니다.

 

- Stored procedure은 named object로 데이터베이스 서버에 저장됩니다.

 

- Procedures는 다른 프로그래밍 언어의 구문과 유사합니다.

> 인자를 받아서 여러 형태의 값들을 호출한 함수에 반환합니다.

> 데이터베이스에서 실행하는 프로그래밍 statement도 포함하고, 다른 procedure를 호출하는 statement도 포함합니다.

> 호출한 함수에 성공 또는 실패 여부를 반환합니다.(실패 이유를 반환하기도 합니다)

 

 

Stored Procedure를 사용하면 좋은 점

 

1. 서버/클라이언트 네트워크 트래픽 감소

- procedure의 명령은 하나의 batch로 실행됩니다.

 

- 실행할 procedure만 네트워크로부터 받기 때문에 서버와 클라이언트 사이의 네트워크 트래픽이 감소합니다.

 

- procedure로 캡슐화 되지 않은 코드들은 각각의 코드가 한 줄씩 네트워크에서 넘어와야 합니다.

 

2. 강력한 보안

- 많은 유저와 클라이언트 프로그램은 procedure를 통해 허가받지 않더라도 데이터베이스 객체에 연산을 사용할 수  있습니다.

 

- procedure은 어떤 과정과 기능들이 사용되는지 컨트롤하고 데이터베이스 객체들을 보호하는데, 이것은 각 객체 

단위 의 허가를 하지 않아도 되게 하고, 이것은 보안 계층을 단순하게 합니다.

 

- 네트워크에서 procedure를 호출할 때 실행할 procedure만 볼 수 있고, 악의적인 사용자가 다른 중요한 데이터에

접근 하지 못하게 합니다.

 

- procedure 인자를 사용하는 것으로 SQL injection 공격을 방어하는데 도움이 됩니다.

 

- procedure은 암호화 할 수 있고, 소스 코드를 해독하기 어렵게 만듭니다.

 

3. 코드의 재사용

- 반복해야할 모든 데이터베이스의 연산들이 procedure에 캡슐화 되어있습니다.

 

- 같은 코드를 다시 쓸 필요가 없어지고, 코드의 불일치를 줄일 수 있습니다.

 

4. 쉬운 유지보수

 

5. 성능 향상

 

 

 

Stored Procedure의 종류

 

Temporay Stored Porcedure

- user-defind procedure의 형태이다

- 영구적인 procedure이라서, temp데이터베이스에 저장된다.

- local 과 global procedure로 나뉜다.

> local temporay procedure은 하나의 number sign(#)을 갖고,

   Global temporary procedure은 두 개의 number sign(##)을 갖는다

 

System Stored Procedure

- SQL 서버에 포함되어 있다.

- 내부에 물리적으로 저장되어있다.

 

Extended User-Defined Stroed Procedure

- 확장된 procedure은 프로그래밍 언어의 external routine을 만들 수 있다.

 

User_Defined Stroed Procedure

- Resource database를 제외한 모든 시스템 데이터베이스와 user-defined database에서 생성될 수 있다.

 

 

 

System Procedure Examples

 

execute(= exec) : stored procedure를 실행할 때 사용한다.

 

sp_databases : 데이터베이스 테이블을 반환

 

sp_tables : 테이블 정보 테이블을 반환

 

sp_columns : 현재 환경의 객체들의 컬럼정보를 반환 

 

sp_pkeys : 현재 환경에서 단일 테이블의 기본키 정보를 반환

 

sp_attach_db : 서버에 데이터베이스를 붙인다

 

sp_dettach_db : 서버에서 데이터베이스를 때어낸다.

 

sp_server_info : 서버의 정보를 제공한다.

 

sp_who : SQL 서버 데이터베이스 엔진의사용자, 세선, 프로세스 정보를 제공한다. 

반응형