Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Есть проект с довольно большим трафиком (1-2млн запросов в сутки) и система записи статистики под это дело. Система крайне простая. Есть ряд ключей, по которым в дальнейшем идет группировка: date, user_id, site_id, country_id, region_id, district_id, city_id и т.п. и атрибуты, которые непосредственно инкрементируются. К примеру, hit_count, download_count. Запись в таблицу и обновление таблицы я делаю через ON DUPLICATE ENTRY. В качестве ключа использую md5-хеш из группирующих полей. Пример: md5(date.user_id.site_id.country_id.region_id.district_id.city_id) Таким образом, если хеша еще нет, то он добавляется в статистику, если хеш есть - идет инкремент атрибута. Хеш - это, соответственно, отдельный атрибут VARBINARY и он назначен как PK.
Всё работает хорошо, только вот на больших нагрузках всё это дело начинает тормозить и появляются коллизии. Поэтому, я думаю вместо хеша просто сделать составной ключ из группирующих полей.
Вопрос заключается в следующем. Будет ли составной ключ из 10и атрибутов (все аттрибуты INT и DATETIME) работать быстрее, чем ключ ввиде md5-хеша (VARBINARY 32) этих самых атрибутов при условии, что запросов будет 1-2млн в сутки, а таблица статистики может достигать размера 500к записей?
Спасибо.
Неактивен
1. md5 выдает 16 байт данных всегда, зачем VARBINARY(32)?
2. По сравнению с BINARY(16) составной ключ будет проигры-
вать сильно: нужно будет искать по 4×10 = 40 байтам ключа
вместо 16 байт. По сравнению с тем, что есть сейчас, — не
очень сильно.
2кк запросов в сутки — это 70 rps? В принципе, при достаточ-
ном количестве памяти должно справляться. Можно на несколь-
ко машинок складывать — всё равно потом аггрегировать соби-
раетесь.
Неактивен
Страниц: 1