분류 전체보기
-
[MySQL] SQL Error Explicit or implicit commit is not allowed in stored function or trigger데이터베이스/MySQL 2022. 1. 31. 18:56
MySQL 함수를 작성하다 마주친 에러와 구글링을 하며 알게 된 사실에 대해 짧게 기록해본다. 에러 발생 원인부터 말해보자면 함수 내에서 프로시저를 호출했기 때문이었고, 함수 대신 프로시저를 사용하여 에러를 해결했다. 에러 문구에 나와있듯 Stored function 또는 트리거 내에서는 commit이 허용되지 않는다. 즉 Stored function 내부에서는 트랜잭션 작업을 수행하면 안 된다. → Stored procedure와 차이점 https://stackoverflow.com/questions/16969875/error-code-1422-explicit-or-implicit-commit-is-not-allowed-in-stored-function Error Code: 1422. Explicit ..
-
[MySQL] MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction데이터베이스/MySQL 2022. 1. 23. 18:22
개발 서버 DB에서 특정 데이터를 삭제하려고 했는데 timeout이 발생하는 이슈가 생겼다. 처음에는 단순히 내가 사용하고 있는 DB툴 문제 인가 생각했는데 아니었고, lock 걸린건가 확인해봤는데 이것 역시 아니었다. # 모든 프로세스 조회 SHOW FULL PROCESSLIST; # 락테이블 조회 select * from information_schema.innodb_locks; # 대기중인 락 조회 select * from information_schema.innodb_lock_waits; # 트랜젝션조회 select * FROM information_schema.INNODB_TRX; INNODB_TRX 테이블에서 현재 실행되고 있는 트랜잭션들을 찾았고, PROCESSLIST 테이블에서 각 trx_..
-
[Redis] 레디스를 활용한 캐시 서버 구성데이터베이스/Redis 2022. 1. 9. 18:13
틀린 내용을 발견하신 경우 말씀 부탁드립니다! 🙇 현재 다니고 있는 회사의 일부 서비스 페이지 로딩 속도가 느린 이슈가 있었고, 이를 해결하기 위하여 (근본적인 해결책은 아니지만) 레디스를 도입해 캐시 처리를 하기로 했다. 이전에 레디스를 활용하여 API 문서 자동 생성기를 만들어보긴 했으나, 사용자들이 직접 사용하는 서비스에 레디스를 적용한 것은 또 다른 느낌이라 블로그에 기록하기로 했다. 상세한 명령어나 설정 방법은 구글링을 하면 충분히 나오는 것이기 때문에 이번 작업에서 내가 배웠다고 생각한 것들만 간략히 기록하기로... 0. 왜 Redis를 사용했는가?'인메모리 저장소에는 Redis 뿐만 아니라 Memcached도 있는데 왜 Redis를 사용했나요?'라고 누군가가 물어본다면 아래와 같이 답할 것이..
-
[Javascript] Codility Lesson 5 - MinAvgTwoSlice카테고리 없음 2021. 12. 6. 01:52
문제: https://app.codility.com/programmers/lessons/5-prefix_sums/min_avg_two_slice/ 문제 요약: 배열 A가 주어지고 해당 배열을 임의로 잘랐을 때, 평균값이 최소가 되는 시작 인덱스(P)를 구하시오. (A[P] + A[P + 1] + ... A[Q]) / (Q - P + 1) 0 ≤ P < Q < N 배열 A의 요소는 −10,000 ~ 10,000 사이의 숫자 배열 A의 요소 개수는 2개 이상 100,000개 이하 처음 풀이: 시간복잡도는 O(N ** 3)이 나왔다. 배열을 처음부터 끝까지 순환하며 시작 인덱스를 지정하고, 시작 인덱스를 기준으로 개수를 한 개씩 증가시키며 평균값을 구한 뒤, 해당 평균값이 가장 작은 평균값인지 아닌지 판단하는..
-
[Javascript] Codility Lesson 4 - MissingInteger알고리즘, 자료구조/Codility 2021. 11. 22. 23:54
문제: https://app.codility.com/programmers/lessons/4-counting_elements/missing_integer/ 문제요약: N개의 요소를 갖는 배열A가 주어짐 배열 A의 요소 범위는 -100,000 ~ 100,000 배열 A의 요소에 미포함된 자연수 중 최솟값 찾기 function solution(A) { A.sort((a, b) => a - b); let min = 1; if (A[A.length - 1] min) { break; }; min = A[i] + 1; }; return min; ..
-
[Javascript] Codility Lesson 4 - MaxCounters알고리즘, 자료구조/Codility 2021. 11. 22. 01:52
문제: https://app.codility.com/programmers/lessons/4-counting_elements/max_counters/start/ 문제 요약: N개의 0으로 채워진 a배열과, 임의의 수로 채워진 b배열이 있다고 가정 b배열을 순회하며 요소의 값에 따라 a배열의 요소 + 1 (increase) b요소의 값이 N + 1이면 a배열의 모든 요소를 max 값으로 변경 (maxCounter) function solution(N, A) { let nCounter = new Array(N).fill(0); const increase = (arr, x) => { arr[x - 1] += 1; return arr; } const maxCounter = (arr) => { let max = M..
-
[MySQL] SUBSTRING_INDEX + REPLACE로 UPDATE 하려고 했다데이터베이스/MySQL 2021. 10. 24. 15:00
이번에 서비스에 추가된 내용이 있어 액션이 발생한 날짜를 업데이트해줘야 하는 작업이 필요했다. 이 과정에서 SUBSTRING_INDEX + REPLACE를 사용하여 칼럼 내용을 업데이트하려고 했던 내용을 포스팅하려고 한다. (했던...이라고 쓴 이유는 저 방법으로 못했다는 뜻이다.) 처음에 생각했던 것은 아래와 같다. 1. 칼럼의 기본 값을 '0,0,0,0,0'으로 세팅한다. 2. 액션이 발생하면 알맞은 인덱스 값을 찾아 날짜로 업데이트한다. (예를 들어 B 액션이 발생했으면 두 번째 위치에 있는 '0'을 XXXX-XX-XX 형태로 업데이트) 3. 업데이트된 데이터를 서버에서 받아 처리한 뒤 프론트에 전달한다. 끝! SUBSTRING_INDEX() 함수는 문자열과 구분자 및 위치를 넘겨주면 구분자를 기준..