|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
Один (!) из клиентов жалуется на то, что у него растет БД CACHETEMP... С чем такое может быть связано? Поскольку наше ПО у всех одинаково и никто пока на такое не жаловался... ---------- Cache for Windows (x86-32) 2009.1.3 (Build 704_0_9104) Mon Mar 8 2010 19:31:10 EST Cache for Windows (x86-64) 2010.2.3 (Build 702) Tue Feb 15 2011 14:20:27 EST Cache for Windows (x86-64) 2012.1.1 (Build 602) Wed Mar 7 2012 22:36:34 EST ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 08:27 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
krvsa, Cachetemp всегда растёт после старта Cache. Вопрос - на что жалуется - 1 TB или больше чем у соседей. Проще всего - посмотреть какие глобалы какого объёма внутри cachetemp. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:00 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
ser_shuCachetemp всегда растёт после старта Cache. Да это-то понятно, тут проблема, как я понял, почему не очищается (после перезапуска системы). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:08 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
Самое простое что приводит к росту CacheTemp - это то что глобалы не чистятся после того как становятся не нужны при старте по умолчанию вроде 240мб Ниже код, который позволит посчитать размеры глобалов, и размеры подузлов, что лучше может помочь найти проблемное место /// Анализ размера глобала, с анализом размера его подузлов, на указанную вложенность /// все необходимые параметры будут запршены при запуске ClassMethod GlobalSize() [ PublicList = (big, DatabaseBlockSize, blksiz, cc, Bytes, Count, gls, lev) ] { s $zt="err" do { s dir=$$getval("Путь к БД",$zu(12,"")) w ! s db=##class(SYS.Database).%OpenId(dir) i '$isobject(db) s dir="" } while dir="" do { s glb=$$getval("Имя глобала","") s glb=$tr(glb,"^") i glb'="",'$d(@("^|""^^"_dir_"""|"_glb)) s glb="" } while glb="" s gls=$$getval("Собирать в буфер (будет очищен)","^gls") do { s lev=$$getval("Глубина расчета","2") i $zstrip(lev,"*N")'="" s lev="" } while lev="" k @gls w ! s Directory=dir /// Папка с БД s Name=glb /// Глобал s rc=$zu(167,6,7,Directory,Name) s x=$zu(49,Directory) s DatabaseBlockSize=+$p(x,",",$$$blksizpiece) ;размер блока /// начальный блок с глобалом s PointerBlock=$p(rc,"^",4) o 63:"^^"_Directory s blk=PointerBlock s (Bytes,Count)=0 s blksiz=DatabaseBlockSize s big='(blksiz=$$$2k) d ..getsize(blk) w !,"Блоков = ",Count w !,"Занимаемое место = ",Bytes q err w !,$ze q getval(mess, def) w !,mess_": "_def_" => " r res i res="" s res=def q res } /// рекурсивный обход блоков ClassMethod getsize(blk, haslong = 0) [ Internal, PublicList = (big, DatabaseBlockSize, blksiz, cc, Bytes, Count, gls, lev) ] { q:'blk v blk #; тип блока s type=$case(DatabaseBlockSize,$$$2k:$$$type2k,:$$$type) w:type'=8 !,$i(cc),?10,blk,?20,type,?30,haslong i type=8 { #; Блок с данными s bts=$$$offsetval(big) // размер блока s blkcnt=0 i haslong { #; составной большой блок данных, данные в нескольких блоках f j=1:1 { s x=$v(j*2,-6) q:x="" s gl=$v(j*2+1,-5) i $a(x)=$$$gdviewbiguni(big)!($a(x)=$$$gdviewbigcompact(big))!($a(x)=$$$gdviewbigbin(big)) { s blkcnt=$p(x,",",2) s Count=Count+blkcnt // общее количество блоков #; размеры блоков s bts=bts+((blkcnt-1)*$$$datasize(blksiz)+$p(x,",",3)) } } } else { s blkcnt=1 // в обычном блоке он один } s t=$i(Count,blkcnt),t=$i(Bytes,bts) try { s gl=$v(1,-5) } catch { s gl="" } d ..cnt(gl,bts,blkcnt) } elseif type'=1 { #; связующие блоки f i=1:1 { s x=$v(i*2-1,-6) q:x="" try { s gl=$v(i*2-1,-5) } catch { s gl="" } #; связанный с текущим блок s datablk=$v(i*2,-5) s haslong=0 i $p($v(i*2,-6),",",1) { s haslong=1 } d ..getsize(datablk,haslong) v blk } } q } /// запись счетчиков в буфер ClassMethod cnt(gl, bts, blkcnt = 1) [ Internal, PublicList = (gls, lev) ] { #; считаем в буфере f i=0:1:lev { s ind="" f j=0:1:i { s ind=ind_$lb($qs(gl,j)) } s t=$i(@gls@(ind,"size"),bts) s t=$i(@gls@(ind,"cnt"),blkcnt) } q } ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:11 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
П.С.М.ser_shuCachetemp всегда растёт после старта Cache. Да это-то понятно, тут проблема, как я понял, почему не очищается (после перезапуска системы). после перезапуска, CacheTemp чистится, но не уменьшается размер БД, такого он делать не умеет можно сам файл CACHE.DAT удалить перед запуском, и при старте он его создаст автоматически ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:12 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
servit Было Но ответа так и небыло... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:33 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
DAiMorНиже код, который позволит посчитать размеры глобалов, и размеры подузлов, что лучше может помочь найти проблемное место Наша клиентура не станет заниматься этим... Т.е. анализом чего-то у них происходящего. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:35 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
DAiMor, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Cache for Windows (x86-32) 2009.1.2 (Build 602.0_SU) Mon Oct 26 2009 15:39:14 EDT откомпилировалось нормально (убрал слова "ClassMethod" и закоментировал PublicList-ы)... версия Каши не та? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:36 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
ser_shuВопрос - на что жалуется - 1 TB или больше чем у соседей. Цитирую... авторЗа день работы CACHETEMP вырос до 14Гб Т.е. "больше чем у соседей". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:36 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
krvsaDAiMorНиже код, который позволит посчитать размеры глобалов, и размеры подузлов, что лучше может помочь найти проблемное место Наша клиентура не станет заниматься этим... Т.е. анализом чего-то у них происходящего. я это знаю, и им незачем этим заниматься там код простой, запустил собрал данные в глобал, глобал можно экспортировать и передать вам а вы уже можете его анализировать вам все равно нужно понять кто не чистит данные раз растет БД, а без анализа данных это сделать бывает затруднительно ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 10:37 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
Можно попробовать "похоронить" проблему, перейдя на приватные глобалы процесса, т.е. с ^CacheTempXXX($Job,i1,...) на ^||XXX(i1,...). Если код написан аккуратно, это не должно быть очень сложно. В случае затруднений предварительный анализ, предложенный DAiMor'ом, помог бы определить, с каких глобалов начинать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 11:30 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
Alexey MaslovМожно попробовать "похоронить" проблему, перейдя на приватные глобалы процесса, т.е. с ^CacheTempXXX($Job,i1,...) на ^||XXX(i1,...). Если код написан аккуратно, это не должно быть очень сложно. В случае затруднений предварительный анализ, предложенный DAiMor'ом, помог бы определить, с каких глобалов начинать. по поводу приватных глобалов, нужно быть тоже поосторожнее. Уже не помним на какой версии (2008.1 или 2010.2.6), но были проблемы с ними, когда мы стали их использовать, у нас распух CacheTemp, и у нас не было никакой возможности понять куда ушло это место. и отследить размер приватного глобала не было возможности ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 11:41 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
DAiMorзапустил собрал данные в глобал, глобал можно экспортировать и передать вам а вы уже можете его анализировать Ясно... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 11:42 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
krvsa , Статистику по размеру глобалов пользователи могут собрать, выполнив запрос в Портале:call %SYS.GlobalQuery_Size('C:\InterSystems\Cache\mgr\cachetemp','','*',1,'',0)PS: уточните точный набор и формат параметров согласно документации Вашей версии СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 11:50 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
servit, Спасибо за идею! Запрос, конечно же, нормально работает через любую внешнюю odbc-утилиту типа WinSQL. Но с каких пор (с какой версии) Портал стал поддерживать CALL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 12:14 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
Кстати, с поднятым FastFlag (Don't return 'Used' count, it would be zero. This is for faster operaton):call %SYS.GlobalQuery_Size('C:\InterSystems\Cache\mgr\cachetemp','','*',1,'', 1 )запрос выполняется практически мгновенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 12:19 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
servit, Мне очень стыдно, но не могли бы Вы уточнить в каком месте портала выполнить этот код? Я знаю только одно место, где можно выполнить код, это "Исполнить SQL запрос", но здесь выдается ошибка Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 12:33 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
Раскрасил выше код пользователя DAiMor. Если кому-то нужно помочь раскрасить свой код, воспользуйтесь кнопкой "Сообщить модератору" - я сделаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 12:51 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
servitРаскрасил выше код пользователя DAiMor. Если кому-то нужно помочь раскрасить свой код, воспользуйтесь кнопкой "Сообщить модератору" - я сделаю. насколько я понимаю ты с помощью SyntaxColoring это делаешь ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 12:59 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
servitуточните точный набор и формат параметров согласно документации Вашей версии СУБД. Пока это сделать проблематично, т.к. местный специалист менят версии 2009 и 2012 то "туда", то "обратно"... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 12:59 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
DirksDR , Alexey Maslov , Это мне должно быть стыдно, что сразу не учёл этот момент. Согласно текущей документации :The Management Portal SQL interface cannot execute a CALL statement. You can execute CALL from Dynamic SQL, Embedded SQL, or SQL Shell. В Портале версии 2013.1.FT1 уже можно вызывать CALL. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 13:08 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
DAiMorнасколько я понимаю ты с помощью SyntaxColoring это делаешь ?В том числе. Сейчас готовится публичный сервис по аналогии с http://highlight.hohli.com/ по раскраске кода для sql.ru и habrahabr.ru Код уже написан, но в WRC должны кое-что доделать. Обещали сделать в версии 2013.2. А до тех пор код могу раскрасить я "вручную". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 13:19 |
|
Растет БД CACHETEMP
|
|||
---|---|---|---|
#18+
В таком формате работает, начиная с Cache 2010.1.4 (более старые версии мне сейчас недоступны):call %SYS.GlobalQuery_Size('C:\InterSystems\Cache\mgr\cachetemp',,'*',1)Противоречий с более новыми версиями здесь, похоже, нет, главное 2-ой параметр (имя системы) именно пропустить, а не делать пустым, и задавать только первые 4 параметра. krvsa , попробуй, может и в 2009.1 "проканает". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2012, 13:32 |
|
|
start [/forum/search_topic.php?author=Buns&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 446ms |
total: | 738ms |
0 / 0 |