이것은 웹 개발을위한 MySQL 질문입니다.MySQL : 중복 된 데이터 VS 더 많은 쿼리
현재 나 자신이 그것을 알아낼 수 없다, 나는 사용자 인증 시스템에 대한 데이터베이스 구조를 설계 그리고 난 하나 개의 질문 건너 온 :
은 더 나은 복제 한 데이터를 대신 더 만드는 쿼리?
id mediumint
username varchar(15)
password varchar(100)
email varchar(80)
status tinyint(1) <- is the user banned?
language varchar(100)
private_message_counter mediumint
notify_email tinyint(1)
Extra rows
나는 것을 방지하기 위해 사용자의 테이블에 모든 "가장 많이 사용되는"행을 넣어 노력하고있어 여기에
현재 나의 사용자 테이블이 (의사 코드) 같은 것을 보이는, 약간의 배경이다 예를 들어, 더 질의 :With Indicator on users table:
-
User Logged on? (query Sessions)
Get User Data (query Users)
Get User Permissions (query permissions)
-
Without indicators:
-
User Logged on? (query Sessions)
Is the user Banned? (query Bans)
Get User Data (query Users)
Get User Permissions (query Permissions)
Get Private Message information (query private_messages table)
하나의 작은 "문제는"사용자 테이블 행의 많은 끝나는 것입니다. 또한 데이터 불일치를 방지하기 위해 더 많은 검사를해야하지만 개선 방법이 좋지 않다는 것이 확실합니다.
참고 : 내 웹 사이트에는 약 14,500 명의 동시 사용자가 연결되어 있습니다. 그래서 나는 그것을 향상시킬 것인지 또는 완전한 반대를 할 것인지를 알아야합니다.
의견이나 제안을 환영합니다.
세션에서 데이터를 캐싱하여 쿼리 최소화를 고려 했습니까? 사용자가 금지되어야한다고하더라도 세션이 끝날 때까지만 활성화됩니다. –
금지 조치를 취하면 최근 사용자의 모든 세션을 파괴하여 즉시 로그 아웃 할 수 있습니다. –