SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.03.2011 14:15:09

ravlio
Участник
Зарегистрирован: 27.03.2011
Сообщений: 3

Что быстрее - составной ключ из 10и-аттрибутов или хеш этих 10и аттрибутов?

Есть проект с довольно большим трафиком (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к записей?

Спасибо.

Неактивен

 

#2 27.03.2011 22:36:20

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Что быстрее - составной ключ из 10и-аттрибутов или хеш этих 10и аттрибутов?

1. md5 выдает 16 байт данных всегда, зачем VARBINARY(32)?
2. По сравнению с BINARY(16) составной ключ будет проигры-
вать сильно: нужно будет искать по 4×10 = 40 байтам ключа
вместо 16 байт. По сравнению с тем, что есть сейчас, — не
очень сильно.

2кк запросов в сутки — это 70 rps? В принципе, при достаточ-
ном количестве памяти должно справляться. Можно на несколь-
ко машинок складывать — всё равно потом аггрегировать соби-
раетесь.

Неактивен

 

#3 28.03.2011 14:20:37

ravlio
Участник
Зарегистрирован: 27.03.2011
Сообщений: 3

Re: Что быстрее - составной ключ из 10и-аттрибутов или хеш этих 10и аттрибутов?

Большое спасибо за подробный ответ. Всё понятно. Может поможете решить более комплексную задачу?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson