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로 머쓱...굉장히 빨랐다...
굳이 복합 인덱스를 걸지 않아도 충분히 빠르다.