ShortId
를 사용할 수 있다.우선 expired
대상인 컬럼을 찾아야 한다.
뒤죽박죽 섞인 컬럼을 created_at
이 현재로부터 3년전인 컬럼을 전사 탐색하는 것은 좋은 선택은 아닌것 같다.
일단 created_at
컬럼에 인덱싱을 걸어주면 모든 컬럼에 대해 탐색을 하지는 않는다.
created_at
컬럼에 인덱싱을 걸어주면 되나?
하지만, created_at
인덱싱으로 인해 추가로 차지되는 데이터 공간이 싫다.
그러면 어떻게 해야할까?
created_at
을 기준으로 오름차순 정렬하면서 데이터를 저장한다.INSERT INTO short_link (id_short_link,created_at,original_url,short_id,client_ip,user_agent)
VALUES (1,dummy,dummy,dummy,dummy,dummy)
ORDER BY name created_at;
created_at
을 기준으로 오름차순으로 정렬되어있다.expired
를 체크한다.expired
되지 않았으면 나머지 데이터도 똑같이 expired
되지 않았을 것이다.expired
되었으면 SELECT 하여 DB에 부하를 줄이면서 가져오기 위해 특정 크기만큼 SELECT 한 뒤, 지우는 Batch 작업으로 데이터를 지운다.