|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Глюк_КашеА это прямо необходимость такая иметь одновременно открытых в памяти 395000 объектов (все открываются и не закрываются ни разу !) ?О-О-О, вы хоть и ответили "да", но не объяснили, почему. Возможно, вы просто не знали, что открытые объекты дорого стоят, дороже, чем те же данные, уложенные в локальный массив, да и он, бывает, того... Вы хоть и не просите помощи, а "делитесь", но большинству из нас малоинтересны такие результаты, так как мы знаем, как извлечь из Cache максимум, "если её правильно готовить". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 10:50 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Я бы кстати предложил посмотреть на варианты, хранения базы целиком в памяти, конечно зависит от объема базы. Но возможно и достаточно было бы ограничится буфером глобалов. Задача оптимизации тут конечно вполне себе интересная, и решаемая, в таких случаях можно производительность на порядки улучшать при применении разных средств. И конечно тут уже зависит от ограничений, возможности горизонтального и вертикального массштабирования. Для простоты, вы к примеру тратите сначала довольно много времени на загрузку в локальную память данных из базы, далее работаете с этими данными получаете некий результат. Уверен, что есть возможность отказаться от загрузки в локальную память, и можно работать сразу с базой, и при этом потратить меньше времени на весь процесс. Сам процесс анализа конечно может занять больше времени чем при работе с данными в локальной памяти, но если не тратить время на загрузку, это может оказаться суммарно быстрее. Многозадачность, очень хороший вариант оптимизации. При том, что в некоторых случаях можно задействовать и дополнительные машины для этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 10:57 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Хм, а ТС'у уже давали совет, прочитать хоть какую-нибудь книжку по синтаксису используемого им языка? Или еще нет? Дабы не возникали вопросы вида: Почему могу дать имя aaa(1.001) и не могу дать имя aaa(1.Data) или aaa(1."Data") ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 11:50 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Почитал, посмотрел пример "кода", рассуждения об оперативке ... мдя.... Спасибо что проинформировали нас. О-О-ОМожет кому пригодится для оптимизации. На кой то черт копировать таблицу с диска в локальные переменные непонятной структуры, ожидая когда возникнет ошибка STORAGE из-за ограничения памяти на один процесс, и не зная что локальные массивы после примерно 1000узлов начинают уступать глобалас, фулсканом, через открытие объекта когда можно написать ОДИН MERGE ... Нет, не пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:05 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
DAiMorО-О-ОЯ просто поделился. Помощи не просил.Зря вы так, для этого форумы и нужны по сути. Никогда нельзя быть уверенными что выбрали единственно верную стратегию. Когда процессы занимают продолжительное время все есть варианты которые могут его ускорить. И будут появлятся новые, при появлении например новых видов оборудования. Вы например решили свою задачу таким способом, другие решали другим способом. Варианты можно сравнивать и выбирать лучшую стратегию. Я прощу прощения, если кого обидел. Хотел в конце добавить смайлик, но он не добавился. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:10 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
DAiMorЯ бы кстати предложил посмотреть на варианты, хранения базы целиком в памяти, конечно зависит от объема базы. Но возможно и достаточно было бы ограничится буфером глобалов. Задача оптимизации тут конечно вполне себе интересная, и решаемая, в таких случаях можно производительность на порядки улучшать при применении разных средств. И конечно тут уже зависит от ограничений, возможности горизонтального и вертикального массштабирования. Для простоты, вы к примеру тратите сначала довольно много времени на загрузку в локальную память данных из базы, далее работаете с этими данными получаете некий результат. Уверен, что есть возможность отказаться от загрузки в локальную память, и можно работать сразу с базой, и при этом потратить меньше времени на весь процесс. Сам процесс анализа конечно может занять больше времени чем при работе с данными в локальной памяти, но если не тратить время на загрузку, это может оказаться суммарно быстрее. Многозадачность, очень хороший вариант оптимизации. При том, что в некоторых случаях можно задействовать и дополнительные машины для этого. Давайте посчитаем. 395000 строк и 154 столбца. В сумме около 60,5 млн записей. Каждая запись участвует в перекрестном сравнении как минимум 3-4 раза и это навскидку. Кроме того эти записи сравниваются между собою. Я прикидывал. Каждая ячейка из этого массива участвует в коде от 12 до 24 раз. Если 60 млн записей перемножить на 20 запросов получим 1 мрд обращений к жесткому диску. Выборка с SSD диска около 7500 (40Мб с 4кб блоками запросов в сек (смешанный поток). Итого получаем 1 млд/10000~100'000 сек. Даже если 10'000 это уже 3 часа. Я помню В своё время делал код по анализу с жесткого диска (ССД). Так тогда он потратил 3 часа и проанализировал всего 8%. С тер пор я пытаюсь перетащить данные в оперативку. Скорость оперативки 35Гбайт сек. То есть даже сравнивать бесполезно. Писать же код в котором нужно что то анализировать (часть данных загрузить и анализировать их между собою), а что то не нужно, это ОЧЕНЬ усложняет код и постоянно нужно держать в голове, какие сейчас части проанализированы. Получается путаница и никакого удовольствия от программирования. Если есть ресурс по железу, а он и не такой уж и большой требуется, то зачем создавать лишние проблемы? . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:23 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
PtnПочитал, посмотрел пример "кода", рассуждения об оперативке ... мдя.... Спасибо что проинформировали нас. О-О-ОМожет кому пригодится для оптимизации. На кой то черт копировать таблицу с диска в локальные переменные непонятной структуры, ожидая когда возникнет ошибка STORAGE из-за ограничения памяти на один процесс, и не зная что локальные массивы после примерно 1000узлов начинают уступать глобалас, фулсканом, через открытие объекта когда можно написать ОДИН MERGE ... Нет, не пригодится. MERGE скопировать то можно, а вот вытащить из него из оперативки ничего не получается. Как кусок камня. Он вроде бы и есть, а толку для анализа ноль. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:25 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Ptn, ожидая когда возникнет ошибка STORAGE из-за ограничения памяти на один процесс, Это легко настраивается в настройках Каше. Да, по умолчанию там стоит около 256 мб и еще там стоит кучу узких месть К примеру вы не сможите ОДНОВРЕМЕННО запустить 30 фоновых процессов, так как Каше просто ляжет. и таких мелочей много. НО!!! Если полазить по настройкам Каше, то ОЧЕНЬ можно СУЩЕСТВЕННО увеличить быстродействие и отзывчивость системы. То есть каше можно настроить под экономичный, под стандартные и под высоконагруженный проект. Я же говорю, что Каше очень хорошая БД, она эластичная, и легко выполняет все нужды для программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:31 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Под Одновременно имеется ввиду, что одновременно запускается команда Job Для 30 процессов, а не фоновая работа 30 процессов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 12:33 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
О-О-О, о каком постоянном чтении с диска речь, почитайте про буфер глобалов ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 13:09 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
О-О-О, авторЕсли 60 млн записей перемножить на 20 запросов получим 1 мрд обращений к жесткому диску. Начиная с этого места Ваш расчет никуда не годится. Обращаясь к СУБД данные проходят кэш диска "как железного" устройства, кэш операционной системы, где буферизируются операции ввода вывода, кэш самой СУБД - данные, что лежат в памяти. Судя по описанию, Вам один раз нужно будет прочесть все данные в ОЗУ (то есть они туда точно попадут). Но физических чтений с диска будет намного меньше... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 13:35 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Глюк_Каше, Дабы внести ясность я сделал следующее Я посчитал сумму одной переменной во всех 395000 строк. Сперва тупо обращаясь к Таблице (глобалу) Второй вариант - Сделал то же самое из суммы в памяти ПК. Этот шаг разделён на две части - первая - копирование данные в память. Вторая часть непосредственно суммирование данных. Вот что получилось Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46.
С SSD диска время составило 10.98 сек Из Оперативки 0.69 сек Код привожу ниже, чтобы не говорили, что код не оптимизирован и избыточен. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 16:07 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Я не читал внимательно весь топик, но после вот этого О-О-ОaNew=$System.OBJ.OpenId(BDAnaliz,(i)) говорить о какой-то оптимизации бессмысленно. Объекты - это стильно, модно, молодежно, но если вам нужна массовая обработка данных, постарайтесь избежать их использования. Оптимальный баланс поддерживаемости кода и скорости - sql, но если уж хотите экстрима, то можно и на глобалах писать. Дальше, глобалы тоже бывают разные. Есть просто глобалы, есть глобалы замапленные на CACHETEMP или process-private глобалы. У них разные настройки кэширования, глобалы CACHETEMP и process-private будут по максиму использовать буфер глобалов. Локальные переменные же используют память процесса, причем большие объемы этой памяти ранние версии Каше обрабатывали очень плохо, из-за чего cachetemp/process-private выигрывали по скорости. Ну и так, как это все-таки глобалы, на них можно натягивать классы и таблицы. Т.е. вы можете смержить глобал с диска в process-private и дальше работать с ним, как с таблицей, но по сути, в памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2017, 20:30 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Блок А.Н.говорить о какой-то оптимизации бессмысленно В который раз убеждаюсь в непотопляемости Cache: и 30-ю процессами её не уложить, и базой данных в локальном массиве (эдак на гигабайт) не удивить. Если "На М можно запрограммировать даже ветер в голове" (© А.Шуревский), то на COS с его объектами и пр. - тайфун или торнадо. Начиная с версии 2010.1, Cache стала быстрее работать с локальными массивами, чем с глобалами, даже закешированными. Выигрыш конечно зависит от задачи, и не всегда его легко оценить. Последний раз, когда мне удалось это сделать, он был в несколько раз. Могу освежить подробности, если это кому-то интересно. Массив был на 1000000 узлов, ЕМНИП. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.08.2017, 12:38 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Alexey MaslovВ который раз убеждаюсь в непотопляемости Cache: и 30-ю процессами её не уложить, и базой данных в локальном массиве (эдак на гигабайт) не удивить. Если "На М можно запрограммировать даже ветер в голове" ( Вот именно. Для программирования ветра в голове хорошо подходит, для остального не очень. Автору вопроса лучше бы перейти на нормальную базу, а не возиться с Cache. Чем раньше, тем меньше будет потрачено зря времени. А то пользователей мало (причём, как можно сообразить, это неспроста) и от тех, что есть вместо поддержки мы тут видим восхваление Cache методом выдачи недостатков за достоинства.. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2017, 11:14 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Partisan M, насколько я понимаю, в этом случае Каше используется для решения аналитических задач, и "нормальная база" тут явно не потянет. Я бы понял, если бы вы посоветовали что-то из математического арсенала или языки программирования общего назначения (для которых, мне кажется, у ТС слабовата подготовка), но реляционная субд тут как-то не очень (да и Каше используется не в качестве реляционной СУБД). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2017, 11:51 |
|
Глюк Cache с оперативкой или это норма?
|
|||
---|---|---|---|
#18+
Partisan Mперейти на нормальную базуУважаемый, а что по вашему мнению нормальная база? Мое мнение такого, если СУБД справляется с поставленной задачей, то в чем могут быть проблемы? Непопулярность не причина в том что от нее нужно отказыватся. Во всех СУБД если свои сильные и слабые стороны, и в некоторых случаях Caché конечно нет смысла использовать, а в других она подходит лучше. И данный форум существует не для того чтобы его посетителям говорили, что Caché нельзя пользоваться. А помогать им в работе с ним. Если кого то волнует вопрос выбора СУБД, для этого есть другой форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2017, 11:52 |
|
|
start [/forum/topic.php?fid=39&msg=39507823&tid=1556326]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 281ms |
total: | 421ms |
0 / 0 |