Имя: Пароль:
1C
1С v8
тормозит список 2млн записей
Ø (Волшебник 03.06.2015 16:29)
0 ambez
 
31.05.15
22:35
обычные формы. в базе есть справочник примерно на 2 млн записей без иерархии. нужно делать в нем фильтрацию, поиск и т.п. все поля текстовые. с базой работает человек 10. что можно сделать для ускорения работы?
поможет ли апгрейд железа.
сейчас оно крутится на компе с 2 ядрамии и 4 гр оперы.
база в сиквеле.
может в регистр сведений переделать или на УФ переписать базку?
1 Волшебник
 
модератор
31.05.15
22:39
сделай отчёт
2 Jump
 
31.05.15
23:01
Если предположить что одна запись порядка килобайта, то справочник весит около 2гигабайт.
При этом общий объем оперативки 4гб.
В итоге тормоза.
3 Garykom
 
гуру
31.05.15
23:05
(0) простейшие методы

1. убрать все реквизиты кроме наименования из форм списка справочника
2. вынести нужные реквизиты на отдельную панельку, чтобы для выбранной позиции показывались
4 Славен
 
31.05.15
23:07
+(3) 3. Установить сервер 1с и SQL
     4. Заменить железо
5 Славен
 
31.05.15
23:07
+(4) хотя смотрю скуль есть, но непонятно тогда что за хня про "4гр" оперативы
6 Gepard
 
31.05.15
23:10
(1) +1 и отображение только с нужными фильтрами... Или в форме справочника по аналогии сделать
7 H A D G E H O G s
 
31.05.15
23:14
(2) В итоге - пальцем в небо.
8 Jump
 
31.05.15
23:16
(7)Не факт.
Я не говорю что не надо оптимизировать структуру, но когда идет работа с такими объемами 4гб оперативки это явно мало.
9 H A D G E H O G s
 
31.05.15
23:16
(0) Заменить текстовые поля на поля фиксированной длины (дополненные пробелами). Попробовать на копии, о результатах - отписаться.
10 H A D G E H O G s
 
31.05.15
23:17
(9) Там, где это возможно.
11 ambez
 
31.05.15
23:30
поля фиксированной длины и так.
там грубо говоря колонки - фио, адрес (удица, дом), телефон, год рождения
им надо фильтровать эту байду по улице и по возрасту. а также искать там телефон или фио (телефон уникальное поле)

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

пробовал переносить на серьезный сервак с 64 гб оперы. все равно как-то тупит
12 ambez
 
31.05.15
23:32
больше всего тупит фильтрация.
можно улицу и дом сделать не текстовыми полями а ссылками на справочник. по логике должно немного помочь
13 Drac0
 
31.05.15
23:34
(11) Что значит "тупит" отчет? Они хотят моментально получать результат или что?
14 AntiBuh
 
31.05.15
23:36
(13) за 10сек до того как понадобится
15 НП
 
31.05.15
23:37
Я бы сделал справочник, где было бы просто уникальное имя.
Все остальное в регистре сведений. Причем не в одном, а в 10, допустим. В каждом - несколько букв алфавита. Например А-В,Г-Е и т.п. Получается что-то вроде индексно-последовательного метода. Работать будет быстро, но программировать всё ручками.
16 ambez
 
31.05.15
23:42
да просто не хочется изза такой простой задачи что-то городить особо.
хочется железа им продать, тем более все равно оно им надо.

(13) ну пару минут думает)
17 НП
 
31.05.15
23:43
(16) Это - не простая задача. Вот было бы 20000 записей - тогда простая.
18 Lemkus
 
31.05.15
23:45
(0) Апгрейд железа и перевод на УФ скорее всего результатов не дадут. В теории дело обстоит так, если список динамический, то данные из него выбираются порциями  записей, будет запрос к БД вида SELECT TOP 45. Обычная проблема с динам. списком - данные получаются быстро, а вот при перемотке все начинает тормозить. Нужно посмотреть, какие запросы и как долго выполняются на СУБД при формировании и фильтрации списка.
19 H A D G E H O G s
 
31.05.15
23:48
(11) Точно фиксированный - именно тип значений - Строка, фиксированная, 120 символов?
20 ambez
 
31.05.15
23:49
(19) да. фио строка 200, адрес 200, все остальное по мелочам 5-20
21 ambez
 
31.05.15
23:51
просто им надо какой-то универсальный механизм фильтрации сделать. стандартный механизм полностью подходит. за исключением того что тормозит
22 Drac0
 
31.05.15
23:52
(16) Ну, пару минут - это не смертельно. Кстати, поля поиска и фильтрации индексированы? А вообще, как изврат, можно предложить регистр сведений с этими строковыми полями как измерения и ссылка на справочник в ресурсе. При этом поля упорядочивания включить в кластерный индекс.
23 ambez
 
31.05.15
23:52
(18) да я тоже понимаю, что вроде как дин список не прокатит
24 ambez
 
31.05.15
23:53
(22) да, на все поля индексы стоят
25 ambez
 
31.05.15
23:54
(22) ну тогда точно мозгов надо побольше. там индексы одни нормально потянут
26 ambez
 
31.05.15
23:57
и еще там планируется рост этой байды до 10 млн.
и еще будет еще один такой же список и надо будет делать из них список 3, в котором будут записи из первого, но без записей из второго со связкой по телефону...
ну тут точно отчет придется делать или прямыми запросами джойнить это все
27 Lemkus
 
01.06.15
00:07
(23) Не могу представить себе, какому человеку нужно одновременно видеть 2 млн записей в списке или отчете, скорее всего нужно ставить доп. фильтры.
28 ambez
 
01.06.15
00:11
вобщем советуете в сторону отчета думать.
29 H A D G E H O G s
 
01.06.15
00:32
(20) Я про свойство ДопустимаяДлина - Фиксированная.
30 ambez
 
01.06.15
00:48
перменная стояла
31 ambez
 
01.06.15
00:52
млин, и еще 1 поле неограниченная строка есть
32 beaver1971
 
01.06.15
06:38
(0) (12) иногда на таких базах (я не только про 1С) бывает оптимально не только улицы в отдельный справочник, но и имена и отчества вынести. Вопрос только с добавлением к базе.
33 Drac0
 
01.06.15
08:08
(31) ты ж сказал, что все проиндексированы? Как ты безконечную строку в индекс запихнул? :-)
34 dubraver
 
01.06.15
08:18
У меня есть пара справочников с количеством несколько миллионов записей. В итоге сделал так:
На sql сервере создал отдельную базу под доп. справочники.
Создал там таблицы, загрузил данные из csv bulk'ом. А в 1С уже настроил внешний источник данных. Вполне быстро фильтрует по такому справочнику. Оно и понятно ведь это нативный доступ к бд sql. Но минус надо писать инфраструктуру по вставке/обновлению данных.
35 ambez
 
01.06.15
09:18
(33) да это без меня добавили. я даже внимания не обратил сразу
36 ambez
 
01.06.15
09:20
(34) я тоже так иногда делаю, но не думал, что тут тоже придется огород городить
37 vde69
 
01.06.15
09:21
для начала надо проверить индексы, добавить нужные и убрать лишние
38 Rlogin
 
01.06.15
09:22
Фильтр можно задавать не после открытия справочника, а до.
Т.е. хочешь посмотреть записи - сначала задай условие. Иначе не посмотришь. Так например в SAP реализовано.
39 vde69
 
01.06.15
09:24
а вообще 2 ляма - это не много...
40 ambez
 
01.06.15
09:25
а с сохранением списка справочника с наложенным отбором в табличный документ можно что-то сделать для ускорения?
(39) вроде как да
41 eklmn
 
гуру
01.06.15
09:51
(40) у тебя условия фильтра должны быть такие, чтоб кол-во записей не привышало 1000 хотя бы
42 Sasha_H
 
01.06.15
09:56
(0) для таких объемов если это возможно надо пользоваться регистрами сведений
43 Sasha_H
 
01.06.15
09:59
Если тормозит на сервере покруче, не делайте поспешных выводов. Во-первых попробуйте все это перенести на регистр сведений, проинтексировать поля которые Вам важны, в скл обновить стастистику и сделать это все на регламенте и отписаться.
44 vde69
 
01.06.15
10:12
(42) чем регистр отличается от справочника без иерархии?

физически и то и другое одна таблица, и  индекс то же одинаковый...
45 rsv
 
01.06.15
10:15
(0) Вьюху в скуле ... и делов. Вызывать можно из скуля штатным образом через XLS. Microsoft Query встроен в Excel.
46 DexterMorgan
 
01.06.15
10:20
(44) Вообще вроде как ничем, но например в УТ11 есть справочник КлючиАналитикиНоменклатуры и РС АналитикаНоменклатуры, так во всех типовых запросах делают соединение именно с РС
47 Sasha_H
 
01.06.15
10:30
(44) справочники намного медленные и менее поворотки чем РС вот и тем и отличаются! РС совершенно другую структуру имеет на уровне СУБД.
48 Timon1405
 
01.06.15
10:35
(47) Пруф, ор диднт хэппен
49 Timon1405
 
01.06.15
10:47
(47) про индексы http://its.1c.ru/db/metod8dev#content:1590
Так че, у вас доказательства будут или слив защщитан?
50 Drac0
 
01.06.15
10:52
(44) ну, для РС можно удобный кластерный индекс построить разве что.
51 vde69
 
01.06.15
10:53
(50) для справочника то же можно сделать кластерный индекс
52 Sasha_H
 
01.06.15
10:55
(49) Собственно говоря ответ лежит в кластерном индексе, так что зачислите себе слив! Поскольку в справочнике кластерного индекса не построить! Ой...
53 degot
 
01.06.15
10:55
(0) попробуй 8.3.6 + Полнотекстовый поиск+ дин. список
54 Sasha_H
 
01.06.15
10:56
(51) нет нельзя..... Кластерный индекс там только по-умолчанию
55 vogenut
 
01.06.15
10:57
(0) Попробуй на все реквизиты, по которым фильтрация и сортировка установить индексирование с доп. упорядочиванием
56 vde69
 
01.06.15
10:58
(54) можно... например разделитель учета попадет в него

по сабжу поля текстовые, по этому кластерный индекс вообще не катит.... ни для регистра ни для справочника...

прикинь как будет работать регистр с текстовыми измерениями :)
57 Sasha_H
 
01.06.15
10:59
(56) нормально он будет работать. А как по вашему работают другие СУБД /:)
58 Drac0
 
01.06.15
11:00
(56) это же РС, а не РН. Для такой залачи приемлемое решение, если результат даст хороший :-) Правда, не факт, что кластерный индекс вообще сможет построиться по строковым измерениям.
59 Sasha_H
 
01.06.15
11:01
Далеко ходить ненадо, смотрим примеры из книги SQL-запросы для простых смертных или другие книги, вы увидите, что все примеры на строках.

Если пойти чуть дальше и взять базу ТЕКДОК то там масса текстов и ищется быстро.
60 vde69
 
01.06.15
11:02
(57) ту теоретик? я практик у меня был такой регистр и примерно на 2 ляма записей, тормозил...

причина простая: размер кластерного индекса... у него банально не влезет в него все... и будет построен доп индекс...
61 rsv
 
01.06.15
11:02
(47) На уровне СУБД все равны в виде отношений и атрибутов .  Различиие в индексах если только. Индексированная вьюха рулит.
62 Гёдза
 
01.06.15
11:03
Добавить полнотекстовый поиск и юзать его, а не отборы
63 rsv
 
01.06.15
11:04
+(61) И то ... как оптимизатор решит. Не случайно вендор вводит понятие подсказок оптимизатору... Ну как то так ..
64 Гёдза
 
01.06.15
11:04
(60) а сколько у тебя ресурсов было в регистре?
65 Sasha_H
 
01.06.15
11:05
(60) практик. Кластерный индекс будет использован только в том случае, когда я запросом в условии ГДЕ наложу последовательно поля

ГДЕ Измерение1=..., Измерение2=... и т.д

Вот только тогда применится в поиске кластерный индекс. В другий случаях надо индексировать поля отдельно!

Все зависит от задачи как он будет искать информацию и как накладывать условия.
66 Sasha_H
 
01.06.15
11:06
Почему люди забывают о таких вещах как обновить статистику на СУБД и дефрагментировать индексы.

Надо смотреть планы запросов, о чем тут споры вообще пальцем в небо тыкать.
67 vde69
 
01.06.15
11:07
68 rsv
 
01.06.15
11:07
(65) Это только оптимизатор знает при условии достаточной статистики...
69 Sasha_H
 
01.06.15
11:09
(68) + да забыл дописать и как решит оптимизатор. Это то что янаписал в (66)
70 Гёдза
 
01.06.15
11:11
(65) Не прав. Отдельные индексы не помогут, если в ГДЕ несколько условий
71 Sasha_H
 
01.06.15
11:12
Ответ лежит в (66)
72 Sasha_H
 
01.06.15
11:13
(70) кто такое сказал, чем докажете? Еще раз подчеркну, что все проверяется только на месте. Вот попробует человек сделать все , что ему хорошие люди здесь порекомендовали. Скажет, что у него статистика в порядке и индексы фрагментированы, выложит план запроса вот только тогда можно утверждать что-то и двигаться куда-то еще...
73 Sasha_H
 
01.06.15
11:20
(0) я не знаю как у Вас сделано, но по тексту понимаю, что вы ищете по номеру телефона.

можно в таком случае использовать номер телефона в Наименование или в код сделать уникальным справочник. Платформа сама создаст необходимые индексы. На другие поля обвесить индексы и обязательно смотреть план. Пробовать вариации разные.
74 Sasha_H
 
01.06.15
11:21
В отчетах не применять конструкцию СОРТИРОВАТЬ.
75 ЧеловекДуши
 
01.06.15
11:52
(11) (0)Код покажи, как ты фильтруешь?
1с на УФ или только Толстый клиент?
Как реализовал поиск в текстовых полях?
76 ЧеловекДуши
 
01.06.15
11:55
(40) Да, можно, можно чисто в запросе отобрать элементы, и в список выводить маленький список самих элементов, а не отбор по какой либо части текста :)

Так же можно править сам запрос, но для Динамического списка.
77 ambez
 
01.06.15
12:57
экспорт списка в текущем варианте похоже виснет намертво
78 ambez
 
01.06.15
13:12
(75) кода вообще нет, тупо стнадартный 1ский механизм фильтрации списка по условиям, который вызывается кнопкой на командной панели

толстый клиент

поиск через ctrl+f )
79 vogenut
 
01.06.15
13:14
(78) Реквизиты проиндексированы?
80 H A D G E H O G s
 
01.06.15
13:16
(78) Естественно будет тормозить, осотенно при поиске по подстроке. Это же скан.
81 H A D G E H O G s
 
01.06.15
13:16
(78) Тебе поможет только полнотекстовый поиск
82 H A D G E H O G s
 
01.06.15
13:17
Никакие индексы тебе не помогут при поиске по подстроке.
83 ambez
 
01.06.15
13:20
то есть сделать им окошко для полнотекстового поиска
84 H A D G E H O G s
 
01.06.15
13:21
(83) Да
85 ambez
 
01.06.15
13:27
(79) ага
86 vogenut
 
01.06.15
15:29
(85) А как проиндесированы - просто или с дополнительным упорядочиванием?
87 ambez
 
01.06.15
15:51
(86) просто
88 ambez
 
01.06.15
15:52
экспорт списка думал 2часа и 1с вылетела с ошибкой)
89 Jokero
 
01.06.15
15:57
у меня винда на 4гб оперативы тормозит, не то что 1с)))
90 vogenut
 
01.06.15
15:59
(87) Замени все на дополнительное упорядочивание
91 H A D G E H O G s
 
01.06.15
16:11
(90) Вы прикалываетесь?
92 vogenut
 
01.06.15
16:18
(91) Нет, совершенно серьезно
93 Гёдза
 
01.06.15
16:24
(92) Доп упорядочивание - это индекс: реквизит + наименование
94 vogenut
 
01.06.15
17:59
(93) Вот именно. А точнее, зависит еще и от версии платформы. В новых версиях туда еще и другие реквизиты могут записываться. Проблема списков в том, что нужно фильтровать по реквизиту, а выводить записи в порядке наименования, например. По обычному индексу по реквизиту можно только отфильтровать. По индексу с доп упорядочиванием можно отфильтровать и сразу получить записи в порядке наименования. Поэтому он для списков и нужен.
95 Гёдза
 
01.06.15
18:02
если записей не много после отбора, то операция сортировки не особо влияет
96 vogenut
 
01.06.15
18:03
(95) А если много? Что скорее всего в данном случае...
97 Гёдза
 
01.06.15
18:05
(96) я больше склоняюсь к (91)
98 vogenut
 
01.06.15
18:12
99 R41
 
01.06.15
18:26
(0)Посмотри в профайлере какие SQL-запросы тормозят. Сделай составной индекс средствами скуля (с теми колонками, которые участвуют в выражении WHERE).
100 R41
 
01.06.15
18:27
Простые индексы (т.е. индексы на одно поле) в случаях,  когда используется несколько колонок в фильтрах не используются, т.е. практически бессмысленно их устанавливать.
101 R41
 
01.06.15
18:29
К сожалению 1С стандартными средствами не дает создавать составные индексы - видимо считает 1С-ков тупыми для такого сложного понятия :)
102 Лефмихалыч
 
01.06.15
20:16
прочитал. о*уел от некоторых советов с допупорядочиванием.

(0) нужны нормализация и иерархия. Пока оно все в тексте, будет печаль.
103 Фрэнки
 
01.06.15
21:30
Имел счастье наблюдать крах приложения клиента всегда, когда делалась попытка отобразить форму списка от регистра сведений на несколько миллионов записей. Только не помню точно сколько там было миллионов. С учетом высказанного предположения, что количество записей еще вырастет в несколько раз, то думаю, что иных вариантов не будет, кроме замены поля списка на пере-заполняемую отчетную форму. И при этом, из отчетной формы можно легко и сразу же выполнить сохранение во внешнюю таблицу.

И еще непонятный момент - в эксель слишшком много строк не получалось сохранить.
104 romix
 
01.06.15
22:08
(11)
>>>там грубо говоря колонки - фио, адрес (удица, дом), телефон, год рождения
им надо фильтровать эту байду по улице и по возрасту. а также искать там телефон или фио (телефон уникальное поле)

Военкомат что ли там у вас? На АТО призыв идет???
105 romix
 
01.06.15
22:10
Вот зачем на Украине еще нужно фильтровать по улице и возрасту огромные базы.
106 Armando
 
01.06.15
22:47
>> и еще там планируется рост этой байды до 10 млн.
>> и еще будет еще один такой же список и надо будет делать из них список 3, в котором будут записи из первого, но без записей из второго со связкой по телефону...

Точно!
Всего вна Украине мужчин 46% от общего количества. Численность возрастной группы 18-60 примерно 27 млн. Мужчин в этом возрасте примерно 12,5 млн. Можно догадаться, что 10 млн это боеспособные мужчины Украины.
http://ukrstat.gov.ua/operativ/operativ2007/ds/nas_rik/nas_r/nas_rik_r.html
107 romix
 
01.06.15
23:30
(106) Связка по телефону - это, видимо, те, кто уже звонил из зоны проведения АТО за некоторый период.
108 l123456789
 
02.06.15
02:18
Можете пинать, но я бы вынес эту ботву во внешний источник.
2М записей для постреса - фигня в общем.
Загнать в редис и прогнать тупой фильтр на чем-нибудь пригодном - офигейте от разницы.
Кэшируйте в редисе ваши запросы через что нравится и ухватитесь за гениталии от восторга.
PS: redis = InMemoryВсеЧтоВамНравиццо
109 romix
 
02.06.15
03:30
(108) По числовым признакам и фильтрам (улица, возраст) это база укро-мобилизации.
110 фобка
 
02.06.15
12:41
(106) уникальный номер телефона, означает скорее всего что источник данных - базы мобильных операторов. Увеличение с 2 до 10 миллионов означает что планируется догрузить базу от еще одного или нескольких операторов
111 фобка
 
02.06.15
12:44
+110 и это не базы киевстара и мтс-украина

http://e-finance.com.ua/show/185733.html
Осторожно укро-сми
112 Armando
 
02.06.15
14:49
(111) Интересно, откуда они взяли 60,6 млн абонентов, если общая численность не более 45 млн. Почему такой большой разрыв? В России так же интересно?
113 Drac0
 
02.06.15
14:59
(112) У многих по 2-3 симки бывает.
114 фобка
 
02.06.15
14:59
(112) у кого-то несколько номеров + туристы могли купить для местных звонков
115 фобка
 
02.06.15
15:02
Это всё конечно версии, но romix , нужно признать, нестандартно мыслит - сложил 2 плюс 2
116 ambez
 
02.06.15
21:35
не военкомат, но идея интересная
117 romix
 
03.06.15
16:21
(116) Общенациональная (судя по размерам) база Украины с фильтром по улице и возрасту — что бы еще это могло быть...

То есть, некоторые люди имеют определенный возраст и живут на одной улице — это кто?

Разрешите мои сомнения, а то у меня фантазия уже иссякла — кроме военкомата АТО ничего не могу придумать.
118 Волшебник
 
модератор
03.06.15
16:29
(0) в бан