목록전체 글 (587)
우당탕탕
MySQL EXPLAIN 실행 계획에서 possible_keys와 key 컬럼은 인덱스 사용과 관련된 서로 다른 정보를 제공합니다. 이를 이해하고 적절히 활용하면 쿼리 성능을 효과적으로 최적화할 수 있습니다.possible_keys와 key 컬럼의 차이점possible_keys: MySQL이 해당 테이블에서 쿼리 실행 시 사용할 수 있는 가능한 인덱스 목록을 나타냅니다. 즉, WHERE 절이나 JOIN 조건에 의해 활용될 수 있는 모든 관련 인덱스가 여기에 표시됩니다. 만약 NULL이라면, 쿼리 조건에 맞는 인덱스가 없음을 의미합니다.key: 실제로 MySQL 옵티마이저가 쿼리 실행에 선택하여 사용한 단일 인덱스을 나타냅니다. 이 인덱스는 possible_keys 중 하나일 수도 있고, 때로는 possi..
MySQL 8.4에서는 SELECT ... FOR UPDATE 또는 SELECT ... FOR SHARE 구문에 SKIP LOCKED 옵션을 사용할 수 있습니다. 이 옵션은 잠긴 행을 건너뛰고 즉시 결과를 반환하여, 잠금 대기 없이 쿼리를 실행할 수 있게 합니다.SKIP LOCKED 옵션의 조건잠긴 행을 건너뛰고 결과 집합에서 제외합니다.잠금 대기 없이 즉시 쿼리가 실행됩니다.행 수준 잠금(row-level locks)에만 적용됩니다.트랜잭션이 활성화되어 있어야 하며, 자동 커밋이 비활성화된 상태여야 합니다 (예: START TRANSACTION 사용).SKIP LOCKED 옵션의 제한 사항잠긴 행을 건너뛰기 때문에 결과 집합이 데이터의 일관된 뷰를 제공하지 않을 수 있습니다. 따라서 일반적인 트랜잭션 ..
MySQL 8.4 버전 기준, EXPLAIN 명령어는 SELECT, DELETE, INSERT, REPLACE, UPDATE 문에 대해 실행 계획을 보여준다. 각 테이블별로 한 행씩 결과를 반환하며, 주요 컬럼들의 의미와 성능 최적화 시 고려사항은 다음과 같다.주요 컬럼 의미type (access_type): 조인 유형을 나타내며, 성능에 큰 영향을 미친다. 조인 유형은 최적에서 최악 순으로 system, const, eq_ref, ref, fulltext, ref_or_null, index_merge, unique_subquery, index_subquery, range, index, ALL 등이 있다. 예를 들어, const는 상수 하나를 읽는 매우 빠른 유형이고, ALL은 전체 테이블 스캔으로 성능..
systemd 서비스 유닛 파일에서 Restart=와 StartLimit 관련 옵션을 활용하면 서비스의 재시작 동작과 재시작 루프를 효과적으로 제어할 수 있습니다.Restart= 옵션Restart=는 서비스 프로세스가 종료되었을 때 systemd가 자동으로 재시작할지 여부를 지정합니다. 가능한 값으로는 no (기본값), on-success, on-failure, on-abnormal, on-watchdog, on-abort, always 등이 있습니다. 예를 들어 Restart=on-failure로 설정하면 서비스가 비정상 종료되었을 때만 재시작합니다.StartLimit 관련 옵션재시작 루프 방지를 위해 systemd는 StartLimitIntervalSec=와 StartLimitBurst= 옵션을 제공..
MySQL 8.4 버전 기준, EXPLAIN 명령은 SELECT, DELETE, INSERT, REPLACE, UPDATE 문에 대해 실행 계획 정보를 제공합니다. 각 테이블별로 한 행씩 결과를 반환하며, MySQL이 쿼리를 처리하는 순서대로 테이블을 나열합니다.EXPLAIN 출력에서 확인할 주요 컬럼id (select_id): 쿼리 내 SELECT 문 식별자 번호입니다.select_type: SELECT 문의 유형으로 SIMPLE, PRIMARY, UNION, SUBQUERY 등 다양한 값이 있습니다.table (table_name): 해당 행이 참조하는 테이블 이름 또는 파생 테이블, 서브쿼리 결과 등을 나타냅니다.partitions: 쿼리가 접근하는 파티션 정보이며, 비파티션 테이블은 NULL입니다..
TypeScript 4.9 버전부터 도입된 satisfies 연산자는 타입 주석(type annotation)과는 달리, 표현식의 타입이 특정 타입과 호환되는지 검증하면서도 표현식의 구체적인 타입 정보를 유지할 수 있게 해준다. 이는 타입 주석을 사용할 때 발생하는 타입 정보 손실 문제를 해결한다.satisfies 연산자와 타입 주석의 차이타입 주석: 변수나 상수에 타입을 명시하면, 해당 타입으로 타입이 고정되어 표현식의 구체적인 타입 정보가 축소될 수 있다. 예를 들어, Record 타입 주석을 사용하면 각 프로퍼티가 string | RGB 타입으로 제한되어, 구체적인 타입 추론이 어려워진다.satisfies 연산자: 표현식이 특정 타입을 만족하는지 검증하지만, 표현식의 구체적인 타입 정보는 그대로 유..
