- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MySQLでページ毎にログを取りたい
)
MySQLでページ毎にログを取る方法とテーブル数の問題
このQ&Aのポイント
- MySQLを使用してページ毎にログを取りたい場合、テーブル数が膨大になる問題があります。この記事では、テーブル数を抑えつつログを取る方法について検討します。
- MySQLでは数万件のテーブル数は珍しくありませんが、データの取得や出力を頻繁に行う場合には、より効率的な設計が求められます。
- MySQLが適しているかどうかは使用するデータの種類や利用方法によりますが、テーブル数の問題に対しては他のデータベースシステムも検討する価値があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
テーブルを一個作って、そこで管理するのが一般的です。 [access_log] access_id(単なるアクセス順のインクリメントでOK) user_id(アクセスログを取りたいid) date addr ref
その他の回答 (1)
- kuroizell
- ベストアンサー率55% (95/170)
回答No.2
access_idをBIGINT unsignedにすると、18446744073709551615までなら取れます。 一日100万アクセスとして500億年持つので、何とかなると思います。 ファイルシステムの最大ファイルサイズが先に問題になるでしょうから、今のうちに64bitPCにしておくと吉ですね。
質問者
お礼
詳しくありがとうございます。 MySQLを触り始めてまだ日が浅いので、参考になりました!
お礼
ありがとうございます。 user_id / access_id / date / addr / ref 1 , 10000, 0000, XXX.XXX, http://~ 1 , 10001, 0000, XXX.XXX, http://~ 1 , 10002, 0000, XXX.XXX, http://~ 1 , 10003, 0000, XXX.XXX, http://~ 2 , 10000, 0000, XXX.XXX, http://~ 2 , 10001, 0000, XXX.XXX, http://~ 2 , 10002, 0000, XXX.XXX, http://~ 2 , 10003, 0000, XXX.XXX, http://~ という感じになるでしょうか? ああそうか、userid で where して、accessid で ソートすれば、その userid のデータのみ取り出せますね。 ただ1つのテーブルにまとめると、今度はレコード数が膨大になるので、ログの保存件数を減らすか、userid を適当なところで分割してテーブルを分けるのがベストでしょうか?