매칭 알고리즘, 속도는 얼마나 걸릴까?

Alex·2024년 11월 13일
0

Plaything

목록 보기
13/118

Plaything의 mvp 규모는 대략 1000명.
목표로 하고 있는 인원수는 1~2만명 정도다.

그래서 DB에 2만명 정도의 유저를 넣어놓고 Matching 알고리즘을 테스트해봤다.
우선 지금은 일대일로 반대 성향 유저를 10명만 보여주는 구조다.

DELIMITER //
CREATE PROCEDURE generate_profile()
BEGIN
    DECLARE i INT DEFAULT 1;
    
    WHILE i <= 2000 DO
        INSERT INTO profile (birth_date, gender, introduction, is_baned, is_private, nick_name, primary_role, profile_status)
        VALUES (
			NOW(),
            'M',
            'hi',
            false,
            false,
            CONCAT('user', LPAD(i, 4, '0')), -- user0001, user0002, ...
            'BOTTOM',
            'NEW'
        );
        SET i = i + 1;
    END WHILE;
END //
DELIMITER ;

-- 프로시저 실행
CALL generate_profile();

-- 프로시저 삭제 (사용 후 정리)
DROP PROCEDURE generate_profile;

=========================


DROP PROCEDURE generate_profile_image;


DELIMITER //
CREATE PROCEDURE generate_profile_image()
BEGIN
    DECLARE i INT DEFAULT 1;
    
    WHILE i <= 2000 DO
        INSERT INTO profile_image (file_name, url, profile_id)
        VALUES (
			 'ab',
             'dd',
             i
        );
        SET i = i + 1;
    END WHILE;
END //
DELIMITER ;

-- 프로시저 실행
CALL generate_profile_image();

-- 프로시저 삭제 (사용 후 정리)
DROP PROCEDURE generate_profile_image;

=================================


UPDATE user 
SET profile_id = id
WHERE id BETWEEN 1 AND 20000;

-->id넣어주는 건 이렇게 간단하게 할 수 있다.

기본적인 인덱스는 있지만 trait에 인덱스는 없는 상태다.

포스트맨에서 돌려보니 57ms로 머쓱...굉장히 빨랐다...
굳이 복합 인덱스를 걸지 않아도 충분히 빠르다.

profile
답을 찾기 위해서 노력하는 사람

0개의 댓글