DataBase/MySQL
-
MySQL Begin 과 Start TransactionDataBase/MySQL 2022. 12. 16. 19:32
START TRANSACTION 과 BEGIN 은 모두 새로운 트랜잭션을 만듭니다. COMMIT 은 현재 트랜잭션을 commit 한다는 의미로, 해당 트랜잭션을 영구적으로 반영되게 합니다. ROLLBACK 은 현재 트랜잭션을 다시 되돌린다는 의미로, 현재 트랜잭션의 변화를 취소한다는 의미입니다. SET autocommit 은 현재 세션에 대해 자동 반영을 비활성화 시키거나 활성화 시킵니다. 기본값으로 autocommit 은 활성화 되어 있습니다. 즉, 모든 SQL 구문은 START TRANSACTION , COMMIT 에 둘러 쌓인 것처럼 모든 구문은 원자성을 가지고 있습니다. autocommit 이 켜져있는 상태에서는 ROLLBACK 은 아무런 효과가 없습니다. 단, SQL 구문이 실행 중 문제가 있다..
-
B-Tree 와 B+Tree 의 차이점DataBase/MySQL 2022. 8. 2. 23:38
B-Tree 와 B+Tree 는 더 효율적이게 원하는 데이터를 탐색할 수 있는 자료구조의 일종 으로 주로 데이터베이스의 인덱스를 사용할 때 쓰이는 알고리즘입니다. 이번 포스팅에서는 B-Tree 와 그것의 변형된 알고리즘인 B+ Tree 에 대해 알아보겠습니다. Tree 는 DB에 한정짓지 않더라도 탐색 시간을 단축할 수 있다는 장점 때문에 자주 사용이됩니다. B-Tree 의 핵심은 데이터가 정렬 된 상태로 유지되어 있다는 것입니다. B-Tree 는 위 그림과 같이 생겼습니다. Binary-Tree 라고 오해를 하지만 Balanced-Tree 를 의미합니다. 자식이 2개 이상 가능합니다. B-tree 는 균형 트리로 루트로부터 리프까지의 거리가 일정한 트리 구조입니다. 이렇게 균형을 유지할 경우 어떤 데이..
-
체인지 버퍼DataBase/MySQL 2022. 8. 2. 20:18
RDBMS 에서 레코드가 INSERT 되거나 UPDATE될 때는 데이터 파일을 변경하는 작업 뿐 아니라 해당 테이블에 포함된 인덱스를 업데이트하는 작업도 필요합니다. 이때 인덱스를 업데이트 하는 작업은 랜덤하게 디스크를 읽는 작업을 선행해야 하므로 테이블에 인덱스가 많으면 이 작업은 많은 자원을 소모하게 됩니다. InnoDB 는 변경해야 할 인덱스 페이지가 버퍼 풀에 있으면 바로 업데이트를 하지만 그렇지 않고 디스크로 부터 읽어와서 업데이트를 해야 한다면 즉시 실행하지 않고 임시 공간에 저장해 두고 바로 사용자에게 결과를 반환하는 형태로 성능을 향상 시킵니다. 이때 사용하는 임시 메모리 공간을 체인지 버퍼 라고 합니다. 하지만 유니크 인덱스의 경우 중복 여부를 체크해야 하기 때문에 체인지 버퍼를 사용할 ..
-
MySQL 변수 종류DataBase/MySQL 2022. 4. 27. 23:12
1. 사용자 지정변수 (@ 가 앞에 붙습니다.) 사용자 지정 변수(User-defined variables)는 선언하거나 초기화 하지 않고 접근할 수 있습니다. 만약 사용자 정의 변수가 초기화 되지 않았다면 string 타입의 NULL 값이 반환됩니다. SELECT @var_any_var_name SET 과 SELECT 문을 사용해서 변수를 초기화 할 수 있습니다.(MySQL 8.0 에서는 SET 을 사용해서 변수를 초기화 할 것을 권장하고 있습니다. SET 외에 변수 초기화는 향후 버전에서 삭제 될 수 있다고 합니다.) Previous releases of MySQL made it possible to assign a value to a user variable in statements other th..
-
MySQL 사용자 변수DataBase/MySQL 2022. 4. 25. 18:55
MySQL 사용자 변수 변수명 사용자 변수는 @var_name 으로 표현 됩니다. 변수 이름은 알파벳, 숫자, ., _ 및 $로 구성될 수 있습니다. 사용자 변수 이름은 대소문자를 구분하지 않습니다. 이름의 최대 길이는 64자입니다. 변수명 범위 사용자 변수는 세션에 따라 다릅니다. 특정 클라이언트는 다른 클라이언트가 정의한 사용자 변수를 보거나 사용할 수 없습니다.(하지만 performance schema 의 user_variables_by_thread 에 대한 권한이 있는 사용자는 모든 세션에서 어떤 사용자가 정의한 변수던지 다 볼 수 있습니다.) 변수 해제 클라이언트 세션에 대한 모든 변수는 해당 클라이언트가 종료될 때 자동으로 해제됩니다. 사용 예시 사용자 변수를 만들 수 있는 방법중 하나는 SE..