Это жизнеспособное решение для списка в Memcached? - PullRequest
1 голос
/ 28 июля 2011

В основном у нас есть продавцы, которые обращаются с запросом. Прямо сейчас он попробовал запрос "свежего свинца", чтобы получить их.

Если нет новых отведений, он переходит к «относительно новому» запросу. Мы называем эти «источники», и, по сути, ближе будут проходить через источники, пока они не найдут жизнеспособное руководство.

Все эти запросы запрашивают одну и ту же таблицу, только разные группы данных. Тем не менее, существует много сложной сортировки для каждого запроса, и между этим и вставками / обновлениями в таблицу (таблица InnoDB), мы испытываем много ожиданий (нет тупиков, я уверен, поскольку они не отображаются в InnoDB статус), так что я думаю, что у нас есть медленный выбор, в сочетании с большим количеством вставок / обновлений.

СЕЙЧАС, окончательный вопрос:

Должны ли мы запросить БД для каждого источника и взять около 100ish (очевидно, переменная в зависимости от системы) и кэшировать их в memcached. Затем, в соответствии с запросами доводчиков, отправьте их из кэша, но обновите кэш, чтобы отразить флаг «is_acccepted». Таким образом, мы вызываем каждый источник только тогда, когда у нас заканчиваются кэшированные отведения, и только один раз, когда у нас заканчивается, вместо того, чтобы каждый раз при приближении запрашивать отведение?

Тогда мы можем использовать симуляцию блокировки с memcached - http://code.google.com/p/memcached/wiki/FAQ#Emulating_locking_with_the_add_command

Это похоже на жизнеспособное решение? Любые рекомендации? Нам нужно свести к минимуму шансы на ожидание блокировки отчаянно и быстро.

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Звучит жизнеспособно, но смотрели ли вы на свои индексы и используете ли вы надлежащие уровни изоляции для ваших выборов?

Предыдущий вопрос SO может помочь с ответом на ваш вопрос: Любой способ выбора без блокировки в MySQL?

Если вы выполняете выбор / обновление в SP с полной транзакцией, это также может значительно ускорить процесс за счет оптимизации. Конечно, бывают случаи, когда SP в MySQL намного медленнее: (

Я бы поставил это как комментарий, но еще не достиг этого уровня:)

И я прочитал часть про inno-db, но опыт показал мне улучшения даже с inno при использовании уровней изоляции.

1 голос
/ 28 июля 2011

Прежде чем использовать другое хранилище данных, вам обязательно нужно убедиться, что ваши запросы к БД полностью оптимизированы.

Если вы решили кешировать эти данные, подумайте об использовании Redis, который составляет списки граждан первого класса.

...