1

주제: 플러그인 개발에 따른 테이블 질문과 건의

1. 플러그인을 개발할 때 (prefix)_Sessions 테이블을 참고하려 합니다.
그런데 이 테이블 레코드의 라이프 사이클을 몰라서 어느 정도의 주기로 유지되는지 알고 싶습니다.

config.php를 보면 $service['timeout'] = 3600 * …; 항목이 있는데 이 값에 따라 변동이 되는지
아니면 일정하게 정해진 시간에 따라 세션이 삭제되는지요?


2.

mysql> desc tt_Sessions;
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id           | varchar(32)  | NO   | PRI | NULL    |       | 
| address      | varchar(15)  | NO   | PRI | NULL    |       | 
| userid       | int(11)      | YES  |     | NULL    |       | 
| preexistence | int(11)      | YES  |     | NULL    |       | 
| data         | text         | YES  |     | NULL    |       | 
| server       | varchar(64)  | NO   |     | NULL    |       | 
| request      | varchar(255) | NO   |     | NULL    |       | 
| referer      | varchar(255) | NO   |     | NULL    |       | 
| timer        | float        | NO   |     | 0       |       | 
| created      | int(11)      | NO   |     | 0       |       | 
| updated      | int(11)      | NO   |     | 0       |       | 
+--------------+--------------+------+-----+---------+-------+
11 rows in set (0.01 sec)

이 테이블에서 request, referer 컬럼이 varchar(255)로 정의되어 있는데 이걸 text로 변경해야 할
필요성이 보입니다. 가령 레코드의 request 컬럼 중에는 아래와 같이 거의 한계치에 가까운 값도
있습니다.  (실제 길이는 248바이트입니다)

/blog/noname/entry/%eb%b0%9b%ec%b9%a8-%ea%b5%ac%eb%b6%84%ec%9d%84-%eb%aa%bb%ed%95%98%eb%8a%94-%ec%82%ac%eb%9e%8c%ec%9d%b4-%ec%9d%b4%ec%83%81%ed%95%98%ea%b2%8c-%eb%b3%b4%ec%9d%b4%eb%8a%94-%ea%b1%b4-%eb%82%98-%eb%bf%90%ec%9d%bc%ea%b9%8c%23comment2372

referer 컬럼도 마찬가지 이유로 255바이트를 넘는 경우가 있습니다.

noname (2008-01-12 23:20:15)에 의해 마지막으로 수정

2

답글: 플러그인 개발에 따른 테이블 질문과 건의

noname 작성:

1. 플러그인을 개발할 때 (prefix)_Sessions 테이블을 참고하려 합니다.
그런데 이 테이블 레코드의 라이프 사이클을 몰라서 어느 정도의 주기로 유지되는지 알고 싶습니다.

config.php를 보면 $service['timeout'] = 3600 * …; 항목이 있는데 이 값에 따라 변동이 되는지
아니면 일정하게 정해진 시간에 따라 세션이 삭제되는지요?

옙 정한 시간에 따라 세션이 삭제됩니다.


noname 작성:

2.

mysql> desc tt_Sessions;
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| id           | varchar(32)  | NO   | PRI | NULL    |       | 
| address      | varchar(15)  | NO   | PRI | NULL    |       | 
| userid       | int(11)      | YES  |     | NULL    |       | 
| preexistence | int(11)      | YES  |     | NULL    |       | 
| data         | text         | YES  |     | NULL    |       | 
| server       | varchar(64)  | NO   |     | NULL    |       | 
| request      | varchar(255) | NO   |     | NULL    |       | 
| referer      | varchar(255) | NO   |     | NULL    |       | 
| timer        | float        | NO   |     | 0       |       | 
| created      | int(11)      | NO   |     | 0       |       | 
| updated      | int(11)      | NO   |     | 0       |       | 
+--------------+--------------+------+-----+---------+-------+
11 rows in set (0.01 sec)

이 테이블에서 request, referer 컬럼이 varchar(255)로 정의되어 있는데 이걸 text로 변경해야 할
필요성이 보입니다. 가령 레코드의 request 컬럼 중에는 아래와 같이 거의 한계치에 가까운 값도
있습니다.  (실제 길이는 249바이트입니다)

/blog/noname/entry/%eb%b0%9b%ec%b9%a8-%ea%b5%ac%eb%b6%84%ec%9d%84-%eb%aa%bb%ed%95%98%eb%8a%94-%ec%82%ac%eb%9e%8c%ec%9d%b4-%ec%9d%b4%ec%83%81%ed%95%98%ea%b2%8c-%eb%b3%b4%ec%9d%b4%eb%8a%94-%ea%b1%b4-%eb%82%98-%eb%bf%90%ec%9d%bc%ea%b9%8c%23comment2372

referer 컬럼도 마찬가지 이유로 255바이트를 넘는 경우가 있습니다.

이 부분에 대해서는 밖으로 출력되는 URL 길이 자체를 어느 정도 이하로 제한을 두는 것을 고려해 보아야 하겠네요... UTF 처리를 어떻게 하느냐에 따라 가변 길이가 될텐데 머리가 좀 아프군요 =_=;

엄청 자주 갱신되는 세션 테이블에 text를 사용하는 것이 데이터베이스에 걸어주는 로드가 될 것 같습니다.

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

3

답글: 플러그인 개발에 따른 테이블 질문과 건의

확실히 text 컬럼을 쓰는 것은 좀 부하 문제가 있지 않을까 걱정이 되긴 하는군요.

마찬가지로 리퍼러를 관리하는 테이블도 varchar(255)로 되어 있어서 가끔 리퍼러 로그가 잘릴 때가 있더군요. 사실 웬만한 경우 255를 넘는 건 드뭅니다만, 가끔 긴 질의로 들어오거나 entry명을 블로그 퍼머링크로 쓴 곳에서 방문하면 잘릴 때가 있습니다.