@isawillbenice

Memcached и выборка из MySql

Есть таблица с 10 млн записями. В ней хранятся какие-то данные + key1 и key2. При каком-то действии на сайте на скрипт приходят два параметра param1 и param2. И надо проверить есть ли в базе строка удовлетворяющая условию key1=param1 and key2=param2. Если нет вставить эти параметры в таблицу.
Вопрос в следующем:
1) правильно ли будет хранить в Memcached саму таблицу целиком? Или лучше хранить ключи в виде $key = md5(serialize($options)), где $options описывает все параметры запроса.
2) Если хранить всю таблицу целиком, то каким образом затем проверять, что в Memcached есть ключ соответсвующий условию key1=param1 and key2=param2
  • Вопрос задан
  • 2873 просмотра
Пригласить эксперта
Ответы на вопрос 3
jakulov
@jakulov
Memcached в принципе можно и исключить отсюда.

В БД достаточно сделать составной индекс по полям key1 и key2 - выборка будет быстрая
dev.mysql.com/doc/refman/5.0/en/multiple-column-in...

если в memcached - то $key = $key1 .'_'. $key2 - будет выборка из memcached по параметрам, а в значение засовывать уже нужные сериализованные данные
Ответ написан
Комментировать
fornit1917
@fornit1917
1. В качестве ключа memcached можно использовать конкатенацию key1 и key2.
2. Вы уверены что вам нужен memcached? Выборка по ключу из таблицы в 10млн в MySQL не занимает много времени. Если составной индекс по key1+key2 есть.
Ответ написан
В базе более 10Млн (авто запчасти), поля key1 + key2
Все отлично летает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы