본문 바로가기

computer science63

기본키를 in 조건에 넣었을 때 full scan 되는 현상(range_optimizer_max_mem_size) mysql version : 8.0.31 사내에서 prisma interactive transaction의 타임아웃을 60초로 설정하여 사용하고 있다. 하지만 트랜잭션에서 수행되는 로직이 60초를 넘어 time out이 발생하는 일이 간헐적으로 발생했다. 단순히 트랜잭션의 time out 시간을 늘려도 되지만, 어떤 쿼리가 왜 오래 걸리는지 확인해 보았다. prisma query log 옵션을 줘서 쿼리 실행시간을 측정했을 때 아래의 쿼리가 오래 걸리는 것을 확인할 수 있었다. 해당 테이블에 있는 row수는 5571220개 이다. explain SELECT * FROM CourierInvoice WHERE id IN (....) in에 들어가는 변수 10302개 기준으로 16s가 소요되었다. innodb.. 2023. 12. 6.
[데이터 베이스] MySQL트랜잭션 격리수준 트랜잭션의 문제점 여러 트랜잭션이 실행되면서 데이터 불일치에 대한 문제가 발생하게 됩니다. 이런 문제가 없으면 좋겠지만은 여러 트랜잭션이 하나의 데이터를 공유하기 때문에 발생할 수 밖에 없는 문제 입니다. 여러 트랜잭션이 실행되면서 발생할 수 있는 데이터 불일치 문제에는 DIRTY READ, NON REPEATABLE READ, PHANTOM READ가 있습니다. DIRTY READ A트랜잭션의 작업 내용이 완료(commit)되지 않았는데, 그 내용을 B트랜잭션에서 볼 수 있는 현상. A트랜잭션에서 B트랜잭션이 commit하지 않은 데이터를 조회하여 작업 후 commit하였습니다. 이때 만약 B트랜잭션이 롤백된다면, 결국 A트랜잭션은 잘못된 데이터를 사용하여 commit하게 됩니다. 사실 생각해보면 DI.. 2022. 11. 7.
[네트워크] TCP/IP 4 Layer TCP/IP 프로토콜은 명칭 그대로 TCP와 IP 두 가지의 프로토콜을 주축으로 한 프로토콜 집합입니다. 주축이라고 하지만 TCP를 반드시 사용해야 하는 것은 아니며 IP는 통신 상대 지정 시에 IP 주소를 사용하기 때문에 반드시 필요합니다. OSI 참조 모델에서는 7계층으로 분할했지만 TCP/IP에서는 반드시 이 7계층이 분명하게 나뉘어지는 것은 아닙니다. TCP/IP 4계층 모델등으로 불리며 OSI 7계층의 1~2 계층을 모아서 링크 계층, 5~7계층을 모아서 애플리케이션으로 취급합니다. TCP/IP 모형은 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약(프로토콜)의 모음으로 각 계층은 담당하는 위치마다 처리 역할을 구분해 진행함으로 서로 간의 간섭을 최소화하여 사용의 편리성을 높.. 2020. 12. 12.
[알고리즘] 구간 합(prefix sum) 구간 합 알고리즘은 1차원배열에서 i ~ k번째 사이의 값들의 합을 구하는데 사용합니다. 단순히 for문을 사용하여 i~k사이의 값을 더해가면서 할 수도 있지만 이 경우 시간복잡도는 O(N)입니다. 하지만 구간 합 알고리즘의 경우 O(1)성능을 가집니다. 그리고 sum[]이라는 배열을 사용하는데, 이 배열은 현재 인덱스까지의 총 합을 저장하게 됩니다. j번째 바로 앞까지의 총합에 arr[j]번째 값을 더하면 j번째까지의 총합을 의미하기 때문에 이 값은 sum[j]에 저장하며 이는 sum[j] = sum[j-1] + arr[j]가 됩니다. 이후 5,8의 구간합을 구하기 위해서는 sum[8] - sum[5-1]로 한번에 구할 수 있습니다. #include using namespace std; int main.. 2020. 9. 25.