|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Перед каждым этапом теста фокс перезапускался. Первый запуск не учитывал. Точнее запускал раз 15-20 подряд, время брал минимальное. Общий порядок такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2011, 17:35 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Интересно, а если увеличить количество записей, помеченных как удаленные или уменьшить общее количество записей таблицы? Будет ли наблюдаться изменение пропорции во времени выборки с индексом по Deleted() и без него? Я к тому, что HELP говорит о некоем "пороговом" значение, когда индекс по Deleted() все-таки ускоряет выполнение выборки. Возможно, что в твоем примере, ты не достиг этого "порога". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2011, 18:35 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TПопроверял на других значениях nTovarId, получил на одном из значений результат с индексом быстрее на 0.002 сек. Хотя если сделать PACK, то без индекса быстрее на 0.012 сек. Вобщем мои выводы не в пользу индекса, согласен, он не мешает, но и не помогает. итого, договорились все-же до того, что индекс не мешает. насчет того, что не помогает - не согласен, так как существуют проекты - (ПО), которые(ое) эксплуатируются вдали от разработчиков, и без присутствия админов. поэтому предусмотрев наличие индексов, оптимизирующих выборки при наличии удал-х записей, разработчик гарантирует стабильную работу ПО вдали от себя. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2011, 20:12 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
прошелмимонасчет того, что не помогает - не согласен, так как существуют проекты - (ПО), которые(ое) эксплуатируются вдали от разработчиков, и без присутствия админов. поэтому предусмотрев наличие индексов, оптимизирующих выборки при наличии удал-х записей, разработчик гарантирует стабильную работу ПО вдали от себя. Если подразумевается, что в таблице накапливается большое количество записей, помеченных как удаленные, то индекс - это не замена команды PACK, а всего-лишь сокрытие одной из проблем, связанных с отсутствием физического удаления записей. Проблемы замедления выполнения запроса. Однако с другой стороны, пока записей помеченных как уделенные нет или очень мало, то такой индекс сам начинает тормозить выполнение запроса. Получается, парадоксальная ситуация. Чтобы получить выигрыш от использования подобного индекса необходимо накопить достаточное количество "мусора". А до тех пор, сам индекс будет выступать в роли "мусора" (т.е. сам будет тормозить работу). А не проще ли выбрасывать "мусор", когда его накапливается столько, что он начинает тормозить работу? В любом случае, любое ПО обязано предусматривать наличие процедур по обслуживанию баз данных. Вне зависимости от того, есть админ или нет. В данном случае, по физическому удалению записей, помеченных как удаленные. Т.е. подаче команды PACK. А вот как это организовать, чтобы "тупой пользователь" не повредил приложение - это уже другой вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2011, 22:55 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМОднако с другой стороны, пока записей помеченных как уделенные нет или очень мало, то такой индекс сам начинает тормозить выполнение запроса. еще раз, покажите это торможение. на сколько присутствие индекса "тормозит" выполнение запроса и на сколько такое "торможение" актуально. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 17:40 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
прошелмимоВладимирМОднако с другой стороны, пока записей помеченных как уделенные нет или очень мало, то такой индекс сам начинает тормозить выполнение запроса. еще раз, покажите это торможение. на сколько присутствие индекса "тормозит" выполнение запроса и на сколько такое "торможение" актуально. Гм... Вы что, результаты тестирования, приведенные Dima T не читали? Если Вас смущает мизерное влияние на производительность, то почему Вы считаете, что ускорение при превышении некоего порога будет более существенным? Еще раз, а Вы сами-то можете привести пример, подтверждающий Ваши слова? Насколько присутствие индекса "ускоряет" выполнение запроса? Сколько при этом должно быть записей, помеченных как удаленные? Пока что, я присоединяюсь к мнению Dima T . В подавляющем большинстве задач, наличие подобного индекса - не оправдано. Затраты выше, чем польза. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2011, 20:34 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМпрошелмимопропущено... еще раз, покажите это торможение. на сколько присутствие индекса "тормозит" выполнение запроса и на сколько такое "торможение" актуально. Гм... Вы что, результаты тестирования, приведенные Dima T не читали? Если Вас смущает мизерное влияние на производительность, то почему Вы считаете, что ускорение при превышении некоего порога будет более существенным? Еще раз, а Вы сами-то можете привести пример, подтверждающий Ваши слова? Насколько присутствие индекса "ускоряет" выполнение запроса? Сколько при этом должно быть записей, помеченных как удаленные? Пока что, я присоединяюсь к мнению Dima T . В подавляющем большинстве задач, наличие подобного индекса - не оправдано. Затраты выше, чем польза. суть разговора заведенного изначально: наличие бинарного индекса, предназначенного для оптимизации при наличии большого кол-ва уд-х записей, при отсутствии таких записей существенно замедляет выборки. т.е. изречение было: "индекс тормозит". итого тестами достигнут вывод: наличие индекса "не тормозит". т.е. если есть бинарный индекс и нет удаленных записей, то наличие индекса не вносит "тормоз". Вывод Dima T: Вобщем мои выводы не в пользу индекса, согласен, он не мешает, но и не помогает. Все, больше мне от теоретиков не нужно никаких выводов. Никаких "затрат" на создание индекса и при наличии индекса нет. Про ускорение от наличия индекса при отсутствии удаленных записей речи не было. Такой индекс будет ускорять выборки при наличии удаленных записей, что имеет быть часто на практике, когда приложения работают вдали от разработчиков. Упаковка таблиц не является строгой необходимостью, а должна применяться строго осмысленно и по рекомендации разработчика ПО. Упаковывать таблицы необходимо при осмысленной необходимости и только в монопольном режиме. У разработчика имеется также имеется возможность не применять не упаковку, а создать алгоритм востановление записей и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2011, 10:12 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
прошелмимонасчет того, что не помогает - не согласен, так как существуют проекты - (ПО), которые(ое) эксплуатируются вдали от разработчиков, и без присутствия админов. поэтому предусмотрев наличие индексов, оптимизирующих выборки при наличии удал-х записей, разработчик гарантирует стабильную работу ПО вдали от себя. Повторю свое мнение - отсутствие помеченных на удаление дает значительно большую производительность, чем хитрый индекс при большом количестве помеченных. Основные тормоза из-за чтения по сети: Да, хитрый индекс немного уменьшает чтение данных, но полезные индексы все равно содержат ссылки на все записи независимо от пометки на удаления и это тянется на клиента. Размер индекса прямо-пропорционален количеству записей. Например индекс по полю типа int занимает 4 байта на 1 запись. Индекс типа BINARY 1 бит на запись. Потом есть специфика чтения данных фоксом - чтение идет блоками по несколько записей подряд (filemon`ом можно увидеть), например в моем случае при размере записи 25 байт читаются блоки по 525. Т.е. помеченные все-равно будут читаться на клиента, если попадут в блок с нужными. Непонятно почему команда PACK требует присутствия админа? Пересоздание индексов тоже админ должен делать? Если есть проблемы с железом, то попортить таблицы можно и "легальными" операциями записи. Если с железом все нормально, то от PACKа проблем нет. Если уж нужна супер-мега-устойчивость: бэкап перед паком, добавление контроля и восстановление из бэкапа в случае вылета в процессе пака. Хотя эта процедура прописана качественно разработчиками фокса: создается временный файл, туда переносятся все непомеченные записи, удаляется исходный, временный переименовывается в DBF. Лично у меня из-за PACKа никогда проблем не было. Во многих местах софт работает годами при ежедневном индексировании и упаковке без всякого админского вмешательства. В нормально спроектированной базе помеченных на удаление не должно быть в большом количестве. Это ж надо иметь юзера-маньяка который что-то набивает, сохраняет, потом удаляет, и так по кругу целыми днями. Если по каким-то причинам эту проблему не решить, технологически необходимо помногу удалять и писать заново, тогда надо делать повторное использование помеченных на удаление записей, а не надеяться на какой-то шаманский индекс, который возможно минимизирует тормоза. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2011, 10:35 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Повторю свое мнение - наличие хитрого индекса не вносит проблем в скорость выполнения запросов. если у пользователей и админов паранойа, то они могут без устали гонять друг-дружку из сети, и танцева с "бубнами". наличие бинарного индекса позволяет оптимизировать запросы при наличии удаленных записей в таблицах, что дает возможность работать без упаковки таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2011, 11:16 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникПовторю свое мнение - Вобщем давай останемся каждый при своем мнении, т.к. предмет спора совсем не в индексе. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2011, 11:43 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЮристишко-выпускникПовторю свое мнение - Вобщем давай останемся каждый при своем мнении, т.к. предмет спора совсем не в индексе. ок, нечего было затевать "срачь" и доказывать про "тормоза". как выяснилось, "тормозов" - нет. на этом и постановим: наличие бинарного индекса по удал-м записям не вредит никому. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2011, 12:18 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникDima Tпропущено... Вобщем давай останемся каждый при своем мнении, т.к. предмет спора совсем не в индексе. ок, нечего было затевать "срачь" и доказывать про "тормоза". как выяснилось, "тормозов" - нет. Гм... как будто вообще не читали тему. Ведь показали же, что "тормоза" есть. И не "теоретическими" рассуждениями, а сугубо практическими примерами. А вот чтобы почувствовать "ускорение" надо приложить определенные усилия. Другой вопрос в размере этих самых "тормозов" и "ускорений". Юристишко-выпускникна этом и постановим: наличие бинарного индекса по удал-м записям не вредит никому. Да, согласен, особого вреда от него нет. Но и польза, в большинстве случаев, сомнительна. Как относительно "бесполезная" вещь, действительно не вредит никому. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2011, 15:29 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМВедь показали же, что "тормоза" есть. теоретек, ихде? Ваши советы нужны только детям - идите строго на фоксклаб! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 09:05 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Если Вы "вдруг" пропустили , то мне не трудно повторить Dima TПерепроверил странные результаты, нашел несколько косяков в тесте: 1. select ставил фильтр на на таблицу, поправил запрос на такой select * from Table where nTovarId = 12345 into cursor tRes nofilter 2. индекс делал обычный, без BINARY 3. в tRes попадают 20,5 тыс.записей (остаются среди помеченных на удаление 10 тыс.) Результаты: 0.066 сек. без хитрого индекса 0.080 сек с индексом по deleted() Сделал PACK (стало 30 млн записей, 0,7 Гб): 0.050 сек. без хитрого индекса 0.061 сек с индексом по deleted() В итоге все равно никакой пользы от хитрого индекса , хотя она должна бы быть судя по хэлпам. Потери времени небольшие, но все-таки потери. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 11:14 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМ, Прошу прощения, что вмешиваюсь, но... Если таки записей, помеченных на удаление, так мало (менее 3%), что бинарный индекс будет только мешать... Зачем тогда паковать таблицу? Ведь вроде Ваше спор начался именно с необходимости упаковки таблицы. И именно упаковку таблицы уважаемый прошелмимо именно в данном случае предлагал заменить на индекс. Весьма вероятно, что я что-то не понимаю в Вашем споре. Но, имхо, выглядит так, что вы с Dima T подменяете понятия: начали разговор про необходимость упаковки таблицы, продолжили про то, что индекс при записях менее 3% мешает... Или Вы считаете, что наличие помеченных для удаления записей в количестве менее 3% - уже веское обоснование для периодической (постоянной?) упаковки таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 12:31 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosВедь вроде Ваше спор начался именно с необходимости упаковки таблицы. И именно упаковку таблицы уважаемый прошелмимо именно в данном случае предлагал заменить на индекс. Вроде как об этом и спорили. Мой вывод: Dima TПопроверял на других значениях nTovarId, получил на одном из значений результат с индексом быстрее на 0.002 сек. Хотя если сделать PACK, то без индекса быстрее на 0.012 сек. Вобщем мои выводы не в пользу индекса, согласен, он не мешает, но и не помогает. BanditosВесьма вероятно, что я что-то не понимаю в Вашем споре. Но, имхо, выглядит так, что вы с Dima T подменяете понятия: начали разговор про необходимость упаковки таблицы, продолжили про то, что индекс при записях менее 3% мешает... Или Вы считаете, что наличие помеченных для удаления записей в количестве менее 3% - уже веское обоснование для периодической (постоянной?) упаковки таблицы? Тут я ничего не понял. Как-то ты лихо рекомендации от МС "использовать хитрый индекс при более 3% помеченных на удаление" превратил в "веское обоснование для упаковки таблицы". Чего-то ты так все вывернул, что для ответа весь наш спор заново надо повторить. Перечитай топик. PS "прошелмимо" и "Юристишко-выпускник" это один и тот же человек. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 14:08 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМЕсли Вы "вдруг" пропустили , то мне не трудно повторить Dima TПерепроверил странные результаты, нашел несколько косяков в тесте: 1. select ставил фильтр на на таблицу, поправил запрос на такой select * from Table where nTovarId = 12345 into cursor tRes nofilter 2. индекс делал обычный, без BINARY 3. в tRes попадают 20,5 тыс.записей (остаются среди помеченных на удаление 10 тыс.) Результаты: 0.066 сек. без хитрого индекса 0.080 сек с индексом по deleted() Сделал PACK (стало 30 млн записей, 0,7 Гб): 0.050 сек. без хитрого индекса 0.061 сек с индексом по deleted() В итоге все равно никакой пользы от хитрого индекса , хотя она должна бы быть судя по хэлпам. Потери времени небольшие, но все-таки потери. Вам вместе с Димой нехер заняться? И Дима и Владмир это тоже один человек? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 15:34 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TВроде как об этом и спорили. Мой вывод: Ваш вывод неверный. Вы начали свои высеры с того, что наличие индекса - это какой-то "тормоз". В итоге Вы наловили микросекунд. Следовательно, нужно помолчать. Тупо читать и молчать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 15:37 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TPS "прошелмимо" и "Юристишко-выпускник" это один и тот же человек. Я это понял. Кстати, меня сильно смущает Ваше тестирование. Что именно Вы хотели показать нам этим тестированием? А можно спросить: для чего вообще, по Вашему мнению, нужен этот самый бинарный индекс? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 15:44 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникИ Дима и Владмир это тоже один человек? Разные Юристишко-выпускникDima TВроде как об этом и спорили. Мой вывод: Ваш вывод неверный. Вы начали свои высеры с того, что наличие индекса - это какой-то "тормоз". В итоге Вы наловили микросекунд. Ппц, сколько счастья что ты прав, всю ветку зафлудил. Да, подтверждаю, ты ПРАВ в том что этот индекс не дает тормозов. Удовлетворен? Или справку на бумаге выдать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 16:42 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosКстати, меня сильно смущает Ваше тестирование. Смущает - проведи свое. Выложи результат - обсудим. BanditosЧто именно Вы хотели показать нам этим тестированием? То что надо PACK регулярно делать и/или не плодить помеченные на удаление записи. Без помеченных на удаление быстрее выборки делаются чем с помеченными при наличии индекса. BanditosА можно спросить: для чего вообще, по Вашему мнению, нужен этот самый бинарный индекс? Я уже писал выше свое предположение: "Предложение создавать такие индексы со стороны МС появилось для желающих видеть полную оптимизацию по SYS(3054,11)" Может они иногда ускоряют выборку как утверждает МС, но в моих тестах этого не произошло. У меня выборка по той же таблице после PACK всегда происходила заметно быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 16:45 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosВладимирМ, Прошу прощения, что вмешиваюсь, но... Если таки записей, помеченных на удаление, так мало (менее 3%), что бинарный индекс будет только мешать... Зачем тогда паковать таблицу? Ведь вроде Ваше спор начался именно с необходимости упаковки таблицы. И именно упаковку таблицы уважаемый прошелмимо именно в данном случае предлагал заменить на индекс. Нет. Спор совсем о другом. Вы смешали несколько понятий. Повторю, вкратце. 1. Если записей, помеченных как удаленные нет совсем или их очень мало, то: 1.1. Индекс по выражению Deleted() будет только мешать. Замедлит выполнение выборки 1.2. Использовать команду PACK - пока рано, поскольку существенного выигрыша в производительности это не принесет 2. Если записей, помеченных как удаленные больше некоего порогового значения (сколько именно, определяется в каждом конкретном случае отдельно. Help говорит о 3%, но тут же уточняет, что не факт), то 2.1. Индекс по выражению Deleted() ускорит выполнение выборки 2.2. Добиться ускорение выборки можно физически удалив все записи ранее помеченные как удаленные. Т.е. дать команду PACK Далее из этого возникла "подтема" прошелмимо : Для "коробочного" ПО использовать команду PACK - недопустимо. Следовательно, надо использовать индекс по Deleted() Dima T , ВладимирМ : Любое ПО и "коробочное", в том числе, обязано иметь ряд служебных процедур по мелкому ремонту. В том числе, и по физическому удалению записей, помеченных как удаленные. Следовательно, использование индекса по Deleted() - бессмысленно. Как только программа начнет заметно тормозить надо просто выполнить процедуру упаковки. Под термином "коробочное" ПО, в данном случае подразумевается, что у клиента, где работает программа, нет администратора или программиста, которые могли бы "вручную" открыть таблицы и также "вручную" дать команду PACK Вот, собственно, и все. С нашей с Dima T точки зрения, индекс по Deleted() - бесполезен. Аргументация прошелмимо , ну, сами читали.... Вероятно, он либо никогда не использовал индексы по Deleted(), либо не проводил тестирование его эффективности. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:01 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Весь тред не читал, а что мешает использовать фильтрованный индекс,... подкидываю идею для исследования :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:21 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЮристишко-выпускникИ Дима и Владмир это тоже один человек? Разные Юристишко-выпускникпропущено... Ваш вывод неверный. Вы начали свои высеры с того, что наличие индекса - это какой-то "тормоз". В итоге Вы наловили микросекунд. Ппц, сколько счастья что ты прав, всю ветку зафлудил. Да, подтверждаю, ты ПРАВ в том что этот индекс не дает тормозов. Удовлетворен? Или справку на бумаге выдать? Да, удовлетворен. Поэтому мудакам-кулинарам пишущим лозунги: "Вы не любите кошек? Просто Вы не умеете их готовить" место на фоксклабе - там флуда нет, а здесь счаз я еще повеселюсь. заметь еще, что про "ракетоносные св-ва" чудоиндекса я еще не начинал пока писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:28 |
|
|
start [/forum/topic.php?fid=41&msg=37139778&tid=1584516]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 144ms |
0 / 0 |