본문 바로가기

DataBase/MySQL17

[MySQL] concurrency control 기초1 (schedule, serializability) 참고 자료 유투브 쉬운코드 동시성 제어여러가지 트랜잭션 실행 케이스 트랜잭션1 K가 H에게 20만원 입금  트랜잭션2 H가 자신 계좌에 30만원 입금  해당 2개의 트랜잭션은 여러 형태의 실행이 가능할 수 있다.  CASE1 CASE2 CASE3 CASE4 (Lost Update)operation 실행된 각 쿼리를 의미한다.  각 CASE를 operation 간소화 r1(K) 의미: READ / 트랜잭션1 / K 계좌 c1 의미: 트랜잭션1 commit Schedule 개념 여러 트랜잭션들이 동시에 실행될 때 각 트랜잭션에 속한 operation들의 실행 순서각 트랜잭션 내의 operations들의 순서는 바뀌지 않는다. Serial Schedule 개념 CASE1, CASE2 같이 동시에 실행된 트랜잭.. 2024. 11. 13.
[MySQL] 트랜잭션과 ACID 참고 자료유투브 쉬운코드 트랜잭션과 ACID트랜잭션 개념이체로 배워보는 트랜잭션 개념  A: 100만원 B: 200만원  A → B 에게 20만원 송금  그럼 2개의 SQL문을 사용한다. 1. A 계좌 20만원 감소 UPDATE account SET balance = balance - 200000 WHERE id = 'A';2. B 계좌 20만원 증가 UPDATE account SET balance = balance + 200000 WHERE id = 'B'; 이 2가지 SQL문 중에서 1개의 SQL만 실패해도 이상한 결과가 나온다.  EX)1번 성공 2번 실패: A 계좌에서 20만원만 증발1번 실패 2번 성공: B 계좌는 20만원 증가했지만 A 계좌는 그대로 유지  즉 이런 이체 작업은 둘 다 정상 처.. 2024. 11. 13.
[MySQL] 트리거 trigger 참고 자료유투브 쉬운코드 SQLtriggerSQL Trigger?데이터에 변경이 생겼을 때 DB에 insert, update, delete가 발생했을 때 이것이 계기가 되어 자동적으로 실행되는 프로시저(procedure)를 의미 SQL Trigger 예제1유저의 닉네임을 바꾸면(update) 유저의 이름을 기록하는 로그에 이전 이름을 INSERT 하는 트리거를 만들어 보자 users, nickname_logs 테이블 CREATE TABLE users ( id int primary key auto_increment, nickname varchar(20) not null);CREATE TABLE nickname_logs ( id int primary key auto_increment, .. 2024. 11. 12.
[MySQL] 스토어드 프로시저 stored procedure 참고 자료 유투브 쉬운코드 stored procedurestored procedure?Stored Procedure는 여러 개의 SQL 문을 모아 놓은 하나의 작업 단위로, 특정 작업을 수행하기 위해 데이터베이스에 저장된다. 반환값이 없거나 1개 이상도 가능하다. OUT 파라미터로 설정 stored function은 무조건 1개를 반환 stored procedure 예제1 (IN, OUT)두 정수의 곱셈 결과를 가져오는 프로시저를 작성하자 프로시저 생성 DROP PROCEDURE IF EXISTS product;delimiter $$CREATE PROCEDURE product(IN a int, In b int, OUT result int)BEGIN SET result = a * b;END$$deli.. 2024. 11. 12.
[MySQL] 스토어드 함수 stored function 참고 자료 유투브 쉬운코드 stored function stored function? 사용자가 정의한 함수DBMS에 저장되고 사용되는 함수 SELECT, INSERT, UPDATE, DELETE statement 에서 사용할 수 있다.stored function 예제11. 임직원의 ID를 열자리 정수로 랜덤하게 발급하고 싶다 2. ID의 맨 앞자리는 1로 고정이다.  delimiter DELIMITER는 MySQL과 같은 데이터베이스 시스템에서 사용되는 명령어로, SQL 문에서 기본 구분자인 세미콜론(;) 외에 다른 구분자를 설정하고, 이후 다시 기본 구분자로 돌아가는 데 사용된다.  쿼리 (id_generator 생성)delimiter $$CREATE FUNCTION id_generator()RETUR.. 2024. 11. 12.
[MySQL] RealMySQL 8.0 4.1 MySQL 엔진 아키텍처 참고 자료 RealMySQL 8.0 1권 - 백은빈, 이성욱 지음해당 글은 책에서 나오는 내용을 나중에 편하게 보기 위해서 요약한 내용이다. 04장 아키텍처 MySQL 서버는 사람의 머리 역할을 하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분할 수 있다.스토리지 엔진은 핸들러 API를 만족하면 누구든지 스토리지 엔진을 구현해서 MySQL 서버에 추가해서 사용할 수 있다.MySQL 엔진, MySQL 서버에서 기본으로 제공하는 InnoDB 스토리지 엔진,  MyISAM 스토리지 엔진에 대해서 알아보자 4.1 MySQL 엔진 아키텍처 MySQL 접근 방법 지원 MySQL은 일반 사용 RDBMS와 같이 대부분의 프로그래밍 언어로부터 접근 방법을 모두 제공한다.JDBC, ODBC, .NET의 .. 2024. 11. 11.