Есть ли какая-то особая причина, по которой вы не можете использовать собственные журналы сервера в качестве хранилища данных?Довольно просто разорвать IIS или Apache access_log и проанализировать информацию, которую вы хотите.
Если вас интересует только определенное подмножество журнала доступа (т. Е. Попадания на реальные страницы иигнорировать images / javascript / css / flash / любые файлы), вы можете анализировать только эти конкретные попадания.Затем возьмите этот сокращенный набор данных и поместите его в MySQL на другом сервере.
После этого база данных станет гораздо лучшим местом для хранения соответствующих данных о попаданиях, поскольку она может выполнять анализ данных для вас и обрабатыватьвся группировка / подсчет без пота.Подумайте о том, что происходит, когда вы загружаете несколько сотен миллионов обращений и пытаетесь отслеживать данные по каждому IP - ваш набор данных в памяти будет расти довольно быстро и может превысить доступную память.Выполнение суммирования / подсчета / усреднения / и т.д ... в базе данных решит все эти проблемы для вас;вам просто нужно позаботиться о том, чтобы потом интерпретировать результаты.
И просто как подсказка по оптимизации: сохраняйте ваши IP-адреса как целое поле без знака, а не как varchar (15).Они на самом деле просто 32-битные числа.Затраты на одноразовый первоначальный перевод ascii-> numeric будут совершенно тривиальны рядом с повторяющимися попаданиями на этапе анализа, когда вы пытаетесь применить маски подсети и еще много чего:
INSERT INTO log (ip) VALUES (INET_ATON('10.0.0.1'));