|
DmT
|
|
Обновление индекса для вью31.01.2007, 11:22. Показов 25367. Ответов 15
Метки нет (Все метки)
Предистория: в базу документы заносятся путем срабатывания агента на приход новой почты. В пришедшем письме - вложеный файл Excel, на основании которого создаются документы в БД. За один запуск этот агент формирует около 50000 (!) документов.
Проблема: когда пользователь заходит в эту БД и открывает вью - приходится очень долго ждать пока отобразятся все документы. Вторично зайдя в эту вьюху никакой задержки не наблюдается (индексы, я так полагаю, уже сформировались). Вопрос: можно ли после формирования документов сказать программно "Сформировать индексы для вью", потому как формирование индексов для БД в целом результата не даёт. P.S. Знаю, что теоретически в вопросах индексов "плаваю" поэтому сильно не пинайте. Спасибо. |
|
| 31.01.2007, 11:22 | |
|
Ответы с готовыми решениями:
15
Обновление индекса базы. Несколько Колонок Для Респонсов Во Вью Обновление индекса |
|
0 / 0 / 0
Регистрация: 12.10.2006
Сообщений: 185
|
|
| 31.01.2007, 12:16 | |
|
Не на работе, хелпа под рукой нет... view.Refresh должон помочь по идее
Это вообще про индекс http://www-128.ibm.com/developerworks/lotu...n-performance2/ http://www-128.ibm.com/developerworks/lotu...ry/ls-LS_views/ Надеюсь поможет <_<
0
|
|
|
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|
| 31.01.2007, 12:31 | |
|
Я тоже использую Call notesView.Refresh, правда только для того, чтобы кодом можно было поймать вновь созданные документы.
Если у вас получится с UI-интерфейсом, то киньте сюда сообщение.
0
|
|
|
DmT
|
|
| 31.01.2007, 12:42 | |
|
Для: Ogion7
Для: Elena Nefedova Если я правильно понял, то мне, по завершении работы основного агента, нужно инициализировать каждое из моих представлений Set View=db.GetView("Имя") и потом Call View.Refresh для каждого? Это построит индексы? Если так, счас попробую Для: Elena Nefedova Мне ж надо на сервере в агенте по приходу почты выполняться? UI разве можно использовать? |
|
|
DmT
|
|
| 31.01.2007, 13:12 | |
|
Получилось! <_<
Dim view As NotesView Dim session As New NotesSession Dim db As NotesDatabase Dim views As Variant Set db = session.CurrentDatabase views = db.Views Forall v In views Set View=v Print Cstr(Time$) + " Start update index for: " + Cstr(view.Name) Call View.Refresh Print Cstr(Time$) + " Stop update index for: " + Cstr(view.Name) End Forall Внимание новый вопрос: как отследить что Call View.Refresh уже выполнился? Это возможно? |
|
|
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|
| 31.01.2007, 14:23 | |
|
<!--QuoteBegin-DNT+1:02:2007, 13:29 -->
<span class="vbquote">(DNT @ 1:02:2007, 13:29 )</span><!--QuoteEBegin-->Мне ж надо на сервере в агенте по приходу почты выполняться? UI разве можно использовать?[snapback]54664" rel="nofollow" target="_blank[/snapback]?[/quote]Имеется в виду UI как User Interface, а не как классы UI <!--QuoteBegin-DNT+1:02:2007, 13:59 --> <span class="vbquote">(DNT @ 1:02:2007, 13:59 )</span><!--QuoteEBegin-->как отследить что Call View.Refresh уже выполнился? Это возможно? [snapback]54674" rel="nofollow" target="_blank[/snapback]?[/quote]Второй Print выполнится только после завершения метода Refresh. Чтобы это понять, надо 1-й и 2-й Print выполнить с разными аргументами. Иначе лотус только одну строку может напечатать в StatusBarе Самое-то главное: Будет ли обновляться вьюха в пользовательском интерфейсе после завершения работы данного кода?
0
|
|
|
DmT
|
|
| 31.01.2007, 14:57 | |
|
Для: Elena Nefedova
На самом деле в живом коде у меня нет Print, я веду локальный "Журнал запуска агента". Записи добавляются в RText поле. Всё красиво получается: ... 13:35:27 Start update index for: Абоненты 13:35:27 Stop update index for: Абоненты 13:35:27 Start update index for: Абоненты по услугам 13:36:25 Stop update index for: Абоненты по услугам 13:36:25 Start update index for: Настройки 13:36:25 Stop update index for: Настройки ... Моя задача была, чтоб человек зайдя в БД и во вьюху не испытывал "тормозов" при её (вьюхи) открытии. При помощи вызова Call View.Refresh после накопления документов, эта задача реализована. Это ответ на ваш вопрос? Интересные цифры из лога: на обработку 11 файлов Excel (с их предварительным разархивированием из входящего письма) и формирование около 50 000 документов тратится менее 3-х минут, в то время на обновление индекса для 10-ти вьюх уходит 12 (!) минут.... |
|
|
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|
| 31.01.2007, 15:18 | |
|
<!--QuoteBegin-DNT+1:02:2007, 15:44 -->
<span class="vbquote">(DNT @ 1:02:2007, 15:44 )</span><!--QuoteEBegin-->Моя задача была, чтоб человек зайдя в БД и во вьюху не испытывал "тормозов" при её (вьюхи) открытии. При помощи вызова Call View.Refresh после накопления документов, эта задача реализована. Это ответ на ваш вопрос?[snapback]54711" rel="nofollow" target="_blank[/snapback]?[/quote]Спасибо, это как раз нужный мне ответ - очень не хотелось генерить 50000 документов для теста
0
|
|
|
DmT
|
|
| 31.01.2007, 15:38 | |
|
Для: Elena Nefedova
Вопрос не по теме (просто раньше вы об этом упоминали): как обрабатывать входящие документы на событие "Before new..."? Другими словами как из коллекцию, например сделать? Их ведь ещё нет в $Inbox... Или они будут в db.UnprocessedDocuments? И теоретический вопрос: чем плох триггер "After new..."? |
|
|
0 / 0 / 0
Регистрация: 12.10.2006
Сообщений: 185
|
|||
| 31.01.2007, 15:54 | |||
Из хелпа пo view.Refresh
0
|
|||
|
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|||
| 31.01.2007, 16:03 | |||
Но в семерке есть глючок - если добавить критерий отбора в After new.., то не обрабатываются документы, пока индексер не отработает - "зависают" надолго, и это раздражает пользователя.
0
|
|||
|
DmT
|
|
| 31.01.2007, 16:15 | |
|
<!--QuoteBegin-Elena Nefedova+1:02:2007, 15:50 -->
<span class="vbquote">(Elena Nefedova @ 1:02:2007, 15:50 )</span><!--QuoteEBegin-->Да ничем он не плох. Все зависит от того, какая на сервере очередь агентов имеется. Но в семерке есть глючок - если добавить критерий отбора в After new.., то не обрабатываются документы, пока индексер не отработает - "зависают" надолго, и это раздражает пользователя. [snapback]54720" rel="nofollow" target="_blank[/snapback]?[/quote] Да есть такое дело, замечал, но не знал что это индексер работает. Так, всё таки, как документы вытягивать при "Before new..."? |
|
|
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|
| 01.02.2007, 09:51 | |
|
<!--QuoteBegin-DNT+1:02:2007, 17:02 -->
<span class="vbquote">(DNT @ 1:02:2007, 17:02 )</span><!--QuoteEBegin-->Так, всё таки, как документы вытягивать при "Before new..."? [snapback]54721" rel="nofollow" target="_blank[/snapback]?[/quote]Session.DocumentContext Кстати, это и для веба тоже подходит.
0
|
|
|
mor
|
|
| 02.02.2007, 22:32 | |
|
Для: DNT
Уважаемый, DNT. У меня к вам пару вопросов, которые меня заинтересовали. 1. Как происходит разархивирование эттачмента в письме? Поделитесь кодом, если можно. 2. Какое общее количество докуиментов в бд? Каков размер бд? Если одно письмо генерирует 50 000 документов, то 10 писем сгенирирует 500 000 документов? А 100 писем? И это все хранится и отображается в лотусовой базе? |
|
|
DmT
|
|
| 04.02.2007, 09:50 | |
|
Для: nor
Уважаемый это сильно. :D Ответы: <!--QuoteBegin-nor+3:02:2007, 22:19 --> <span class="vbquote">(nor @ 3:02:2007, 22:19 )</span><!--QuoteEBegin-->1. Как происходит разархивирование эттачмента в письме? Поделитесь кодом, если можно. [snapback]54930" rel="nofollow" target="_blank[/snapback]?[/quote] ... If ( o.Type = EMBED_ATTACHMENT ) Then FileName$ = Cstr(o.Source) имя файла TempDir$ = Environ("Temp") темповая директория Windows Call o.ExtractFile( TempDir$ & "\" & FileName$) извлекаем файл на диск распаковываем 7z comand$ = "CMD.EXE /C c:\Arc\7z.exe e -y -o" + TempDir$ +" "+ TempDir$ & "\" & FileName$ вариант с winrar-ом comand$ = "CMD.EXE /C c:\Arc\winrar.exe e -y "+ TempDir$ & "\" & FileName$ +" "+TempDir$ rezult = Shell(comand$,1) Sleep 1 ПРОЦЕДУРА ОБРАБОТКИ ФАЙЛА ОБРАБОТКА ФАЙЛА STOP Kill TempDir$ & "\" & FileName$ End If ... <!--QuoteBegin-nor+3:02:2007, 22:19 --> <span class="vbquote">(nor @ 3:02:2007, 22:19 )</span><!--QuoteEBegin-->2. Какое общее количество докуиментов в бд? Каков размер бд? Если одно письмо генерирует 50 000 документов, то 10 писем сгенирирует 500 000 документов? А 100 писем? И это все хранится и отображается в лотусовой базе? [snapback]54930" rel="nofollow" target="_blank[/snapback]?[/quote] БД "мэйл-иновская" в неё приходит почта от оператора моб. связи один раз в месяц по каждому из предприятий корпоративной группы. В этих письмах приаттаченные файлы с раскладкой звонков по каждому корпоративному абоненту - отсюда такое кол. документов: на каждый звоночек создается документик. Цифра 50 000 получилась при обработке 11 предприятий за один месяц. Т.е. другими словами наполняемость БД примерно 50k документов в месяц. |
|
|
mor
|
|
| 04.02.2007, 11:09 | |
|
очень интересно, спасибо
|
|
| 04.02.2007, 11:09 | |
|
Помогаю со студенческими работами здесь
16
Не проходит обновление индекса. Автоматическое обновление индекса в Smart Search Обновление DataGridView при изменении индекса ComboBox
Обновление базы и ошибка: Обновление невозможно. База данных или объект доступны только для чтения. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|