[바미] MySQL SELECT된 결과를 INSERT하기
·
MySQL(DB)
INSERT INTO 목표테이블 (컬럼1, 컬럼2, ..., 컬럼N) SELECT 컬럼1, 컬럼2, ..., 컬럼N FROM 출처테이블 WHERE 조건; 위와 같은 패턴을 가지고 있는데요. 서로 다른 테이블에 INSERT 할 때 INSERT INTO new_users (id, name, email) SELECT id, name, email FROM users WHERE active = 1;​ users 테이블에서 활성 상태인 사용자들의 id, name, email 정보를 선택하여 new_users 테이블에 삽입되는 예시입니다. INSERT INTO orders_analysis (order_id, order_date, customer_id, total_amount) SELECT order_id, order..
[바미] 트랜잭션 데드락(Transaction DeadLock)
·
MySQL(DB)
Transaction 트랜잭션은 하나의 작업을 수행하는데 필요한 데이터베이스의 연산을 모아놓은 것으로 데이터베이스 작업의 단위라고 생각하면 됩니다. 일반적으로 데이터베이스의 연산은 SQL문으로 이루어져 있으며 트랜잭션을 SQL문의 집합이라고도 합니다. 트랜잭션에서 중요한 것은 트랜잭션 단위로 구분해서 모두 성공하거나 실패해야 데이터베이스의 일관성을 유지할 수 있다는 것입니다. (트랜잭션 특징中) Transaction Update 트랜잭션에서 UPDATE작업을 할 때 처리과정은 아래와 습니다. UPDATE TABLE SET A = 300 WHERE A_ID = 201; 위의 쿼리를 실행하면 행 레벨 Lock UNDO SEGMENT Buffer 확보 및 정보 기록 데이터 UPDATE COMMIT & 행 Un..
[바미] MySQL 트랜잭션과 락 - InnoDB 락, 이렇게 동작한다!
·
MySQL(DB)
트랜잭션과 락(Transaction, Lock) 트랜잭션과 락 트랜잭션 : 논리적인 작업 단위로 전부 처리되거나 처리되지 않는 (commit/rollback) 원자성을 보장하기 위한 기능이다. 락 : 서로 다른 작업에서 같은 자원을 동시에 필요로 할 때 자원 경쟁이 일어나는데, 이때 순서대로 사용되는 동시성을 보장하기 위한 기능이다. MySQL에서 사용되는 락(LocK)은 크게 MySQL 엔진 레벨의 락과 스토리지 엔진 레벨의 락으로 나눠볼 수 있다. 스토리지 엔진 레벨의 락 스토리지 엔진(InnoDB)에서 제공하는 락(Lock, 잠금)이 있다. 기본적으로 비관적 락(Pessimistic locking)을 사용한다. 비관적 락 : 트랜잭션에서 변경하려는 레코드에 대해 락을 획득하고 쿼리를 수행하는 방식 ..
MySQL 인덱스에 대해서
·
MySQL(DB)
안녕하세요. 오늘은 인덱스에 대한 정리를 해볼까 합니다. 인덱스라는 단어는 DB를 다루시거나 공부해보신 분들이라면 한 번쯤은 들어보셨을거라 생각됩니다. 하지만 인덱스가 무엇인가요? 라는 질문에 답변에 "아~ DB에서 쓰는 그거!" 라고 하신 경험 있으실겁니다. 그런 분들에게 제 글이 도움이 되었으면 좋겠습니다. 인덱스(Index)란? 사전적인 의미로는 데이터베이스에서 검색 속도를 향상시키기 위한 데이터 구조로 정의 되어 있지만 쉽게 설명하면 일종의 책 뒤의 찾아보기나 책 앞의 목차의 개념으로 이해하면 돼요. 데이터베이스 테이블에 존재하는 컬럼(열)들의 값을 기반으로 생성되고, 이 값들을 정렬하고 효율적인 검색을 가능하도록 만드는 역할을 가지고 있습니다. 데이터베이스의 테이블에 대한 빠른 검색 및 조회를 ..
[바미] workbench에서 readonly 해제하기
·
MySQL(DB)
SELECT * FROM 테이블; 형태로 테이블을 조회할 때 위의 그림처럼 Read Only가 뜰 때는 조회하는 테이블에 pk(primary key)가 지정되지 않아 발생하는 문제입니다. 그러므로 PK를 지정해주시면 되겠습니다. ALTER TABLE `table`.`readonly` ADD PRIMARY KEY (`no`);
[바미] 데이터 베이스 서버 성능 튜닝
·
MySQL(DB)
서버 성능 튜닝 데이터베이스 서버 성능 튜닝은 성능 이슈를 해결하기 위해 수행되는 과정을 말하는데 아래와 같은 과정으로 진행하고 있습니다. 성능 모니터링: 서버의 리소스 사용량과 성능 지표를 수집하여 이를 통해 성능 이슈를 파악합니다. 성능 분석: 수집된 데이터를 분석하여 성능 이슈가 발생하는 원인을 파악합니다. 성능 최적화: 성능 이슈의 원인을 파악한 후 성능 최적화를 위한 적절한 조치를 취합니다. 이를 위해 데이터베이스 설정 및 쿼리 최적화, 인덱스 생성 및 관리, 캐시 전략 등을 적용합니다. 캐시 최적화: 데이터베이스 서버에서 사용되는 캐시 정책을 최적화하여 쿼리 성능을 개선할 수 있습니다. 쿼리 최적화: 쿼리문을 최적화하여 성능을 개선할 수 있습니다. 하드웨어 업그레이드: 하드웨어 사양을 업그레이..
[바미] 데이터 베이스 트랜잭션 관리
·
MySQL(DB)
데이터 베이스 트랜잭션 관리란, 데이터베이스에서 수행하는 여러 개의 작업들을 하나의 논리적 단위로 묶어서 처리하는 것을 말합니다. 트랜잭션은 ACID(Atomicity, Consistency, Isolation, Durability)라는 4가지 속성을 가지고 있습니다. 원자성(Atomicity): 트랜잭션은 원자적으로 수행되어야 하며, 트랜잭션 안의 모든 작업들이 한꺼번에 성공하거나, 실패해야 합니다. 일관성(Consistency): 트랜잭션이 수행되면서 데이터베이스의 정합성을 유지해야 합니다. 격리성(Isolation): 트랜잭션끼리는 각자 독립적으로 수행되어야 합니다. 내구성(Durability): 트랜잭션이 성공적으로 완료되더라도 (시스템 실패가 일어나더라도) 그 결과가 데이터베이스에 계속 유지되어..
[바미] 데이터베이스 로드 밸런싱
·
MySQL(DB)
데이터베이스 로드 밸런싱 은데이터베이스 서버들 사이에서 요청 트래픽을 균등하게 분산시켜 성능을 향상시키는 기법입니다. 이를 통해 하나의 서버가 과도한 부하를 받는 것을 방지하고, 서비스 이용자들에게 빠른 응답을 제공할 수 있습니다. 데이터베이스 로드 밸런싱은 주로 두 가지 방식으로 이루어집니다. 하나는 DNS 로드 밸런싱(Domain Name System Load Balancing)이며, 다른 하나는 데이터베이스 로드 밸런서(Database Load Balancer)를 사용하는 것입니다. DNS 로드 밸런싱 데이터베이스 서버들의 IP 주소를 가지고 있는 DNS 서버를 통해 요청 트래픽을 분산하는 방식입니다. 장 단점 이 방식은 구성이 간단하지만, 서버의 상태를 고려하지 않아 서버 추가 및 제거를 할 때마..
[바미] 데이터 베이스 분산 방법
·
MySQL(DB)
데이터 베이스 분산 데이터베이스 분산은 데이터베이스를 여러 개의 노드로 분산하여 관리하는 기술입니다. 이를 통해 데이터베이스의 성능과 확장성, 가용성을 향상시킬 수 있습니다. 주로 논리적 분산과 물리적 분산 두 가지 방식으로 이루어집니다. 데이터 베이스 분산은 단일 서버에서 데이터 베이스를 관리하는 것보다 요청 처리량을 향상시킬 수 있지만 관리 및 유지보수 비용이 더 높아지는 단점이 있습니다. 그래서 적절한 용도에 따라 데이터베이스 분산을 사용하면 요청 처리량을 향상시키며, 시스템의 가용성을 높일 수 있지만, 관리 및 유지보수 비용이 더 높아지므로 신중하게 검토해야 합니다. 논리적 분산과 물리적 분산은 데이터베이스를 관리하는 방식에서 차이가 있는데 이 둘에 대해 살펴 보겠습니다. 논리적 분산 논리적 분산..
Bami
'MySQL(DB)' 카테고리의 글 목록 (2 Page)