[Moscow.pm] [SPAM:#] Re: Задачка на подумать, кому интересно...

Akzhan Abdulin akzhan.abdulin на gmail.com
Пн Дек 2 07:20:42 PST 2013


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


2 декабря 2013 г., 19:11 пользователь Oleg Alistratov <ali на ali.org.ua>написал:

> Вот это хороший вариант, но недетерминированный по времени выполнения,
> против чего Михаил уже возражал.
> Особенно много промахов будет вначале, пока объектов в таблице немного.
>
> 02.12.2013, 16:52, "Akzhan Abdulin" <akzhan.abdulin на gmail.com>:
>
> посчитать селективность (запомнить однократно),
>
> потом просто сгенерировать пачку псевдослучайных id и выполнить select по
> ним (IN) с доп. условием на доступность всем.  количество id равно
> количество нужным поделить на селективность.
>
> Получили результат. Если недостаточно, генерируем вторую пачку и отбираем
> остаток.
>
> Итого в среднем один запрос с поиском по PK + фильтр. Редко два.
>
> Повторяемость обеспечивается выбором и настройкой алгоритма генерации
> случайных чисел.
>
>
>
> 2 декабря 2013 г., 17:27 пользователь Михаил Монашёв <
> postmaster на softsearch.ru> написал:
>
> Здравствуйте.
>
> Есть  таблица  с  объектами  в  mysql. Новые объекты туда добавляются,
> плохие  объекты  удаляются,  бывает что по много штук сразу. Некоторые
> объекты  имеют  статус  скрытых  от всех, а все остальные доступны для
> всех. Т.е. в таблице равномерно растёт id объектов, но между соседними
> id  могут  быть  дырки, причём большие. И некоторые объекты показывать
> нельзя.
>
> Даётся  текстовая  строка.  В идеале нужно для этой строке максимально
> быстро  выбрать  из  таблицы случайные 3 разных объекта, доступные для
> всех.  Причём так, чтобы повторные выборы давали те же самые объекты и
> изменения таблицы минимально влияли на это.
>
> Т.е.  надо  из  перла обратиться к mysql-ю минимальное количество раз,
> сделав максимально быстрые запросы. Самое важное - скорость. Ей нельзя
> жертвовать. Можно жертвовать, но крайне нежелательно, привязкой строки
> к  объектам. Понятно, что таблица меняется и привязки строк к объектам
> будут меняться. Необходимо, чтобы эти изменения были минимальны. Можно
> жертвовать  количеством  выбираемых объектов, например выбирать иногда
> не  3, а 2 или 1, но не 0. Можно жертвовать степенью случайности между
> выбираемыми объектами, например, выбирая лишь один случайным способом,
> а  остальные  искать  поблизости от первого. Нельзя жертвовать охватом
> объектов таблицы, т.е. выбираться объекты должны среди всех не скрытых
> объектов.
>
> --
> С уважением,
>  Михаил                          mailto:postmaster на softsearch.ru
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
> ,
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> Oleg Alistratov
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131202/3f03ae3d/attachment.html>


Подробная информация о списке рассылки Moscow-pm