• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

container integrity lost и как с ним бороться ?

Mikle_GB

Lotus Team
07.07.2016
69
25
BIT
53
Кстати, давно было интересно, насколько ускорится построение индекса при разных формулах вьюшки.
Вводные: тестовая БД на отдельном сервачке (слабом, но без юзеров; v9 fp9); одна вьюшка с одним столбцом и одна форма, на ней 4 случайных текстовых поля и вычисляемый их список (f1:f2:f3:f4).
База заполнена агентом (hashPassword от случайного числа в каждое поле f1 f2 f3 f4), 2 ляма доков. Кстати, любопытно, что по мере заполнения базы скорость создания документов практически не изменилась.
фигура 1: в столбце вьюшки формула @unique(@trim(f1:f2:f3:f4). Запускаю updall -R дважды с перерывом, работает 45 и 46 минут.
фигура 2: меняю в столбце вьюшки формулу на просто f. Запускаю updall -R трижды с перерывами, работает 40, 44 и 42 минут.
Офигеть! вот и верь после этого редбукам:( получается - львиная доля времени тратится индексёром на доступ к документам и запись в индекс, а не на вычисление формул. Понятно, что на сложных вьюхах процент на вычисления будет поболе, но всё-таки.
Отметим, что вынос индексов из БД в среднем никак не повлиял на скорость индексации: с формулой в столбце индексация шла 47 и 44 мин; с полем - 41 и 46 минут.
 

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
67
Кстати, а ODS баз какая? Может, повысить или наоборот?
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
львиная доля времени тратится индексёром на доступ к документам и запись в индекс
Вот только когда пользователь полезет в базу, то процесс пойдет еще раз.
updall -R не показатель, он порой срабатывает за несколько секунд, но попробуй потом вьюху на экране открыть и будешь ждать.
Ты знаешь про нашу большую базу, так вот, когда мы там один столбец заменили с формулы на поле, то вьюха стала открываться почти мгновенно.
Сложность формулы тоже имеет значение, попробуй с Replace провести эксперимент.
 

Mikle_GB

Lotus Team
07.07.2016
69
25
BIT
53
Мыш, у Рината одс 53, у меня 52 (9 версия). Напоследок добавлю, что после добавления в базу 2 лямов окурков (путём удаления ранее созданных документов) время индексации выросло до 66-68 мин на формуле и 63-70 на поле.

Паш, я для индексации лучшей метрики, чем упдалл, не нашёл - подскажи, если знаешь). Походу, индексёр обламывается, если вьюшка индексируется при открытии из клиента - у мну так получалось, если править открытый в клиенте вид. Тормознул клиента и запустил упдалл - и всё отработало штатно. У вас народу много, наверняка кто-то полез в базу, не дождавшись индексации (может в out of service переводить перед тяжёлыми операциями).
Кстати, в процессе упдалл иногда ругался "stressTest.nsf - DOT Entry=0 LSN=0000006F-B7B496F8 Name= DB=", не знаю, почему.

Усложнил формулу (кроме реплейса ещё пару рандомов с округлением):
@Trim( @Unique(
@Replace( f_0: f_1: f_2: f_3;
@GetField("f_" +@Text(@Round(@Random*4; 1)));
@GetField("f_" +@Text(@Round(@Random*4; 1)))
)
))
Первый запуск - 45 минут с полем, 58 с формулой; два последующих - 45 минут с полем, 50 с формулой.
Добавил второй столбец с формулой @ReplaceSubstring(f_0: f_1: f_2: f_3; f_1; f_3) - получил 58, 63, 64 минуты.
Добавил третий столбец с формулой @Trim( @Unique( @Replace(f_0: f_1: f_2: f_3; f_0:f_1; f_2:f3) ) ) но снял галки "show multiple as separate" - получил время 40 и 39 минут.

В общем, резюме такое: значительная часть времени индексации тратится на перетрахивание документов (сиречь доступ к данным); формулы в столбцах влияют, но не волшебно. Ключевые моменты для индексации - кол-во дкументов и свойства вида (сортировки, кол-во строк), по крайней мере в синтетическом тесте.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
У вас народу много, наверняка кто-то полез в базу, не дождавшись индексации (может в out of service переводить перед тяжёлыми операциями).
я сервер гасил для этого) максиму что было минут 15 работал, а в клиенте потом снова перестройка идет.
 

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
3
Вот только когда пользователь полезет в базу, то процесс пойдет еще раз.
updall -R не показатель, он порой срабатывает за несколько секунд, но попробуй потом вьюху на экране открыть и будешь ждать.
Ты знаешь про нашу большую базу, так вот, когда мы там один столбец заменили с формулы на поле, то вьюха стала открываться почти мгновенно.
Сложность формулы тоже имеет значение, попробуй с Replace провести эксперимент.
Updall -R срабатывает за неск секунд тогда, когда уже идет индексация в потоке клиента например...

формулы в столбцах влияют, но не волшебно
Именно так. Это здорово, когда все уже вычислено для индексера - для прод случай идеальный :) Но сильно не эффективно для разработки - когда нужно добавить еще ключ - перетряхивать придется миллионы доков на не вьюшку.
Ну это лирика - а пока фактом остается периодический слет индекса на любых вьюхах. сейчас делаю эксперименты с "Optimize document table map".
 
04.06.2019
135
19
BIT
0
Отметим, что вынос индексов из БД в среднем никак не повлиял на скорость индексации: с формулой в столбце индексация шла 47 и 44 мин; с полем - 41 и 46 минут.
а виды просто так рядом вынесли? или на отдельный рейд и соответственно канал? если на тот же раздел, то ожидаемо, что не будет прироста
 

Mikle_GB

Lotus Team
07.07.2016
69
25
BIT
53
Увы мне - серверок на слабой виртуалке, быстрого рейда нету. Вынес, так сказать, попутно - раз уж начал проверять...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!