Производительность 1С ? Миф, реальность, РЛС, postgres !

  1. 9 г. назад

    Если у кого есть интерес, прошу присоединятся, будем искать пути !

    Обычное открытие формы справочника подразделения организаций :

    "SELECT
    T1._IDRRef,
    T1._Code,
    T1._Description,
    T1._Fld2165,
    T1._Marked,
    CASE WHEN T1._PredefinedID > '\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000\\000'::bytea THEN TRUE ELSE FALSE END,
    T1._OwnerIDRRef
    FROM _Reference106 T1
    WHERE ((T1._Fld628 = 0)) AND (EXISTS(SELECT
    TRUE AS Q_001_F_000_
    FROM _Reference57 T2
    INNER JOIN _Reference43 T3
    ON (((T2._Fld1245 = 'Справочник.ПодразделенияОрганизаций'::mvarchar) AND EXISTS(SELECT
    TRUE AS Q_004_F_000_
    FROM _InfoRg21453 T4
    WHERE ((T4._Fld628 = 0)) AND ((T4._Fld21454RRef = T2._IDRRef) AND (T4._Fld21455RRef = T3._IDRRef)))) AND T3._IDRRef IN
    (SELECT
    T5._Reference43_IDRRef AS Q_005_F_000RRef
    FROM _Reference43_VT1016 T5
    INNER JOIN _InfoRg11615 T6
    ON ((T6._Fld11617_TYPE = '\\010'::bytea AND T6._Fld11617_RTRef = '\\000\\000\\000k'::bytea AND T6._Fld11617_RRRef = '\\246\\340\\364\\316F\\266\\365\\343\\021\\344~\\321\\2268\\037e'::bytea) AND (T6._Fld11616_TYPE = T5._Fld1018_TYPE AND T6._Fld11616_RTRef = T5._Fld1018_RTRef AND T6._Fld11616_RRRef = T5._Fld1018_RRRef))
    WHERE ((T5._Fld628 = 0)) AND (T6._Fld628 = 0)))
    WHERE ((T3._Fld628 = 0)) AND (('\\010'::bytea <> '\\001'::bytea) AND (CASE WHEN EXISTS(SELECT
    TRUE AS Q_002_F_000_
    FROM _InfoRg10569 T7
    WHERE ((T7._Fld628 = 0)) AND ((T7._Fld10570RRef = T3._IDRRef) AND (T7._Fld10573_TYPE = '\\010'::bytea AND T7._Fld10573_RTRef = '\\000\\000\\000Q'::bytea AND T7._Fld10573_RRRef = T1._OwnerIDRRef))) THEN TRUE ELSE FALSE END = CASE WHEN EXISTS(SELECT
    TRUE AS Q_003_F_000_
    FROM _InfoRg23345 T8
    WHERE ((T8._Fld628 = 0)) AND ((T8._Fld23346RRef = T3._IDRRef) AND T8._Fld23347_TYPE = '\\010'::bytea AND T8._Fld23347_RTRef = '\\000\\000\\000Q'::bytea AND (T8._Fld23348 = FALSE))) THEN TRUE ELSE FALSE END))) OR EXISTS(SELECT
    TRUE AS Q_001_F_000_
    FROM _Reference57 T9
    INNER JOIN _Reference43 T10
    ON (((T9._Fld1245 = 'Справочник.ПодразделенияОрганизаций'::mvarchar) AND EXISTS(SELECT
    TRUE AS Q_004_F_000_
    FROM _InfoRg21453 T11
    WHERE ((T11._Fld628 = 0)) AND ((T11._Fld21454RRef = T9._IDRRef) AND (T11._Fld21455RRef = T10._IDRRef)))) AND T10._IDRRef IN
    (SELECT
    T12._Reference43_IDRRef AS Q_005_F_000RRef
    FROM _Reference43_VT1016 T12
    INNER JOIN _InfoRg11615 T13
    ON ((T13._Fld11617_TYPE = '\\010'::bytea AND T13._Fld11617_RTRef = '\\000\\000\\000k'::bytea AND T13._Fld11617_RRRef = '\\246\\340\\364\\316F\\266\\365\\343\\021\\344~\\321\\2268\\037e'::bytea) AND (T13._Fld11616_TYPE = T12._Fld1018_TYPE AND T13._Fld11616_RTRef = T12._Fld1018_RTRef AND T13._Fld11616_RRRef = T12._Fld1018_RRRef))
    WHERE ((T12._Fld628 = 0)) AND (T13._Fld628 = 0)))
    WHERE ((T10._Fld628 = 0)) AND ((CASE WHEN EXISTS(SELECT
    TRUE AS Q_002_F_000_
    FROM _InfoRg10569 T14
    WHERE ((T14._Fld628 = 0)) AND ((T14._Fld10570RRef = T10._IDRRef) AND (T14._Fld10573_TYPE = '\\010'::bytea AND T14._Fld10573_RTRef = '\\000\\000\\000Q'::bytea AND T14._Fld10573_RRRef = T1._OwnerIDRRef))) THEN TRUE ELSE FALSE END = CASE WHEN EXISTS(SELECT
    TRUE AS Q_003_F_000_
    FROM _InfoRg23345 T15
    WHERE ((T15._Fld628 = 0)) AND ((T15._Fld23346RRef = T10._IDRRef) AND T15._Fld23347_TYPE = '\\010'::bytea AND T15._Fld23347_RTRef = '\\000\\000\\000Q'::bytea AND (T15._Fld23348 = FALSE))) THEN TRUE ELSE FALSE END))))
    ORDER BY (T1._Fld2165), (T1._IDRRef) LIMIT 45"

    Вот такой запрос выполняется 14 сек. !!!

    План запроса тут:

    № п/п Stmt text
    1 "Limit (cost=694505.20..694505.31 rows=45 width=135) (actual time=8006.548..8006.552 rows=16 loops=1)
    2 -> Sort (cost=694505.20..694505.36 rows=64 width=135) (actual time=8006.547..8006.547 rows=16 loops=1)
    3 Sort Key: t1._fld2165, t1._idrref
    4 Sort Method: quicksort Memory: 27kB
    5 -> Seq Scan on _reference106 t1 (cost=0.00..694503.28 rows=64 width=135) (actual time=119.914..8006.496 rows=16 loops=1)
    6 Filter: ((_fld628 = 0::numeric) AND ((SubPlan 5) OR (SubPlan 10)))
    7 Rows Removed by Filter: 71
    8 SubPlan 5
    9 -> Nested Loop Semi Join (cost=8.28..4085.29 rows=1 width=0) (actual time=46.703..46.703 rows=0 loops=87)
    10 -> Nested Loop (cost=8.28..4083.95 rows=1 width=40) (actual time=6.296..46.418 rows=45 loops=87)
    11 -> Hash Join (cost=8.28..4067.11 rows=1 width=20) (actual time=6.233..43.460 rows=208 loops=87)
    12 Hash Cond: (t4._fld21454rref = t2._idrref)
    13 -> Seq Scan on _inforg21453 t4 (cost=0.00..3559.95 rows=132876 width=40) (actual time=0.003..31.451 rows=110482 loops=87)
    14 Filter: (_fld628 = 0::numeric)
    15 -> Hash (cost=8.27..8.27 rows=1 width=20) (actual time=0.024..0.024 rows=1 loops=1)
    16 Buckets: 1024 Batches: 1 Memory Usage: 1kB
    17 -> Index Only Scan using _referenc57_byfield1253_sr on _reference57 t2 (cost=0.00..8.27 rows=1 width=20) (actual time=0.021..0.021 rows=1 loops=1)
    18 Index Cond: (_fld1245 = 'Справочник.ПодразделенияОрганизаций'::mvarchar)
    19 Heap Fetches: 1
    20 -> Index Only Scan using _reference43hpk on _reference43 t3 (cost=0.00..16.83 rows=1 width=20) (actual time=0.014..0.014 rows=0 loops=18115)
    21 Index Cond: ((_fld628 = 0::numeric) AND (_idrref = t4._fld21455rref))
    22 Filter: (CASE WHEN (alternatives: SubPlan 1 or hashed SubPlan 2) THEN true ELSE false END = CASE WHEN (alternatives: SubPlan 3 or hashed SubPlan 4) THEN true ELSE false END)
    23 Rows Removed by Filter: 1
    24 Heap Fetches: 18115
    25 SubPlan 1
    26 -> Index Only Scan using _infor10569_bydims10575_rr on _inforg10569 t7 (cost=0.00..8.28 rows=1 width=0) (actual time=0.005..0.005 rows=0 loops=18115)
    27 Index Cond: ((_fld628 = 0::numeric) AND (_fld10573_type = '\\x08'::bytea) AND (_fld10573_rtref = '\\x00000051'::bytea) AND (_fld10573_rrref = t1._owneridrref) AND (_fld10570rref = t3._idrref))
    28 Heap Fetches: 2669
    29 SubPlan 2
    30 -> Bitmap Heap Scan on _inforg10569 t7 (cost=4.56..11.96 rows=20 width=20) (never executed)
    31 Recheck Cond: ((_fld628 = 0::numeric) AND (_fld10573_type = '\\x08'::bytea) AND (_fld10573_rtref = '\\x00000051'::bytea) AND (_fld10573_rrref = t1._owneridrref))
    32 -> Bitmap Index Scan on _infor10569_bydims10575_rr (cost=0.00..4.55 rows=20 width=0) (never executed)
    33 Index Cond: ((_fld628 = 0::numeric) AND (_fld10573_type = '\\x08'::bytea) AND (_fld10573_rtref = '\\x00000051'::bytea) AND (_fld10573_rrref = t1._owneridrref))
    34 SubPlan 3
    35 -> Index Scan using _infor23345_bydims_rr on _inforg23345 t8 (cost=0.00..8.28 rows=1 width=0) (actual time=0.005..0.005 rows=1 loops=18115)
    36 Index Cond: ((_fld628 = 0::numeric) AND (_fld23346rref = t3._idrref) AND (_fld23347_type = '\\x08'::bytea) AND (_fld23347_rtref = '\\x00000051'::bytea))
    37 Filter: (NOT _fld23348)
    38 Rows Removed by Filter: 0
    39 SubPlan 4
    40 -> Bitmap Heap Scan on _inforg23345 t8 (cost=15.48..46.69 rows=21 width=20) (never executed)
    41 Recheck Cond: ((_fld628 = 0::numeric) AND (_fld23347_type = '\\x08'::bytea) AND (_fld23347_rtref = '\\x00000051'::bytea))
    42 Filter: (NOT _fld23348)
    43 -> Bitmap Index Scan on _infor23345_byresource23352_lrr (cost=0.00..15.48 rows=22 width=0) (never executed)
    44 Index Cond: ((_fld628 = 0::numeric) AND (_fld23348 = false) AND (_fld23347_type = '\\x08'::bytea) AND (_fld23347_rtref = '\\x00000051'::bytea))
    45 -> Nested Loop (cost=0.00..0.67 rows=1 width=20) (actual time=0.006..0.006 rows=0 loops=3933)
    46 -> Index Scan using _referenc43_vt1016_intkeyind on _reference43_vt1016 t5 (cost=0.00..0.27 rows=1 width=53) (actual time=0.002..0.002 rows=1 loops=3933)
    47 Index Cond: ((_fld628 = 0::numeric) AND (_reference43_idrref = t4._fld21455rref))
    48 -> Index Only Scan using _infor11615_bydims11618_rr on _inforg11615 t6 (cost=0.00..0.38 rows=1 width=33) (actual time=0.004..0.004 rows=0 loops=2556)
    49 Index Cond: ((_fld628 = 0::numeric) AND (_fld11617_type = '\\x08'::bytea) AND (_fld11617_rtref = '\\x0000006b'::bytea) AND (_fld11617_rrref = '\\xa6e0f4ce46b6f5e311e47ed196381f65'::bytea) AND (_fld11616_type = t5._fld1018_type) AND (_fld11616_rtref = t5._fld1018_rtref) AND (_fld11616_rrref = t5._fld1018_rrref))
    50 Heap Fetches: 16
    51 SubPlan 10
    52 -> Nested Loop Semi Join (cost=8.28..4085.29 rows=1 width=0) (actual time=55.533..55.533 rows=0 loops=71)
    53 -> Nested Loop (cost=8.28..4083.95 rows=1 width=40) (actual time=6.363..55.213 rows=51 loops=71)
    54 -> Hash Join (cost=8.28..4067.11 rows=1 width=20) (actual time=6.297..51.879 rows=233 loops=71)
    55 Hash Cond: (t11._fld21454rref = t9._idrref)
    56 -> Seq Scan on _inforg21453 t11 (cost=0.00..3559.95 rows=132876 width=40) (actual time=0.003..37.610 rows=131737 loops=71)
    57 Filter: (_fld628 = 0::numeric)
    58 -> Hash (cost=8.27..8.27 rows=1 width=20) (actual time=0.019..0.019 rows=1 loops=1)
    59 Buckets: 1024 Batches: 1 Memory Usage: 1kB
    60 -> Index Only Scan using _referenc57_byfield1253_sr on _reference57 t9 (cost=0.00..8.27 rows=1 width=20) (actual time=0.016..0.017 rows=1 loops=1)
    61 Index Cond: (_fld1245 = 'Справочник.ПодразделенияОрганизаций'::mvarchar)
    62 Heap Fetches: 1
    63 -> Index Only Scan using _reference43hpk on _reference43 t10 (cost=0.00..16.83 rows=1 width=20) (actual time=0.014..0.014 rows=0 loops=16543)
    64 Index Cond: ((_fld628 = 0::numeric) AND (_idrref = t11._fld21455rref))
    65 Filter: (CASE WHEN (alternatives: SubPlan 6 or hashed SubPlan 7) THEN true ELSE false END = CASE WHEN (alternatives: SubPlan 8 or hashed SubPlan 9) THEN true ELSE false END)
    66 Rows Removed by Filter: 1
    67 Heap Fetches: 16543
    68 SubPlan 6
    69 -> Index Only Scan using _infor10569_bydims10575_rr on _inforg10569 t14 (cost=0.00..8.28 rows=1 width=0) (actual time=0.005..0.005 rows=0 loops=16543)
    70 Index Cond: ((_fld628 = 0::numeric) AND (_fld10573_type = '\\x08'::bytea) AND (_fld10573_rtref = '\\x00000051'::bytea) AND (_fld10573_rrref = t1._owneridrref) AND (_fld10570rref = t10._idrref))
    71 Heap Fetches: 2453
    72 SubPlan 7
    73 -> Bitmap Heap Scan on _inforg10569 t14 (cost=4.56..11.96 rows=20 width=20) (never executed)
    74 Recheck Cond: ((_fld628 = 0::numeric) AND (_fld10573_type = '\\x08'::bytea) AND (_fld10573_rtref = '\\x00000051'::bytea) AND (_fld10573_rrref = t1._owneridrref))
    75 -> Bitmap Index Scan on _infor10569_bydims10575_rr (cost=0.00..4.55 rows=20 width=0) (never executed)
    76 Index Cond: ((_fld628 = 0::numeric) AND (_fld10573_type = '\\x08'::bytea) AND (_fld10573_rtref = '\\x00000051'::bytea) AND (_fld10573_rrref = t1._owneridrref))
    77 SubPlan 8
    78 -> Index Scan using _infor23345_bydims_rr on _inforg23345 t15 (cost=0.00..8.28 rows=1 width=0) (actual time=0.005..0.005 rows=1 loops=16543)
    79 Index Cond: ((_fld628 = 0::numeric) AND (_fld23346rref = t10._idrref) AND (_fld23347_type = '\\x08'::bytea) AND (_fld23347_rtref = '\\x00000051'::bytea))
    80 Filter: (NOT _fld23348)
    81 Rows Removed by Filter: 0
    82 SubPlan 9
    83 -> Bitmap Heap Scan on _inforg23345 t15 (cost=15.48..46.69 rows=21 width=20) (never executed)
    84 Recheck Cond: ((_fld628 = 0::numeric) AND (_fld23347_type = '\\x08'::bytea) AND (_fld23347_rtref = '\\x00000051'::bytea))
    85 Filter: (NOT _fld23348)
    86 -> Bitmap Index Scan on _infor23345_byresource23352_lrr (cost=0.00..15.48 rows=22 width=0) (never executed)
    87 Index Cond: ((_fld628 = 0::numeric) AND (_fld23348 = false) AND (_fld23347_type = '\\x08'::bytea) AND (_fld23347_rtref = '\\x00000051'::bytea))
    88 -> Nested Loop (cost=0.00..0.67 rows=1 width=20) (actual time=0.006..0.006 rows=0 loops=3589)
    89 -> Index Scan using _referenc43_vt1016_intkeyind on _reference43_vt1016 t12 (cost=0.00..0.27 rows=1 width=53) (actual time=0.002..0.002 rows=1 loops=3589)
    90 Index Cond: ((_fld628 = 0::numeric) AND (_reference43_idrref = t11._fld21455rref))
    91 -> Index Only Scan using _infor11615_bydims11618_rr on _inforg11615 t13 (cost=0.00..0.38 rows=1 width=33) (actual time=0.004..0.004 rows=0 loops=2365)
    92 Index Cond: ((_fld628 = 0::numeric) AND (_fld11617_type = '\\x08'::bytea) AND (_fld11617_rtref = '\\x0000006b'::bytea) AND (_fld11617_rrref = '\\xa6e0f4ce46b6f5e311e47ed196381f65'::bytea) AND (_fld11616_type = t12._fld1018_type) AND (_fld11616_rtref = t12._fld1018_rtref) AND (_fld11616_rrref = t12._fld1018_rrref))
    93 Heap Fetches: 0
    94 Total runtime: 8006.736 ms

    Если вдруг кто увидит с наскока чего нужно и где подкрутить, буду премного благодарен !
    Ну сам так же буду искать варианты, здесь отпишусь по результатам !

  2. а без РЛС?

  3. Ща это следующий этап

  4. глупый вопрос: сборку постгри от 1С ставил?

    Ответы: (8)
  5. тии делал?

  6. http://interface31.ru/tech_it/2014/05/tipovye-oshibki-ustanovki-servera-1s-i-postgresql-na-platforme-linux.html

    там каммент Лустина есть

    Если кто-то придет сюда, также как и я через Google оставлю ссылку:

    1. ключевая в нашем случае это https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server

    2. но не надо забывать, что частично патч от 1С уже выполняет тюнинг конфигурационного файла postgresql.conf - важно посмотреть этот патч и увидеть что сами 1С-ники меняют в настройках

    3. "тормоза" с postgresql чаще всего связаны с 2-мя вещами: "веселухой" с AUTOVACUUM или с автоматическими блокировками (если есть еще люди, которые в нужных местах управляемые НЕ расставили).

    4 если табель в ЗУП формируется по одному сотруднику 15 минут, даже если сотрудников 25000 - проблема точно в накопленных читающими версиях, в момент записи пишущими. То есть если у вас индексируемое поле, и фильтр точно идет по одному ссылочному значению (у нас же ссылка на это почти guid - xchar(16)), а запрос на стороне 1С "тормозит" - надо смотреть в сторону версий записей.

    5. отдельно нужно зайти на http://www.sigaev.ru/ - мало кто знает что в патч от 1С встроены некоторые его модули: тоже очень важно их изучить

  7. http://v8.1c.ru/overview/postgres_patches_notes.htm

    Ответы: (8)
  8. Тут тема есть, есть СУБД Линтер, 1С-ники подхватились, им нравится идея отечественной СУБД под 1С
    http://linter.ru/ru/forum/?PAGE_NAME=read&FID=18&TID=71&TITLE_SEO=71-planiruetsya-li-sotrudnichestvo-s-1s

    Ответы: (9) (52)
  9. andrewks глупый вопрос: сборку постгри от 1С ставил?

    Ну как бы да, хотя судя по (6), ща буду изучать этот момент. на users они наверняка выкладывают все необходимое в сборке !

    Ответы: (10)
  10. trdm Тут тема есть, есть СУБД Линтер, 1С-ники подхватились, им нравится идея отечественной СУБД под 1С
    http://linter.ru/ru/forum/?PAGE_NAME=read&FID=18&TID=71&TITLE_SEO=71-planiruetsya-li-sotrudnichestvo-s-1s

    Исходный код открыт ? Если нет в топку.

  11. (8) обрати там внимание на последние интересные патчи

  12. То то я смотрю много толка от того что сорцы у слона открыты. Мифология в наше время на IT распространилась.

    Ответы: (12) (13)
  13. trdm ного толка от того что сорцы у слона открыты.

    ну, вообще-то, да. люди свои патчи предлагают, плюс можно провести аудит кода

    Ответы: (14)
  14. trdm То то я смотрю много толка от того что сорцы у слона открыты. Мифология в наше время на IT распространилась.

    Причем смотри, я не говорю что открытый код = бесплатно, если слон станет платным, но в то же время будет с открытым исходным кодом, это все равно на порядок интереснее чем, покупать с закрытым кодом.

  15. andrewks ну, вообще-то, да. люди свои патчи предлагают, плюс можно провести аудит кода

    На такое способны немногие. Очень немногие. И время у тех немногих не всегда есть.
    Так что если продукт огромен, с ним не каждый справится.

    Ответы: (15)
  16. trdm На такое способны немногие. Очень немногие.

    это так. и что?

    а вообще, это ёмкая тема, для отдельного обсуждения

  17. Я ЗА ОТКРЫТЙ КОД + платная поддержка. Это самый лучший вариант в области ПО.

    Ответы: (17) (18) (53)
  18. 20.03.2015 10:01:01 отредактировано trdm

    Будущий_Олигарх Я ЗА ОТКРЫТЙ КОД + платная поддержка. Это самый лучший вариант в области ПО.

    Да я как-бы тоже "за". Только между проприоритарным ЗАКРЫТЫМ забугорым и нашим, я предпочту наше. :)

  19. Будущий_Олигарх Я ЗА ОТКРЫТЙ КОД + платная поддержка. Это самый лучший вариант в области ПО.

    не всегда.

    микрософт например не разделяет твои убеждения и правильно делают

    Ответы: (25)
  20. открытый код для тех, кто не является системным программистом, не знаток бд, ос и прочее, не имеет никакого смысла...

    Ответы: (20) (21)
  21. 20.03.2015 10:37:01 отредактировано trdm

    Хоботов открытый код для тех, кто не является системным программистом, не знаток бд, ос и прочее, не имеет никакого смысла...

    есть еще фанатики идеи. типа http://forum330.com/forum/member/509

  22. (19) и что это доказывает?

    Ответы: (22)
  23. (21) что открытость кода может являться преимуществом для тех, кто является очень квалифицированным программистом с огромным кругозором...для 99 процентом программистов открытость кода не является преимуществом. Для бизнеса открытость кода не является значимым признаком...единственное, где открытость кода может иметь значение, имхо, это безопасность...когда потребителю очень важна безопасность использования приложений, исключение утечки данных. В линуксе, юниксе многие правят ошибки по хау-ту, даже не понимая, что и зачем они исправляют...вбили волшебные строчки в конф. файл, и вроде как хакер и причастный к модификации открытого кода...а времени убивает немерено и гемора тоже немерено...

    Ответы: (23)
  24. (22) тебя послушать - так законы не надо публиковать, всё равно в них разбираются только опытные юристы и адвокаты, а среднестатистический гражданин там нифига не поймёт.
    так что, если у него возникнут вопросы по законам - пусть обращается в гос.органы, или к юристу/адвокату.
    ишь ты, понапридумывали всяких гарантов-консультантов

    Ответы: (24)
  25. (23) вывод не верный...чтобы разобраться в открытом коде - требуется немерянная квалификация, полезность открытого кода для большинства нулевая... что разобраться в законе, большой квалификации не требуется, кроме того, можно почитать инф. письма, разъяснения, комментарии, статьи аудиторов. Но, юристы/адвокаты часто требуется...чтобы понять почему, достаточно обратиться к сериалу "Хорошая жена"

    Ответы: (27)
  26. Stim не всегда.

    микрософт например не разделяет твои убеждения и правильно делают

    Ну тенденция кстати идет в другую сторону и Microsoft в последнее время выложил много чего интересного.

  27. Давайте в отдельную ветку перейдем по поводу плюсов и минусов опенсурса.
    Я ща буду тут писать алгоритм оптимизации и разработки этого запроса. И варианты решения проблем !

  28. Хоботов что разобраться в законе, большой квалификации не требуется, кроме того, можно почитать инф. письма, разъяснения, комментарии, статьи аудиторов.

    вывод неверный.

    плюс так же можно сказать:

    чтобы разобраться в открытом коде - можно почитать книги, статьи, разъяснения, форумы, почитать крутых программеров, которые уже копались в этом коде

  29. но, хочу отметить, что по моим наблюдениям полезность К+/Гаранта для бухов - почти нулевая...для юристов полезно...а для бухов только статьи аудиторов...т.е. информацию, носящую прикладную направленность...чтобы разобраться в открытом коде, аналогичные меры не помогут...но, это имхо, конечно, подкрепленное наблюдениями не только за собой, но и за другими людьми, участниками форумов определенной направленности: абсолютное большинство сопричастных проявляют абсолютную беспомощность...еще раз: хау-ту - это как шаманство, те кто их использует, они не понимают, как и почему это работает...это как в шахматах, математике, физике...я встречал многих, кто понятия не имея о DNS, тем не менее настраивали в серверных осях его работу по хау-ту, книжках по шагам...

  30. 20.03.2015 11:43:04 отредактировано Будущий_Олигарх

    Уважаемые коллеги ! Не могли Вы кинуть сюда кол-во строк из своих баз

    РегистрСведений.ТаблицыГруппДоступа у меня 136686 строк.

    В частности интересует у кого БП 3.0 или конфы написанные на базе БСП с использованием их разграничения !

    Ответы: (41)
  31. Основная проблема которая у меня сейчас вылезла это то что по данной таблице
    РегистрСведений.ТаблицыГруппДоступа (_InfoRg21453) происходит
    Seq Scan on _inforg21453 t11 (cost=0.00..3559.95 rows=132876 width=40)

    И что то мне подсказывает, что такого не должно быть ?

  32. 20.03.2015 13:35:59 отредактировано fisher

    Меня БСП-шные RLS вообще дико напрягают.
    Универсальность и удобство использования это, конечно, здорово.
    Но производительность на больших объемах данных - это жесть.
    ЗЫ. Но это безотносительно сабжа.

    Ответы: (32)
  33. (31) Сабж как раз об этом и звучит!

  34. 20.03.2015 13:51:30 отредактировано Будущий_Олигарх

    Гилёв сказал так

    откажитесь от рлс
    ограничьте доступ в интерфейсе

    В принципе можно сказать и так "откажитесь от 1С" )))

    Ответы: (59)
  35. Просто я считаю что у нас смешная база, но если так тупит на таких смешных объемах что происходит тогда у крупняков ?

    Ответы: (35) (36) (60)
  36. (34) нам Гилев сказал - "так не бывает", и уехал. гуру!

    Ответы: (37) (60) (63)
  37. 20.03.2015 14:07:55 отредактировано Aleksey

    (34) У крупняка происходит или массовая закупка серверов или переход на другую платформу (не 1с) с переносам общих цифр в 1С для составления рег.отчетности

  38. (35) Аналогично, я ему типовую показывал которая тупит на больших объемах, он тоже на умниках, мол сейчас всё разрулим. Потом посмотрел профайл, посмотрел журналы и развел руками, типа а что вы хотите - типовая она такая, тут ничего не сделаешь

    Ответы: (38) (48) (63)
  39. (37) Ну почему не сделаешь, пилить, пилить и еще раз пилить !

    ТОлько тогда вопрос а на куя я плачу за ИТС + ИТС отраслевой 2 категории ? Если не работает на маленьких(средних) объемах ?

    Ответы: (39) (48)
  40. (38) ТОгда это уже нетленка будет, а не типовая. Понятно что нетленка у людей летает

  41. Хотя конечно монстро-база у нас не типовая, без РЛС. Типовые - поменьше

    В принципе, все можно настроить и без РЛС, если объемы уже не тянутся железом

  42. 20.03.2015 14:22:22 отредактировано Aleksey

    (29) 158 831 (БП Корп 3.0.38.54)
    Но у меня помимо стандартных 5 групп добавлены 2 свои (Только просмотр + Акты сверок (чтобы можно было только смотреть и делать акты сверок) и Главный бухгалтер + ЖР + Версионность (почему то главбух не может даже ЖР и версионностьпосмотреть) )

    Ответы: (42)
  43. (41) Алексей, а можно еще чуток статистики по табличкам ? СУБД MS ?

    _Reference106 (89 строк ) = Справочник.ПодразделенияОрганизаций
    _Reference57 (2243 строк ) = Справочник.ИдентификаторыОбъектовМетаданных
    _Reference43 (291 строк ) = Справочник.ГруппыДоступа
    _InfoRg21453 (136686 строк ) = РегистрСведений.ТаблицыГруппДоступа
    _Reference43_VT1016 (139 строк ) = Справочник.ГруппыДоступа.Пользователи Справочник.ГруппыДоступа.ТабличнаяЧасть.Пользователи)
    _InfoRg11615 (74 строк ) = РегистрСведений.СоставыГруппПользователей
    _InfoRg10569 (554 строк ) = РегистрСведений.ЗначенияГруппДоступа
    _InfoRg23345 (2900 строк ) = РегистрСведений.ЗначенияГруппДоступаПоУмолчанию

    Это все таблицы которые используются в запросе при открытии списка Подразделений в динамическом списке !

    Ответы: (43)
  44. (42) да, скуль последний
    Справочник.ПодразделенияОрганизаций - 80 (38 организаций)
    Справочник.ИдентификаторыОбъектовМетаданных - 2 142
    Справочник.ГруппыДоступа - 236
    РегистрСведений.ТаблицыГруппДоступа - 158 830
    Справочник.ГруппыДоступа.Пользователи - 88
    Справочник.ГруппыДоступа.ТабличнаяЧасть.Пользователи ???
    РегистрСведений.СоставыГруппПользователей - 117
    РегистрСведений.ЗначенияГруппДоступа - 146
    РегистрСведений.ЗначенияГруппДоступаПоУмолчанию - 2 350

    Данные получал запросом Выбрать количество(*) из ...

  45. Это сколько пользователей ? Не много судя по всему.

    Ответы: (45)
  46. (44) В данную секунду активных 20, максимум ~25-30

    Ответы: (46)
  47. (45) Я имел ввиду введено сколько аккаунтов ))) то есть именно учетных записей, может быть у тебя менеджер 1 под ним сидят 15 человек, но РЛС настроен для одной учетки !

    Ответы: (47)
  48. (46) Доменная авторизация, каждый пользователь сидит под своей учёткой, т.е. именно 20 разных пользователей/учеток сейчас в базе

  49. Будущий_Олигарх (37) Ну почему не сделаешь, пилить, пилить и еще раз пилить !

    ТОлько тогда вопрос а на куя я плачу за ИТС + ИТС отраслевой 2 категории ? Если не работает на маленьких(средних) объемах ?

    уверяю вас, это все равно куда меньше, чем было бы, если бы вы купили себе сап. Так что пилите шура, пилите

    Ответы: (49)
  50. ЗлобнийМальчик уверяю вас, это все равно куда меньше, чем было бы, если бы вы купили себе сап. Так что пилите шура, пилите

    Мне кажется что САП это тот же 1С только в масштабах мировых.

    Ответы: (50)
  51. (49) в сапе есть в принципе 2 типа авторизации - для обычных пользовательских приложений и для отчетов. Обе реализованы на уровне сервера приложения. Первая предполагает то, что програмист при написании приложения проверяет авторизацию в коде программы. Вторая проверяет фильтры отбора с которыми пользователь обращается к регистрам и, если пользователь неавторизован, прерывает исполнение отчета. Обе в последних версиях довольно шустрые.

    Ответы: (54)
  52. такого, чтобы авторизацией модифицировался запрос - такого в сапе нету. И слава богу.

  53. (7) Линтер - это форк старого оракла, кажись 6.5

  54. (16) как показала практика, отнюдь не самый лучший.

  55. (50) расскажи нам сказку. Особенно про авторизацию в NetWear

  56. 21.03.2015 21:15:57 отредактировано Будущий_Олигарх

    Маленькая победа !
    Запрос в топике выполняется теперь 730 ms. Вместо 8000 !

    Помогли вот эти рекомендации:
    http://its.1c.ru/db/metod8dev/content/4692/hdoc

    не отключал только nestloop, остальное все поправил. На всех остальных операциях вроде ухудшения производительности не произошло. Посмотрим на след. неделе на рабочей базе под нагрузкой.

    у кого нет доступа смотрим картинку POSTGRES.png

  57. Зачем картинку то?

    Решение проблемы с зависанием PostgreSQL

    При выполнения некоторых регламентных операций (Закрытие месяца, Расчет себестоимости и т.п), где используются сложные запросы с большим количеством соединений больших таблиц, возможно существенное увеличение времени выполнения операции. В основном, эти проблемы связаны с работой оптимизатора PostgreSQL и отсутствием актуальной статистики по таблицам, учавствующим в запросе.

    Варианты решения проблемы:

    Увеличить количество записей, просматриваемых при сборе статистики по таблицам. Большие значения могут повысить время выполения команды ANALYZE, но улучшат построение плана запроса:
    Файл postgresql.conf - default_statistics_target = 1000 -10000.
    Отключение оптимизатору возможности использования NESTED LOOP при выборе плана выполнения запроса в конфигурации PostgreSQL:
    Файл postgresql.conf - enable_nestloop=off.
    Отрицательным эффектом этого способа является возможное замедление некоторых запросов, поскольку при их выполении будут использоваться другие, более затратные, методы соединения (HASH JOIN).
    Отключение оптимизатору возможности изменения порядка соединений таблиц в запросе:
    Файл postgresql.conf - join_collapse_limit=1.
    Следует использовать этот метод, если вы уверены в правильности порядка соединений таблиц в проблемном запросе.
    Изменение параметров настройки оптимизатора:
    Файл postgresql.conf:
    seq_page_cost = 0.1
    random_page_cost = 0.4
    cpu_operator_cost = 0.00025
    Использование версии PostgreSQL 9.1.2-1.1.C, в которой реализован независимый от AUTOVACUUM сбор статистики, на основе информации об изменении данных в таблице. По умолчанию включен сбор статистики только для временных таблиц и во многих ситуациях этого достаточно. При возникновении проблем с производительностью выполнения регламентных операций можно включить сбор статистики для всех или отдельных проблемных таблиц изменив значение параметра конфигурации PostgreSQL( файл postgresql.conf) online_analyze.table_type = "temporary" на online_analyze.table_type = "all".
    После изменнеия этих параметров, следует оценить возможное влияние этих изменений на работу системы и выбрать наиболее приемлимый выриант для ваших задач.

    http://its.1c.ru/db/metod8dev/content/4692/hdoc

  58. its.png

  59. Оптимизатор в Postgres конечно чумовой и точно не для 1С, но обилие настроек с одной стороны радует(можно добиться максимальной оптимальности), но блин пока найдешь нужные значения возможно уже нужно будет оформлять пенсию.

    Спецов по слону конечно маловато. По этому будем пополнять ряды :)

  60. Будущий_Олигарх Гилёв сказал так

    В принципе можно сказать и так "откажитесь от 1С" )))

    так в принципе можно кому угодно что угодно приписать - вы нанимали меня решить проблему - нет! так и не фантазируйте

    Ответы: (61)
  61. MIK (34) нам Гилев сказал - "так не бывает", и уехал. гуру!

    какие работы мы Вам оказывали? кто с нашей стороны проводил аудит? фамилия?

  62. Gilev так в принципе можно кому угодно что угодно приписать - вы нанимали меня решить проблему - нет! так и не фантазируйте

    Вячеслав я рад бы нанять Вас на работу, но Вы к сожалению не работаете с типовыми. Ну и ценник конечно не самый рыночный.

    Ответы: (62)
  63. Будущий_Олигарх Вячеслав я рад бы нанять Вас на работу, но Вы к сожалению не работаете с типовыми. Ну и ценник конечно не самый рыночный.

    Если не устраивает цена, то не надо говорить о других причинах. За деньги мы работаем с любыми конфигурациями 1С.

  64. 23.03.2015 16:43:41 отредактировано Gilev

    Aleksey (35) Аналогично, я ему типовую показывал которая тупит на больших объемах, он тоже на умниках, мол сейчас всё разрулим. Потом посмотрел профайл, посмотрел журналы и развел руками, типа а что вы хотите - типовая она такая, тут ничего не сделаешь

    Если Вы заказывали у нас аудит за деньги, то сообщите пожалуйста номера документов или другим образом помогите идентифицировать взаиморасчеты.
    Ни кто из моих сотрудников такого сказать не мог.

    Пока я вижу попытку приписать нашей команде якобы отказ от работ. За бесплатно мы не работаем. За деньги - работаем. Любой труд должен быть оплачен.

или зарегистрируйтесь чтобы ответить!