Свежие комментарии
Title | Comment |
---|---|
из описания у меня сложилось впечатление, что это именно R/O |
из описания у меня сложилось впечатление, что это именно R/O хранилище и вставок не нужно, значит ошибся (удаление дело такое, можно просто помечать удаленных) 32 бита это уже не то, чтобы и ограничение, по нынешним-то временам массовых 64-битных процессоров :) тем более 18 мегазаписей по 20 байт - не так и много насчет кэша операционки не совсем понял, разве он не динамический? впрочем, я сильно отстал от нынешней ситуации, ту же fbsd пользую как юзер и в кишки настроек ядра не хожу, и так хватает |
Если хэш в памяти - вопросов нет (надо смотреть на оверхеды |
Если хэш в памяти - вопросов нет (надо смотреть на оверхеды и все такое, но принципиальных возражений нет) Как только в память влезать перестаем - с хэшами начинается катастрофа, ибо любое обращение к этой конструкции с вероятностью (размер кэша/размер данных) преврашается в seek(rand()) и вместо сотен тысяч транзакций в секунду мы скатываемся в лучшем случае к первым сотням в секунду (от дисковой подсистемы зависит, на SSD будет быстрее, скажем 10^4 в секунду) |
Хотя надо заменить, что sp_spaceused показывает 92mb для дан |
Хотя надо заменить, что sp_spaceused показывает если делать кластерный индекс, то таблица занимает 116mb. |
Может у Berkeley DB какой-нибудь lazy write и она репортает |
Может у Berkeley DB какой-нибудь lazy write и она репортает запись до фактического завершения? :-) 3 миллиона 22х байтовых записей, 114MB файл. Ключ, правда, у меня 8байтовый datetime, распределение почти уникальное. |
Во, а у меня быстрее на Core2Duo 1.86 с SATA-диском :) Мож |
Во, а у меня быстрее на Core2Duo 1.86 с SATA-диском :) Можешь повторить эксперимент, вписавшись в (например) 100 мегабайт памяти? |
Ну я попробовал одним проходом - залил в таблицу с индексом, |
Ну я попробовал одним проходом - залил в таблицу с индексом, пакетами по 100k rows. Он перемены мест слагаемых сумма не изменилась. Раздельность же дает представление, что время теряется на фактической записи, а не сортировке. Сервер настоящий, cpu-z: |
Ну вот конкретных трех книжек "по фотошопу" я в то |
Ну вот конкретных трех книжек "по фотошопу" я в торрентах не нашел и загрустил. |
lookup - не пользовательский. Эта штука обрабатывает входные |
lookup - не пользовательский. Эта штука обрабатывает входные данные (неважно откуда взяты, просто поток данных), заявленная в требованиях скорость обработки приводит к указанной частоте лукапов (100k/sec - хороший случай, 500k/sec - плохой), при этом обработчик данных на самом деле может их жевать на одном ядре производя 2-3 миллиона ключей для лукапа в секунду, но этого уже не прожевать (а 500k на заявленных размерах - прожевать без проблем). Я, по всей видимости, не могу рассказывать более подробно (даже из какой конкретно области задача. ну обычная такая задача). Что касается заливки - ты воспроизвел ровно то, что я делал, только с другого боку (залил - проиндексировал, а я все делал одним проходом), у тебя получилось медленнее (расход памяти примерно одинаковый - я все заранее посортировал, а ты посортировал когда индекс строил, т.е. у тебя чуть больше за счет неполного заполнения страниц B-дерева). Т.е. результат близок к ожидаемому. Интересно еще машинами померяться. Ты, небось, на настоящем сервере развлекался? А скорость заливки меня интересует по той причине, что неприлично елозить диском и заливать три часа то, что заливается за минуту. Три часа - это в ситуации когда а) "индекс не влезает в кэш" б) решаем в лоб. Т.е. сам сторадж (Berkeley DB) - он хороший, там можно быстро поудалять-повставлять немножко, но с точки зрения обычной SQL-бд это в одной кучке и индекс и данные, индекс оторвать нельзя. |
а зачем BTree, если сортировка по ключам в логике не использ |
а зачем BTree, если сортировка по ключам в логике не используется? хеш-таблица лишена такого недостатка |
Именно. Скока не жалко. Гораздо полезнее отвести буфер на эт |
Именно. Скока не жалко. Гораздо полезнее отвести буфер на это а не на свой кэш базы (в случае Berkeley DB всегда есть выбор). Собственно, если посмотреть на предыдущий постинг и сделать поправку на то, что кэш вообще не нужен (нужно исчезающе мало), то получится что если выделить 300M на буфер сортировки а не на кэш, мы получаем ускорение в 130 раз (для данного конкретного примера с 18M записей). |
как же я отсортирую ключи, если они они поступают в своём со |
как же я отсортирую ключи, если они они поступают в своём собственном/случайном порядке? |
Блин, вот казалось бы соседних областях работаем, и то нужно |
Блин, вот казалось бы соседних областях работаем, и то нужно о базовых понятиях договариваться. lookup - это пользовательский запрос найти запись по ключу? Время записи тебя волнует из-за downtime'а ? Записи генерятся и должны быть записаны в течении дня или один раз в конце дня? Я тут попытался воспроизвести - 18млн 30 байтных записей. |
Нет, пардон, дело не только в кэше. В том смысле, что при пр |
Нет, пардон, дело не только в кэше. В том смысле, что при правильном употреблении совсем большой кэш не нужен. А задача задачи, если переводить с языка ТЗ - это что-то в районе 100-500 тысяч лукапов в секунду по редко изменяемому стораджу в котором up to 200 mln записей. Памяти при этом не очень много т.к. на 32-битной ОС тоже должно работать. Правда там есть облегчающее обстоятельство - в подавляющем количестве случаев lookup будет failed. |
mmap-ed файл, естественно сортированный, это отличное хранил |
mmap-ed файл, естественно сортированный, это отличное хранилище, пока оно не очень большое. Там довольно очевидные недостатки Но для read-only storage не очень больших размеров (или в ситуации, когда можно побить на сегменты и одновременного доступа к разным сегментам немного) - отличная вещь, очень любим. |
Что характерно, почти все книги с сафари можно при желании в |
Что характерно, почти все книги с сафари можно при желании выкачать бесплатно со всяких левых chmpdf.com и ему подобных. Если даже торренты с большими подборками. |
Я чего-то не понял задачу задачи. "Индекс должен помещ |
Я чего-то не понял задачу задачи. "Индекс должен помещаться в кеш" - это достаточно тривиально и известно сто лет. У меня задача - принять 500 млн записей в день. Самая важная технология - partitioned table. СУБД работает с сегодняшним субсетом данных, в предыдущие дни лежат на диске не мешаются. |
я бы, наверное, прежде всего проверил вариант "открыть |
я бы, наверное, прежде всего проверил вариант "открыть файл нужной длины, mmap() его в память" и с ним и работать без всяких промежуточных DB как с массивом |
В свое время в Top100 этот фокус не удался - что-то там пада |
В свое время в Top100 этот фокус не удался - что-то там падало и было криво. Разбираться тогда - не было сил. Заметим, что при использовании qsort() целочисленные сравнения нифига не более быстрые, ибо строковое побайтовое сравнение в очень большой доле случаев срабатывает по первому или второму байту. |
Научные исследования показали, что если все отсортировать, т |
Научные исследования показали, что если все отсортировать, то кэш вообще не нужен (больше некоторого минимального минимума). http://blog.lexa.ru/2008/11/26/optimal_naja_zapis__v_btree_zhivitel_naja... |
Ну, в общем случае сделать ~50-60% сортировки (судя по числу |
Ну, в общем случае сделать ~50-60% сортировки (судя по числу срабатываний сравнений, см тут: http://blog.lexa.ru/2008/11/20/o_sortirovke_uzhasi_programmirovanija___2...) наверное не сильно хуже. Мне не сложно проверить (заменив функцию сравнения в сортировщике). Но надо учитывать вот что Т.е. не все так просто :) |
Этой теме лет много. Но что-то у них там криво, у меня оно ж |
Этой теме лет много. Но что-то у них там криво, у меня оно жило какое-то время - очень полезная штука, если надо что-то быстро почитать или решить нужно ли покупать некую книжку; а потом тупо отказалось продляться на второй год (карта виртуальная - номер остается прежний, а CVC и expiry меняются). Типа карта не авторизуется (притом что карта далеко не ВТБюэ и авторизуется везде и всюду), суппорт у них туп как баобаб, и талдычит про contact your bank, а банк мне говорит, что попыток авторизации он не видит. В общем у меня оно уже год не работает :) |
> Не забываем, что BerkeleyDB рассматривает ключи как > байт |
> Не забываем, что BerkeleyDB рассматривает ключи как > байтовую строку, поэтому сортировать надо в А это всегда так? Вроде, в BerkeleyDB можно подменить функцию сравнения ключей на свою - тогда в твоем случае можно пользоваться более быстрыми целочисленными сравнениями? |
Ну у нас как бы свое "Семантическое зеркало", http://www.ash |
Ну у нас как бы свое "Семантическое зеркало", http://www.ashmanov.com/tech/semantic/ |
А если вообще отказаться от полной сортировки? У нас ведь за |
А если вообще отказаться от полной сортировки? У нас ведь задача попасть в кэш СУБД, а кэш СУБД может быть не таким уж и маленьким. Достаточно отсортировать по первому байту и иметь кэш размером в 1/256 от предполагаемого объема СУБД (несколько упрощенно) чтоб в кэш помещались все записи с ключом начинающимся на, скажем, 0x55. Вне зависимости от следующих за ним байтов. Они же все кучно расположены. Что это дает? Да удаление операции сортировки вообще. Достаточно иметь 256 односвязных списков в которые будут добавляться записи при генерации, в какой именно - вибирать согласно первому байту хэша. Операция очень быстрая, выбрать из 256-байтной таблицы адрес головы списка и два указателя поправить. Не чета настоящей сортировке. После заполнения буфера - выгружаем списки последовательно. Внятно у меня получилось изложить? |
У них там есть дешевый вариант регистрации. Я туда попал по |
У них там есть дешевый вариант регистрации. Я туда попал после того, как они не смогли пробиллить мою карточку :), но я подозреваю что можно попасть и каким-то более правильным способом. |
Я извиняюсь, откуда такие цифры - 10 и 110? Мне он предложил |
Я извиняюсь, откуда такие цифры - 10 и 110? |
<b>Re: Довольно случайно ( ) обнаружил платный интернет-се</ |
Re: Довольно случайно ( ) обнаружил платный интернет-се Но там же программирование? Я книжки по программированию сейчас очень редко покупаю (А с помощью Safari не купил две фотокнижки) |
Ой, ответил у себя в блоге (а нотифай от ЖЖ почему то не при |
Ой, ответил у себя в блоге (а нотифай от ЖЖ почему то не пришел). Повтор: |
<b>Довольно случайно ( ) обнаружил платный интернет-серв</b> |
Довольно случайно ( ) обнаружил платный интернет-серв |
привет! есть след оффтопный вопрос: ты какими тулзами поль |
привет! есть след оффтопный вопрос: ты какими тулзами пользуешься (или рекомендуешь) при классификации тематик вебсайтов? |
Pages
