CREATE TABLE `ip` (
`ip` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`ip`),
KEY `date` (`date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
このようなMySQLのテーブルがあり、サイトに訪問者がアクセスしてきたら
SELECT ip FROM ip WHERE ip = "{訪問者のIP}"
のようにしてIPが記録されているかを確認し、もし記録されていなければ
INSERT INTO ip VALUE ('{訪問者のIP}','{現在のタイムスタンプ}')
のようにしてIPとタイムスタンプを記録し、その上で
DELETE FROM ip WHERE date < '{7日前のタイムスタンプ}'
のようにして古いIPを消す、みたいなプログラムがあります。
このようなプログラムで記録するIPが数万、数十万と増えてきたとき、
負荷削減などを考えるとMySQLを使わずに、
INSERTの代わりにファイル名がIP、内容が空のファイルを生成し、
SELECTの代わりにファイルが存在するかをチェックし、
DELETEの代わりにファイル生成時間が7日前以前のファイルを削除する、
というようなプログラムにしたほうがいいのかと疑問を抱えています。
IPの1文字目、2文字目などから適宜ディレクトリ分けし、
1ディレクトリ内のファイル数が多くならないように調整するようにと考えています。
MySQLを使うのと使わないのとで、
一般的にはどちらのほうが高速に処理できますか?
よろしくお願い致します。
お礼
理由も欲しかったです。