|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29Юристишко-выпускник, Хотя бы для ускорения работы. Узбавиться от лишних уже не использумых данных. точно уверены? Вы читали про бинарные индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:46 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЮристишко-выпускникзачем? Что "зачем?" паковать? если помеченных на удаление нет, то оно быстро отрабатывает. При "правильной" структуре помеченных обычно нет. Принудительное индексирование обычно раз в сутки делаю, плюс контроль вылетов проги. Может и паранойя, только мистики из-за битых индексов я много видел, ладно если выборка для отчета кривая получится, а если в базу чего криво запишется, то такое за пять минут не полечишь. констатирую - параноийа. я тоже мистики много видел, только перед тем как паковать сто раз подумаю, перед тем как это сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:49 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникВы читали про бинарные индексы? Ты про индекс по deleted() ? Ты замерял реальную помощь от него? Я замерял, оптимизатор пишет все отлично, а запросы медленнее выполняются чем без него. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:50 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЮристишко-выпускникВы читали про бинарные индексы? Ты про индекс по deleted() ? Ты замерял реальную помощь от него? Я замерял, оптимизатор пишет все отлично, а запросы медленнее выполняются чем без него. иди - покури ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:50 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускниктолько перед тем как паковать сто раз подумаю, перед тем как это сделать. А чего там думать? перед этим надо бэкап делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:51 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
итак жду ответа ТСа: 1. зачем пользователю нужны "удаленные документы". понял ли он, что в бух.системах "удаленный документ" это не есть "удаленная запись в дбф". 2. что не устраивает ТСа в работе с таблицами, которые содержат уд-е записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:53 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЮристишко-выпускниктолько перед тем как паковать сто раз подумаю, перед тем как это сделать. А чего там думать? перед этим надо бэкап делать. иди - кури, сказал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:54 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникитак жду ответа ТСа: Это я так понимаю вопрос ко мне Юристишко-выпускник1. зачем пользователю нужны "удаленные документы". Что бы видеть что удалено не полностью а также иметь возможность отменить удаление Юристишко-выпускникпонял ли он, что в бух.системах "удаленный документ" это не есть "удаленная запись в дбф". да, я с этим и не спорил. Под методом организации работы понимается пометка на удаление, а потом в монопольном режиме удаление. И для меня без разницы или это будет отдельное поле или пометка в самом dbf. Первый вариант я так понимаю более правильный. Юристишко-выпускник2. что не устраивает ТСа в работе с таблицами, которые содержат уд-е записи. Постепенное её разрастание и путаница если вдруг понадобится отменять удаление. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 14:05 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
еще раз: 1. если пользователям нужно иметь возм-ть восстанавливать док-ты, то нужно завести поле - признак "удален" также пользователям нужно сделать интерфейс, в котором отобр-ся уд-е, и возможность сброса признака и т.д. завязывать это на признак "помечен" в дбф не нужно. все запросы, отчеты и т.д. должны учитывать этот признак 2. для того, чтобы быстродействие не страдало от кол-ва уд-х записей в табличке нужно создать доп.индексы при корректном написании запросов наличие уд-х записей не влияет на результаты паковать Вы сможете, если уж приспичит, руками из среды, тогда, когда с приложением никто работать не будет, но только явно и четко при осознанной необходимости. (в моей практике были случаи, когда "горе писатели" чистили пользователям таблицы напрочь - теряли данные). не нужно для многоп-й среды создавать какие-то подобные инструменты и давать их пользователям - это задача администратора. также такой принцип (в случае чего) Вам позволит безболезненено мигрировать на сервер (там нет такой вещи, как удаленная запись). + еще один вопрос: зачем Вы вообще решили, что необходимо иметь возможность восстановления удаленных записей? это пожелание кого-то или личная хотелка? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 14:22 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникеще раз: 2. для того, чтобы быстродействие не страдало от кол-ва уд-х записей в табличке нужно создать доп.индексы про хитрый индекс, можно по подробнее? Юристишко-выпускникзачем Вы вообще решили, что необходимо иметь возможность восстановления удаленных записей? это пожелание кого-то или личная хотелка? К сожалению пожелание пользователя, хотя будет ли это реально востребовано ни пользователь ни я не знаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 14:44 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29Юристишко-выпускникеще раз: 2. для того, чтобы быстродействие не страдало от кол-ва уд-х записей в табличке нужно создать доп.индексы про хитрый индекс, можно по подробнее? Тут по-русски Вся хитрость в таком индексе Код: plaintext
Обсуждали это не раз. Поищи в форуме по фразе "index on deleted()" Вобщем вредный он или полезный надо проверять на конкретной задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 17:07 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T Если мало (как оно обычно и бывает), то от него лишние тормоза. ну давай, показывай тормоза ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 17:48 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускник Александр, я не понял, а почему не надо паковать таблицы, если есть записи, помеченные как удаленные? Для чего хранить "мусор"? Я так понимаю, что Вы категорически против самой команды Pack в любом виде. Почему, собственно? И еще, по-моему, должно быть очевидно, что "Rushmore-оптимизация" не есть синоним "ускорения". Тут более точно подойдет термин "как правило". Т.е. если запрос будет оптимизирован, то, как правило он будет выполняться быстрее. Это правило. Но оно имеет исключения. О чем ясно и недвусмысленно написано в Help в справке по типам индексов http://www.foxclub.ru/rhproject/project/html/fe911859-3235-4349-82c7-fa16a16d5527.htm HRLP VFP9Visual FoxPro часто может создать битовую карту оптимизации Rushmore для бинарных индексов значитетельно быстрее, если число возвращаемых записей более, чем 3% от общего числа записей. Однако, если возвращаемое число записей менеее 3% от общего числа записей, то создание битовых карт оптимизации Rushmore является более медленным процессом . 3% барьер может уменьшаться по мере увеличения записей в таблице. Замечание Увеличение или уменьшение производительности и размеры бинарных индексов могут варьироваться в зависимости от ваших конкретных данных и архитектуры приложения. Числа, используемые в примере основываются на тестах, использующих данные, сгенерированные случайным образом. Т.е. вывод простой, если записей, помеченных как удаленные, мало, то индекс по таким записям замедлит, а не ускорит выборку. А вот сколько именно записей будет "мало", а сколько "достаточно" определяется экспериментально. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2011, 00:33 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМ Юристишко-выпускник Александр, я не понял, а почему не надо паковать таблицы, если есть записи, помеченные как удаленные? Для чего хранить "мусор"? Я так понимаю, что Вы категорически против самой команды Pack в любом виде. Почему, собственно? я кажется написал, если заняться нечем, и "невтерпеж", то это должен делать админ, а не пользователь. ду ю андестенд ми? + в некоторых разработках бывает привязка к номеру записи - упаковал - получил проблему. ВладимирМТ.е. вывод простой, если записей, помеченных как удаленные, мало, то индекс по таким записям замедлит, а не ускорит выборку. А вот сколько именно записей будет "мало", а сколько "достаточно" определяется экспериментально. еще раз ну давай, показывай тормоза ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2011, 09:09 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМОднако, если возвращаемое число записей менеее 3% от общего числа записей, то создание битовых карт оптимизации Rushmore является более медленным процессом . + Вы считаете перевод корректным? However, the Rushmore bitmap might be created slower if the number of records returned is less than 3% of the total number of records. Однако, карта оптимизации Рашмор может быть создана медленнее, если число возвращаемых записей составляет менее 3% от общего числа записей. т.е. явно написано, что результирующая выборка будет медленнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2011, 09:48 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
+ для внесения правок в труды относительно vfp9 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
исключает? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2011, 10:30 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникну давай, показывай тормоза Я уже писал что надо на реальных данных проверять. Я у себя на проверял так: Код: plaintext 1. 2. 3. 4. 5. 6.
Помеченных на удаление в таблицах нет. Регулярно PACK у меня делается. Запускал раз 20, время выборки 0.093-0.095 сек. добавил твой хитрый индекс, время выборки 0.095-0.097 сек. На 1-2% дольше по времени с хитрым индексом получается. Исходные таблички выложить не могу, т.к. это реальная база. Теперь твоя очередь доказывать что с индексом быстрее работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2011, 12:04 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникВладимирМ Юристишко-выпускник Александр, я не понял, а почему не надо паковать таблицы, если есть записи, помеченные как удаленные? Для чего хранить "мусор"? Я так понимаю, что Вы категорически против самой команды Pack в любом виде. Почему, собственно? я кажется написал, если заняться нечем, и "невтерпеж", то это должен делать админ, а не пользователь. А разве против того, что это должен делать админ кто-то возражал? По-моему, именно это все и имели в виду. Правда, в отличии от Вас предполагалась не ручная упаковка каждой таблицы в отдельности, а наличие некой процедуры, которая сама пробежится по всем таблицам и их упакует. "ду ю андестенд ми?" Юристишко-выпускник+ в некоторых разработках бывает привязка к номеру записи - упаковал - получил проблему. Т.е. Вы против по той причине, что у кого-то, где-то, разработка построена на использовании физического номера записи? Юристишко-выпускникВладимирМТ.е. вывод простой, если записей, помеченных как удаленные, мало, то индекс по таким записям замедлит, а не ускорит выборку. А вот сколько именно записей будет "мало", а сколько "достаточно" определяется экспериментально. еще раз ну давай, показывай тормоза Вы не верите тому, что написано в Help? Тогда бремя доказательства лежит на Вас. Продемонстрируйте ускорение, когда записей, помеченных как удаленные нет вообще или их количество существенно меньше общего количества записей. Для индекса типа Binary, в большинстве случаев, HELP говорит о пороге в 3% ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2011, 13:00 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМВы не верите тому, что написано в Help? да, - я не верю тому как переведено, и Вашему пониманию того, что там написано. а речь идет в контексте именно о постоении карты оптимизации, но никак не о запросе, который будет это использовать ВладимирМТогда бремя доказательства лежит на Вас. Продемонстрируйте ускорение, когда записей, помеченных как удаленные нет вообще или их количество существенно меньше общего количества записей. Для индекса типа Binary, в большинстве случаев, HELP говорит о пороге в 3% кажется разговор был о замедлении при наличии такого индекса. Dima TНа 1-2% дольше по времени с хитрым индексом получается. жесть я даже готов согласиться в том, что тесты корректны и что при наличии индекса теряем .002 секунды. 0.002 секунды - это тормоз? Вам не кажется, что проще все-же иметь такой индекс, который все-же не замедляет выборки? + многие разработчики пишут софт и не могут самостоятельно обслуживать БД и т.д., и они должны предвидеть наличие уд-х записей, и должны вести разработку с учетом того, чтобы наличие этих записей не влияло на скорость запросов. поэтому наличие такого индекса - необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2011, 20:52 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
прошелмимоВладимирМТогда бремя доказательства лежит на Вас. Продемонстрируйте ускорение, когда записей, помеченных как удаленные нет вообще или их количество существенно меньше общего количества записей. Для индекса типа Binary, в большинстве случаев, HELP говорит о пороге в 3% кажется разговор был о замедлении при наличии такого индекса. А разве я сказал не то же самое? Ну, хорошо, тогда "по буквам" 1. Индекс по Deleted() ускорит выполнение выборки, если общее количество записей, помеченных как удаленные, в среднем, более 3%. 2. Однако, индекс по Deleted() замедлит выполнение выборки, если общее количество записей, помеченных как удаленные, в среднем, менее 3% или вообще отсутствуют. Это то, что утверждает HELP и с чем я согласен. Насколько я понимаю, Вы утверждаете, что факт наличия индекса ускорит выполнение выборки всегда и при любых условиях. Вот и докажите это свое утверждение. Т.е докажите, что второе положение - не верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2011, 22:39 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
прошелмимоя даже готов согласиться в том, что тесты корректны и что при наличии индекса теряем .002 секунды. 0.002 секунды - это тормоз? Вам не кажется, что проще все-же иметь такой индекс, который все-же не замедляет выборки? Хорошо, усложним задачу. Сделаем условия приближенные к рабочим. Исходные данные: VFP9SP2, SET DELETED ON, USE Table SHARED Таблица 44,5 млн записей, 1Гб весом, индекс по полю nTovarId Таблица на одном компе, запрос со второго. сетка 100 мбит сделал пометку на удаление 33% записей: delete for recno() % 3 = 0 запрос такой: select * from Table where nTovarId = 12345 into cursor tRes курсор tRes получается 0,5 млн записей. Запускал по 15-20 раз. Результаты: 0.07 сек. без хитрого индекса 0.25 сек с индексом по deleted() Сделал PACK (стало 30 млн записей, 0,7 Гб): 0.05 сек. без хитрого индекса 0.24 сек с индексом по deleted() Итого: медленнее в ТРИ раза с индексом по deleted() Правда разница 0.18 сек. всего. Итого 2: наличие трети записей помеченных на удаление почти не замедляет работу (0.01-0.02 сек) Если честно не ожидал такого результата. Думаю ты сам подобный тест уже провел, только результаты постеснялся выложить :) PS Как я подозреваю предложение создавать такие индексы со стороны МС появилось для желающих видеть полную оптимизацию по SYS(3054,11) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2011, 13:25 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Перепроверил странные результаты, нашел несколько косяков в тесте: 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() В итоге все равно никакой пользы от хитрого индекса , хотя она должна бы быть судя по хэлпам. Потери времени небольшие, но все-таки потери. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2011, 15:05 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Попроверял на других значениях nTovarId, получил на одном из значений результат с индексом быстрее на 0.002 сек. Хотя если сделать PACK, то без индекса быстрее на 0.012 сек. Вобщем мои выводы не в пользу индекса, согласен, он не мешает, но и не помогает. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2011, 15:29 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
На всякий случай уточню. Перед выполнением запросов FoxPro перзагружался? Это я к тому, что Fox кеширует индексы. Как правило, первый раз после загрузки FoxPro запрос выполняется относительно медленно, зато потом "летает" именно в силу того, что индекс уже лежит в кеше и его не надо дополнительно скачивать. Т.е. сравнивать скорости надо либо каждый раз перед выполнением запроса перезагружая FoxPro, либо запускать каждый запрос два раза подряд и сравнивать время выполнения второго раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2011, 17:05 |
|
|
start [/forum/topic.php?fid=41&msg=37135656&tid=1584516]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 152ms |
0 / 0 |