Database

1. 문제점 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) { parent: TimeoutError: Operation timeoutat Timeout. (/app/node_modules/sequelize-pool/lib/Deferred.js:17:25)at listOnTimeout (node:internal/timers:573:17)at process.processTimers (node:internal/timers:514:7), original: TimeoutError: Operation timeoutat Timeout. (/app/node_modules/sequelize-pool/lib/Deferred.j..
----https://reinvestment.tistory.com/66 세팅설명https://devblog.lazyig.com/36/ : 권한설명----npm init -y npm i sequelize pg sequelize-cli postgres 패키지 설치 후 sequelize init { "development": { "username": "jihoon", "password": "jihoon", "database": "instagram", "host": "127.0.0.1", "dialect": "postgres" }, "test": { "username": "root", "password": null, "database": "database_test..
·Database
1. 인덱스 인덱스는 데이터베이스 사용자가 지정한 컬럼들을 메모리 영역에 두고 빠르게 가져다 쓰려고 생성하는 것이다. 읽기(Select Query) 성능을 향상시키기 위해 Insert, Update, Delete의 성능을 희생한 것이라고 보면 된다. 왜냐하면 읽기 성능을 위해 전체 메모리 100중에 인덱스로 20만큼 할당했다면, 쓰기 쿼리를 위한 메모리 할당량은 최대 100에서 80으로 줄어들었기 때문이다. 다만, 쓰기를 위해 해당 데이터를 Select하고 해당 작업을 하는 것은 인덱스가 있으므로 속도가 올라가게 된다. 인덱스를 사용 안하고 쌩으로 데이터베이스에서 데이터를 Read하는 작업은 하위 노드가 더 계층적일수록 성능이 떨어진다. 비정규화를 많이 해서 잘게 쪼개놓으면 많은 join을 해야하니 읽기..
·Database
메모리 영역은 글로벌 메모리 영역과 로컬 메모리 영역으로 나뉜다. 글로벌 메모리 영역 글로벌 메모리는 클라이언트 스레드의 수와 무관하게 하나의 메모리 공간만 할당된다. 필요에 따라 2개 이상 할당받을 수도 있지만, 클라이언트 수와는 전혀 무관하다. 생성된 모든 글로벌 메모리는 모든 스레드에 의해 공유가 된다. 대표적인 글로벌 메모리 영역은 아래와 같다. Inno DB 버퍼 풀 Inno DB Change 버퍼 : InnoDB 스토리지 인덱스 페이지의 변경을 메모리에 저장하고 flush하여 디스크에 저장하도록 만드는 기능 Inno DB 로그 버퍼 : 트랜잭션의 변경사항을 임시로 저장하는 역할 MyISAM 키 캐시 : MyISAM 스토리지에서 사용되는 메모리 버퍼로 인덱스를 디스크에서 메모리로 로드하여 캐싱하..
·Database
mysql -u root -p --host=127.0.0.1 mysql -u root -p --host=localhost 데이터베이스에 접속하다보면 위처럼 혼용하여 사용하곤 한다. 그래서 비교해보고자 한다. 127.0.0.1 ip주소가 나와있는것을 보면 유추가 되듯, TCP/IP를 통해 MySQL에 접속하는 것이다. 네트워크 인터페이스와 연관된 호스트로 로컬 Loopback을 이용하여 IP를 찾아서 로컬호스트에 접속하는 것이다. TCP/IP(Transmission Control Protocol/Internet Protocol) 통신이란? OSI 7계층 모델을 대체하며 4계층으로 구성된다(애플리케이션, 전송, 네트워크, 링크 계층) 네트워크 연결 과정을 거쳐 통신을 하기 때문에 다른 위치에 컴퓨터가 있어도..
·Database
DB별 대기열 관리 비교 MySQL: Postgresql과 다르게 기본 옵션이 대기열을 사용하지 않는 On-Demand 방식을 사용합니다. 8.0 버전부터 connection pool 기능을 제공하지만, 이는 옵션으로 활성화 가능한 대기열 방식입니다. On-demand는 요청이 들어왔을 때 새 연결을 실행하여 클라이언트에게 할당합니다. 따라서 지연이 발생할 수 있으며, 요청이 들어올때마다 만드므로 서버 부하가 증가합니다. connection pool은 미리 생성된 연결을 저장하고 필요에 따라 클라이언트에 할당합니다. 따라서 지연을 줄일 수 있으며, 서버가 동시에 처리할 수 있는 연결 수를 제한하다보니 부하를 줄일 수 있습니다. PostgreSQL: shared buffers라는 미리 초기화된 대기열을 사..
·Database
FLUSH [NO_WRITE_TO_BINLOG | LOCAL] { flush_option [, flush_option] ... | tables_option } flush_option: { BINARY LOGS | ENGINE LOGS | ERROR LOGS | GENERAL LOGS | HOSTS | LOGS | PRIVILEGES | OPTIMIZER_COSTS | RELAY LOGS [FOR CHANNEL channel] | SLOW LOGS | STATUS | USER_RESOURCES } tables_option: { table_synonym | table_synonym tbl_name [, tbl_name] ... | table_synonym WITH READ LOCK | table_synony..
·Database
1. MySQL Buffer Pool이란? MySQL 버퍼 풀은 InnoDB 스토리지 엔진에서 사용하는 메모리 영역으로, 자주 사용되는 테이블 데이터와 인덱스 페이지를 캐싱하여 쿼리 성능을 향상시킵니다. 즉, 디스크에서 데이터를 읽는 대신 메모리에서 직접 데이터에 접근하여 훨씬 빠른 속도로 쿼리를 처리할 수 있게 해줍니다. 버퍼 풀의 주요 기능: 데이터 캐싱: 자주 사용되는 테이블 데이터와 인덱스 페이지를 메모리에 저장하여 디스크 I/O 작업을 줄임 쿼리 성능 향상: 디스크 접근 시간이 훨씬 느린 것에 비해 메모리 접근 속도가 훨씬 빠르기 때문에 쿼리 처리 속도를 크게 향상 데이터 접근성 향상: 버퍼 풀에 캐시된 데이터는 디스크에 저장된 데이터보다 훨씬 빠르게 접근할 수 있음 기록 순서 조정 : 데이터 ..
알면 알 수록 재밌다!
'Database' 카테고리의 글 목록