Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Глюк Cache с оперативкой или это норма? / 25 сообщений из 42, страница 1 из 2
18.08.2017, 07:48
    #39507252
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Работаю с Таблицей (уже не называю База Данных).
Копирую данные в оперативку. Количество столбцов более 10 и это принципиально.

Еcть значение aaa(1.1) и aaa(1.10). Если задать 1.1, а затем задать 1.10 и считать данные из 1.1, то Каше выдаст нам данные из памяти со значением 1.10

Пример кода и результатов ниже.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BRENT2016>Set aaa(1.1)="aaa001"
 
BRENT2016>Set aaa(1.2)=2
 
BRENT2016>Set aaa(1.10)="No"
 
BRENT2016>Set aaa(1.20)="No"
 
BRENT2016>w aaa(1.1)
No
BRENT2016>w aaa(1.2)
No
...
Рейтинг: 0 / 0
18.08.2017, 07:51
    #39507254
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Если же сделать по другому, то результаты получаются нормальные/адекватные
Назначив не 1.1, а 1.001 и не 1.2, а 1.002

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BRENT2016>set aaa(1.001)="aaa1"
 
BRENT2016>Set aaa(1.002)="Также есть"
 
BRENT2016>Set aaa(1.1)="No111"
 
BRENT2016>Set aaa(1.2)="No222"
 
BRENT2016>w aaa(1.1)
No111
BRENT2016>w aaa(1.001)
aaa1





Вопрос. С чем это может быть связано и почему происходит именно так.
Ошибка обнаружилась совершенно случайно, т.к. в первом поле у меня всегда стоит ДАТА и только из-за этого обнаружилась проблема.
.
...
Рейтинг: 0 / 0
18.08.2017, 07:55
    #39507256
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Да и еще.
Почему могу дать имя aaa(1.001) и не могу дать имя aaa(1.Data) или aaa(1."Data")
...
Рейтинг: 0 / 0
18.08.2017, 08:21
    #39507261
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-ОЕcть значение aaa(1.1) и aaa(1.10). Если задать 1.1, а затем задать 1.10 и считать данные из 1.1, то Каше выдаст нам данные из памяти со значением 1.10

Пример кода и результатов ниже.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BRENT2016>Set aaa(1.1)="aaa001"
 
BRENT2016>Set aaa(1.2)=2
 
BRENT2016>Set aaa(1.10)="No"
 
BRENT2016>Set aaa(1.20)="No"
 
BRENT2016>w aaa(1.1)
No
BRENT2016>w aaa(1.2)
No


Так и должно быть.
Ибо
Код: html
1.
2.
TMP>w 1.1000                                                                   
1.1    
...
Рейтинг: 0 / 0
18.08.2017, 08:23
    #39507262
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-ОДа и еще.
Почему могу дать имя aaa(1.001) и не могу дать имя aaa(1.Data) или aaa(1."Data")
Тут кагбэ нужно правильно "давать".

Код: javascript
1.
2.
s aaa("1.Data")=""
s aaa(1_".Data")=""
...
Рейтинг: 0 / 0
18.08.2017, 08:24
    #39507264
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-О,

Ваша "проблема" заключается в том, что вы значения пишете ч числовом представлении. И вы должны знать, что 1.1 и 1.10 это одно и то же число. И поэтому предыдущее значение терялось. А вот если бы вы взяли значение в кавычки, то оно бы стало текстом, и тогда было бы уже все равно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
USER>set a(1.1)=""

USER>set a(1.10)=""

USER>set a(1.100)=""

USER>set a("1.100")=""

USER>set a("1.10")=""

USER>zw a
a(1.1)=""
a("1.10")=""
a("1.100")=""


привести числовое значение к текстовому можно просто прибавив его с пустой строке, но нужно понимать ""_1.20 даст "1.2" а не "1.20"


О-О-ОПочему могу дать имя aaa(1.001) и не могу дать имя aaa(1.Data) или aaa(1."Data")
А это вообще как вы себе представляете?
почему не делать так как все?
aaa("1.Data")
...
Рейтинг: 0 / 0
18.08.2017, 08:27
    #39507265
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-ОВопрос. С чем это может быть связано и почему происходит именно так.
В первом варианте (1.20) Каше "не хранит" "концевые" нули, т.к. они никому не нужны. И я х/з какие ЯП вообще такое хранят, всегда "концевые" нули "исчезали".

По второму вопросу...
Что вообще такое
Код: javascript
1.
1.Data


или
Код: javascript
1.
1."Data"


т.е. как ты собирался интерпретировать этот синтаксис?
...
Рейтинг: 0 / 0
18.08.2017, 09:04
    #39507283
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
С последним вопросом ответ нашулся.

Нужно было просто делать

Код: sql
1.
Set aaa(1,"Data")=65000



Просто нужна была ЗАПЯТАЯ, а не ТОЧКА!
...
Рейтинг: 0 / 0
18.08.2017, 09:05
    #39507284
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-ОС последним вопросом ответ нашулся.
Алилуя, брат! (с)
...
Рейтинг: 0 / 0
18.08.2017, 09:23
    #39507294
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Немного статистики. Может кому пригодится для оптимизации.
Имеется таблица на 395000 строк. В таблице 154 столбца.

Если данные копировать в оперативку как
EndID - это последняя запись в таблице (394000)

Код: sql
1.
2.
3.
4.
5.
6.
For i=1:1:EndID
{
   Set aaaNew=$System.OBJ.OpenId(BDAnaliz,(i))
      // Где BDAnaliz Это БД откуда будут копироваться данные
   Set aaa(i)=aaaNew
}


c

Вариант №2
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
For i=1:1:EndID
{
   Set Nr=0
   Set aaaNew=$System.OBJ.OpenId(BDAnaliz,(i))
      // Где BDAnaliz Это БД откуда будут копироваться данные
   For em="Data","Vrema",    и т.д . (все 154 столбца)
   {
       Set Nr=Nr+1
       Set zma1="aaa("_i_"."_Nr_")=aaaNew."_em,@zma1
    }
}


Такой вариант занимает ВСЕГО 114 секунд НО остаётся ВСЕГО 2.027 Гб из 9.863 Gb выделенных. Самый быстрый вариант, но самый затратный по оперативке. Вариант получается нечитабельным, т.к. нужно держать в памяти что означает номер с реальными полем из таблицы.

Вариант №3
...
Рейтинг: 0 / 0
18.08.2017, 09:39
    #39507300
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Вариант №3
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
For i=1:1:EndID
{
   Set aaaNew=$System.OBJ.OpenId(BDAnaliz,(i))
   For em="Data","Vrema",    и т.д . (все 154 столбца)
   {
       Set zma1="aaa("_i_"."_""""_em_""""_")=aaaNew."_em,@zma1
    }
}


Такой вариант занимает 144.40 секунды и остаётся 4.028 Гб из 9.863 Gb выделенных. Средний вариант, как по быстроте так и по занимаемой Оперативке. Зато полностью читабелен, т.к. имена данных аналогичные именам данных из таблицы.
Время с удалением данных из оперативки составило 150.39 сек.


БОЛЬШАЯ ПРОБЛЕМА ВАРИАНТА №1 ЭТО УДАЛЕНИЕ ФАЙЛА ИЗ ОПЕРАТИВКИ.
Расчет/копирование занял 233.17 секунды (вот прямо сейчас), а с удалением данных из оперативки занял уже 356.48 сек!!! То есть очень долгий по исполнению (по полному циклу исполнения кода).

Таких проблем с вариантом №2 и вариантом №3 нет.
...
Рейтинг: 0 / 0
18.08.2017, 09:46
    #39507302
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Вариант №1
For i=1:1:EndID
{
Set aaaNew=$System.OBJ.OpenId(BDAnaliz,(i))
// Где BDAnaliz Это БД откуда будут копироваться данные
Set aaa(i)=aaaNew
}

Время исполнения составило 233.17 сек. Доступно 7.324 Гб из 9.863 Гб. Время с удалением данных из оперативки (для дальнейшего выполнения кода уже составило) 356.48 сек. Но этот вариант читабелен, т.к позволяет напрямую обращяться к данным в формате
aaa(1).Data
И данные представлены в такой же структуре, что и таблица. То есть aaa(1).Data
aaa (345).Vrema все также как и в обычной таблице на жестком диске.

Очень читабельная и удобна для работы, но жутко долго загружается и столько же удаляется из оперативки!
.
...
Рейтинг: 0 / 0
18.08.2017, 09:50
    #39507306
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Пардон, в варианте №3 закрылась ошибка
вместо
Код: sql
1.
Set zma1="aaa("_i_"."_""""_em_""""_")=aaaNew."_em,@zma1



нужно писать
Код: sql
1.
Set zma1="aaa("_i_","_""""_em_""""_")=aaaNew."_em,@zma1



то есть не точка, а запятая!
...
Рейтинг: 0 / 0
18.08.2017, 09:53
    #39507308
Глюк_Каше
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-О,
А это прямо необходимость такая иметь одновременно открытых в памяти 395000 объектов (все открываются и не закрываются ни разу !) ?
...
Рейтинг: 0 / 0
18.08.2017, 09:59
    #39507311
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Глюк_Каше,

Для кого то да.

Это комбинаторика, перебор вариантов.
Если это делать с SSD диска, то уходит около 60-75 минут.
Если этот же код делать с данными, скопированными в оперативку, то уходит около 10 минут.
...
Рейтинг: 0 / 0
18.08.2017, 09:59
    #39507312
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
А меня всегда настораживали таблицы, где
О-О-ОВ таблице 154 столбца.

И прям все 154 параметра заполнены у каждой строки?
...
Рейтинг: 0 / 0
18.08.2017, 10:02
    #39507315
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-ОЭто комбинаторика, перебор вариантов.
Не стоит забывать, что Каше это первым делом NoSQL и некоторые энергоемкие задачи удобнее решать именно в этом направлении, а не табличном. ;)

Про саму задачку ты ведь нам не рассказал...
...
Рейтинг: 0 / 0
18.08.2017, 10:03
    #39507319
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
да, и все 154 параметра заполнены в каждой строке (реально заполнены)!.
...
Рейтинг: 0 / 0
18.08.2017, 10:05
    #39507325
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Наше дело поделиться, кому то может и пригодится.
Я сижу на Каше, потому что нет задач, которые нельзя на нём сделать да и скорость его в моём понимании впечатляет.

Да и поздно уже на что то другое переходить.
...
Рейтинг: 0 / 0
18.08.2017, 10:05
    #39507326
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-Ода, и все 154 параметра заполнены в каждой строке (реально заполнены)!.
Все равно остается подозрение, что ты свернул не туда...
Но без знания проблемы ничего больше не скажешь. Ну не должны данные так перелопачиваться. Тут что-то не так.
...
Рейтинг: 0 / 0
18.08.2017, 10:10
    #39507330
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-О , наша практика работы с ЦОДом показала, что на мощных серверах хорошим подспорьем является "многоджобная" технология обработки данных (это наш термин).

Т.е. если разбить "линейную" обработку данных на "куски" и все эти куски обработать отдельным, дочерним процессом, то время обработки практически "делится" на количество этих дочерних джобов. ;)

А вот по каким критериям делать те "куски", это уже решается индивидуально по каждой задаче/проблеме...
...
Рейтинг: 0 / 0
18.08.2017, 10:14
    #39507332
Глюк_Каше
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-О,
Тогда попробуйте, как подсказал krvsa, использовать глобалы напрямую (минуя объектный доступ и SQL). Просто перед именем пишете ^ и все. Например:
set ^tbx( 1, "Vrem" ) = 1547.
Первый индекс от 1 до 395000, а второй - хоть текстовый по имени колонки, хоть числовой (если время, допустим, всегда считать полем № 2, то вместо "Vrem" пишем - 2). А вообще-то, krvsa прав - странная обработка данных. Но без озвученных условий Вам трудно помочь.
...
Рейтинг: 0 / 0
18.08.2017, 10:37
    #39507345
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Глюк_Каше,
Я просто поделился. Помощи не просил.
Что касается много потоковости - наверное так будет быстрее, но мне удобнее так. Просто никогда не знаешь, какие данные потребуются. К тому же они служат ТОЛЬКО ДЛЯ АНАЛИЗА данных по истории (выработка стратегии). Сами торги не идут с таким перелопачиванием данных. Там все проще и быстрее.
...
Рейтинг: 0 / 0
18.08.2017, 10:38
    #39507346
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
Глюк_КашеО-О-О,
Тогда попробуйте, как подсказал krvsa, использовать глобалы напрямую (минуя объектный доступ и SQL). Просто перед именем пишете ^ и все. Например:
set ^tbx( 1, "Vrem" ) = 1547.
Первый индекс от 1 до 395000, а второй - хоть текстовый по имени колонки, хоть числовой (если время, допустим, всегда считать полем № 2, то вместо "Vrem" пишем - 2). А вообще-то, krvsa прав - странная обработка данных. Но без озвученных условий Вам трудно помочь.

Вот как раз таким способом анализ и будет длится 60-75 минут.
...
Рейтинг: 0 / 0
18.08.2017, 10:49
    #39507359
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк Cache с оперативкой или это норма?
О-О-ОЯ просто поделился. Помощи не просил.Зря вы так, для этого форумы и нужны по сути. Никогда нельзя быть уверенными что выбрали единственно верную стратегию. Когда процессы занимают продолжительное время все есть варианты которые могут его ускорить. И будут появлятся новые, при появлении например новых видов оборудования.
Вы например решили свою задачу таким способом, другие решали другим способом. Варианты можно сравнивать и выбирать лучшую стратегию.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Глюк Cache с оперативкой или это норма? / 25 сообщений из 42, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]