Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модераторы: Tolik, zed

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение Parasite » 19 фев 2010, 19:50

webdev2 писал(а):Прошу пардона за оффтопик, но Вы не могли бы озвучить свой опыт по времени и по платформам?

В личку.

Parasite писал(а):Для индивидуального пользования, о котором я веду речь, Sqlite хорошо.

Ошибка.
Sqlite хорош для структурированного привязанного к программе, но непривязанного к оси хранения и монопольного использования небольших обьемов данных без претензий на отказоустойчивость (ключевые слова - привязанного к программе, небольших обьемов и без отказоустойчивости).
Лично мне не подходят все три. И многих не устроит тоже. А банальный ТруКрипт имеет только последний недостаток (он меня тоже устраивает не на 100%, но 1 - все таки меньше чем 3).

Parasite писал(а):Вы уточняете, что они африканцы

Нигры - это расхожее образное выражение. :)
Но они есть, да. И они...эээ....не обезображены избыточным интеллектом, скажем так. Но не африканцы, слава Аллаху...

Parasite писал(а):Если серьезно у Вас несколько десятков гигов и все в одной базе Sqlite - могу только посочувствовать. Это полный кошмар.

Угу. Для пробы подсунул СатМапу через апача+скрипты кучку из локального кэша - посмотреть, как оно будет.... Кошмар, да. Особенно доставляет функция vacuum() на многогигабайтной базе. Можно смело идти пить чай дня на 3-4..... :(

Parasite писал(а):К тому же качнул SatMap забавы ради, там же в базе ко всему прочему индекс кривой. Это даже для такого пионера, как я очевидно. Для серверного решения это вообще никак не подходит. Если надо раздавать для многих людей, это надо делать по-моему не САС-ом и не СатМапом, а скриптом, непосредственно лезущим в базу и отдающим тайл.

Разумеется. Сатмап юзается вовсе не как идеал и панацея, а ТОЛЬКО для закачки google_sat - коль скоро SAS еще не обзавелся куками и нормальным обходом гуглебана.
В качестве серверного же решения используется экспорт из СатМапа в тайловый кэш, и далее - мелкий хардверный блочок с Апачем, воткнутый в терабайтный RO-NAS с кэшем. :)
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение KKnishev » 21 фев 2010, 13:31

deeman писал(а):Только что провел эксперимент: создал монтируемый как логический диск образ программой TrueCrypt размером 100МБ (для эксперимента хватит), отформатировал его в FAT32 (на NTFS меньше входит) с размером кластера 512Б (0,5кБ), скопировал туда часть карт Gurtam (пока система не сказала нот енаф спейс). При этом на диск 104МБ влезло 16446 файлов/629 папок, заняв 98Мб (94% - очень неплохой результат). При форматировании с размером кластера 1К вошло уже 15707 файлов и 617 папок, заняв 95Мб(91%). С размером кластера 2К - 14507 файлов/593 папки, размер 92МБ(88,5%). С размером кластера 8К - 9796файлов/515 папок, 64МБ (62%). Результат очевиден: с размером кластера 512Б дисковое пространство расходуется достаточно эффективно. В обычное время, когда я не пользуюсь программой, система воспринимает виртуальный диск как один файл и не очень-то задумывается при операциях с ним.


Выше писал уже, у меня W7 и стандартной функцией смонтированный SASPlanet.vhd (10Гб). В FARe на папке SASPlanet жмёте Ctrl+Q и видите всю правду о вашем кэше. Вот мой: с 1.7 Гб потеря всего 34 Мб... неплохо не правда-ли?! ;)

Папка "SASPlanet"
Содержит:

Папок 27013
Файлов 133650
Размер файлов 1,694,287,870
Упакованный размер 1,694,287,870
Степень сжатия 100%

Размер кластера 512
Реальный размер 1,728,800,256
Остатки кластеров 34,512,386 (1%)
Аватара пользователя
KKnishev
Новичок
 
Сообщения: 9
Зарегистрирован: 09 дек 2009, 21:45
Откуда: Санкт-Петербург
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение ermac » 03 мар 2010, 02:55

А кто пробывал использовать всетаки не файловые контейнеры а реальные носители? Цена всетаки достаточно радужная и мобильность тоже в плюсе.
Я попробывал флешка в NTFS форматнуть, размер кластера 512, размер флешки 2гб, тестовя платформа под win2k8r2 core была :)
sat 169067 файлов, 1 726 032 548 байт / 1 769 291 776 бай - заливал до предела, время заливки кстати было часов 12-14 и это при ubs 2.0 :shock:
both 668442 файла, 169 486 744 байт / 379 270 144 байт - заливку тормознул, так как процесс шел больше суток :cry:
получилось как то не радужно по сравнению с контейнерами и 97% эффективностью использования ФС.
Кто проверял еще, можно результаты ваши озвучить?
И кстати, кто по времени копирует файлы? Семерка вообще вешается при операциях, думал что сервер в core должен был летать, ан нет, не летает нифига он...
- Что же мы будем делать завтра, Брэйн?
- Тоже, что и всегда, Пинки, попробуем захватить мир.
ermac
М.Д.
 
Сообщения: 20
Зарегистрирован: 08 фев 2010, 22:16
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение Parasite » 03 мар 2010, 07:38

ermac писал(а):169067 файлов время заливки кстати было часов 12-14 и это при ubs 2.0 :shock:
668442 файла процесс шел больше суток
Кто проверял еще, можно результаты ваши озвучить?

viewtopic.php?f=2&t=540
(чтобы доп.вопросы не возникали - сперва создается контейнер с диска, потом контейнер распаковывается обратно но уже на флешку. На указанном вами числе файлов это займет минут 10).

Размер кучи = число файлов * (INT(размер файла/размер кластера)+1) * размер кластера, при условии одинакового размера файла. Если размеры разные - применить формулу для каждого файла, результаты просуммировать. Ну и плюс записи в FAT и прочая системная информация.
Пожалуйста, не стОит начинать холивар про "правильность" ФС и размера кластера - ибо из формулы выше видно, что чем меньше размер файла и чем больше размер кластера, тем больше потери, и наоборот. В архиваторах же кластеров нет, и посему накладные "кластерные" потери равны нулю, как и фрагментация.
Публикация ни Ваших, ни чьих других конкретных цифр размера кэша - никому ни в чем не помогает и проблему не решает, и более того - оные цифры могут меняться при переносе на другой носитель.

[i] Оффтопы почищены.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение Uri » 20 мар 2010, 19:23

800MHz armv4, sqlite3, софт свой.
Запросы абсолютно идиотские (select tile from tiles where x=? and y=? and z=?). Все летает. Но хочется большего.

Господа, поделитесь своей структурой БД и запросами к ней?
Uri
Новичок
 
Сообщения: 4
Зарегистрирован: 20 мар 2009, 13:39
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение zed » 21 мар 2010, 00:23

Запросы абсолютно идиотские (select tile from tiles where x=? and y=? and z=?). Все летает. Но хочется большего.

А какой размер БД, сколько в ней всего записей, сколько индексов и по каким полям? Летает с какой скоростью? :) А то ведь, всё относительно...
Могу предложить слить поля x,y,z в одно поле DigitName - int 8 байт - вмещает вплоть до 32-го зума (перевод туда-сюда осуществляется довольно простым алгоритмом). Соответственно, уменьшится количество полей в таблице, и можно сделать всего один праймори индекс. Если селекты всегда выполняются по точному имени (т.е. сразу по всем полям: x,y,z), то это самое оно.

P.S. В селект ещё лучше добавить Limit 1, чтоб поиск останавливался после первого же найденного тайла, а не продолжал лопатить базу до конца.
Хитрости GoogleEarth - то, чего вы не знаете о гугле
Аватара пользователя
zed
Гуру
 
Сообщения: 1519
ICQ: 357167611
Зарегистрирован: 16 авг 2008, 20:21
Откуда: Беларусь, Могилёв
Благодарил (а): 37 раз.
Поблагодарили: 177 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение Parasite » 22 мар 2010, 07:48

zed писал(а):уменьшится количество полей в таблице, и можно сделать всего один праймори индекс.

Большинство современных базоводов допускают создание "составного" primary-key (синтаксис вида "(X,Y,Z) primary key;")
Это имхо разумный компромисс между скоростью выборок по нескольким полям (индекс создается на все поля, указанные в primary key) и "человеческой" читаемостью базы и селектов (не нужно изобретать велосипед с алгоритмом, преобразующим три значения в одно, а потом обратно).
Имхо, потери времени на обработку этого алгоритма в обе стороны - сведут на нет увеличение быстродействия базы на одном int'е вместо трех.
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Аватара пользователя
Parasite
Администратор
 
Сообщения: 4532
ICQ: 15819243
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 57 раз.
Поблагодарили: 214 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение Uri » 22 мар 2010, 12:33

zed писал(а):А какой размер БД, сколько в ней всего записей, сколько индексов и по каким полям?

2ГБ. Записей - хз сколько :)
Индекс один - on (x, y, z).

zed писал(а):Летает с какой скоростью? :) А то ведь, всё относительно...

Летает, это когда человек не получает заметной задержки при загрузке тайлов.

zed писал(а):Могу предложить слить поля x,y,z в одно поле DigitName - int 8 байт - вмещает вплоть до 32-го зума

Идея! Спасибо!

zed писал(а):P.S. В селект ещё лучше добавить Limit 1

Да, это я и сам сделал.
Uri
Новичок
 
Сообщения: 4
Зарегистрирован: 20 мар 2009, 13:39
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение Uri » 22 мар 2010, 12:35

Parasite писал(а):Имхо, потери времени на обработку этого алгоритма в обе стороны - сведут на нет увеличение быстродействия базы на одном int'е вместо трех.

Есть еще один нюанс. Он называется "время работы на одной зарядке аккумулятора". Правда, насколько в данном случае он будет значителен - может решить только эксперимент.
Uri
Новичок
 
Сообщения: 4
Зарегистрирован: 20 мар 2009, 13:39
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Как оптимизировать КЭШ? (Size 2,20 GB. Size on disk 5,40 GB)

Сообщение feya » 22 мар 2010, 13:53

Имхо, потери времени на обработку этого алгоритма в обе стороны - сведут на нет увеличение быстродействия базы на одном int'е вместо трех.

Не, никаких существенных затрат времени не будет.
http://SASGIS.ru | SAS.Планета | SASPlanet
Аватара пользователя
feya
Администратор
 
Сообщения: 2035
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 30 раз.

Пред.След.

Вернуться в SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

cron