본문 바로가기

분류 전체보기97

[MySql] 효과적인 인덱스 설계 인덱스(index)는 즉 색인이다테이블의 동작속도(조회를) 높여주는 자료구조이다. 인덱스로 데이터의 위치를 색인 처럼 빠르게 찾아주는 역할이다.select를 빠르게 하는 대신 update, delete, insert를 희생한다. 물론 update, delete 라고 다 희생되는게 아니라 update, delete를 하기 위해 해당 데이터를 조회하는 인덱스가 있으면 빠르게 된다.만약 인덱스를 사용하는 테이블에서는 update, delete를 하게 되면 가능한 인덱스로 지정된 컬럼을기준으로 진행하는게 좋다테이블의 특정 컬럼(Column)에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다. 컬럼의 값과 물리적 주소를 (key, value)의 한 쌍.. 2022. 11. 7.
[Spring] 동시성 문제(쓰레드 로컬) 동시성 문제는 지역 변수에서는 발생하지 않는다. 지역 변수는 쓰레드마다 각각 다른 메모리 영역이 할당된다. > 동시성 문제가 발생하는 곳은 같은 인스턴스의 필드(주로 싱글톤에서 자주 발생), 또는 static 같은 공용 필드에 접근할 때 발생한다. > 동시성 문제는 값을 읽기만 하면 발생하지 않는다. 어디선가 값을 변경하기 때문에 발생한다. 이럴 때 사용하는 것이 바로 쓰레드 로컬이다 ThreadLocal 예제 소스 @Slf4j public class ThreadLocalService { private ThreadLocal nameStore = new ThreadLocal(); public String logic(String name) { log.info("저장 name={} -> nameStore={}.. 2022. 11. 5.
PostgreSQL 배열 함수 array_agg, array_to_string, unnest, array_append 먼저 가상 테이블을 생성하겠습니다. with make_array as ( select unnest(array['고기', '고기', '고기', '채소', '채소']) as col1 , unnest(array['삼겹살', '항정살', '가브리살', '상추', '명이나물']) as col2 ) select col1 ,col2 from make_array; unnest -> 인수로 입력받은 array를 행집합으로 반환 이런 결과가 나온다. col1 col2 고기 삼겹살 고기 항정살 고기 가브리살 채소 상추 채소 명이나물 with make_array as ( select unnest(array['고기', '고기', '고기', '채소', '채소']) as col1 , unnest(array['삼겹살', '항정살',.. 2022. 11. 4.
자바스크립트 함수 선언 6가지 방법 1. named function declaration (명명 함수 선언) function hello() { // ... } 현재 내가 재직하는 회사에서 제일 많이 사용하는 방법이자 가장 대중적임 호이스팅이 되기 때문에 이 함수는 어느 스코프에서든 호출 할수 있음 2. anonymous function expression (익명 함수 표현) var hello = function () { //... } hello.name // > "hello" hello // > ƒ () { // //... // } 이름이 없는 함수를 변수에 담은 방식이다. 이름이 없는 함수긴 한데, 자바스크립트 엔진이 자동으로 이름을 변수명으로 추정하여 넣는다. 변수 할당은 호이스팅 되지 않으므로, 할당 된 이후에만 실행 가능하다. 3... 2022. 11. 2.