powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выделить удаленные записи в Grid
25 сообщений из 179, страница 2 из 8
Выделить удаленные записи в Grid
    #37133176
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr29Юристишко-выпускник,
Хотя бы для ускорения работы. Узбавиться от лишних уже не использумых данных.

точно уверены?

Вы читали про бинарные индексы?
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133182
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЮристишко-выпускникзачем?
Что "зачем?" паковать? если помеченных на удаление нет, то оно быстро отрабатывает. При "правильной" структуре помеченных обычно нет.

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

констатирую - параноийа.

я тоже мистики много видел,
только перед тем как паковать сто раз подумаю,
перед тем как это сделать.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133183
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юристишко-выпускникВы читали про бинарные индексы?
Ты про индекс по deleted() ?
Ты замерял реальную помощь от него? Я замерял, оптимизатор пишет все отлично, а запросы медленнее выполняются чем без него.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133186
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЮристишко-выпускникВы читали про бинарные индексы?
Ты про индекс по deleted() ?
Ты замерял реальную помощь от него? Я замерял, оптимизатор пишет все отлично, а запросы медленнее выполняются чем без него.

иди - покури
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133188
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юристишко-выпускниктолько перед тем как паковать сто раз подумаю,
перед тем как это сделать.
А чего там думать? перед этим надо бэкап делать.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133194
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
итак жду ответа ТСа:


1. зачем пользователю нужны "удаленные документы".

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

2. что не устраивает ТСа в работе с таблицами, которые содержат уд-е записи.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133195
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TЮристишко-выпускниктолько перед тем как паковать сто раз подумаю,
перед тем как это сделать.
А чего там думать? перед этим надо бэкап делать.

иди - кури, сказал.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133685
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юристишко-выпускникитак жду ответа ТСа:
Это я так понимаю вопрос ко мне
Юристишко-выпускник1. зачем пользователю нужны "удаленные документы".

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

да, я с этим и не спорил. Под методом организации работы понимается пометка на удаление, а потом в монопольном режиме удаление. И для меня без разницы или это будет отдельное поле или пометка в самом dbf. Первый вариант я так понимаю более правильный.
Юристишко-выпускник2. что не устраивает ТСа в работе с таблицами, которые содержат уд-е записи.
Постепенное её разрастание и путаница если вдруг понадобится отменять удаление.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133729
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще раз:

1. если пользователям нужно иметь возм-ть восстанавливать док-ты,
то нужно завести поле - признак "удален"
также пользователям нужно сделать интерфейс, в котором отобр-ся уд-е,
и возможность сброса признака и т.д.

завязывать это на признак "помечен" в дбф не нужно.

все запросы, отчеты и т.д. должны учитывать этот признак

2. для того, чтобы быстродействие не страдало от кол-ва уд-х
записей в табличке нужно создать доп.индексы

при корректном написании запросов наличие уд-х записей не
влияет на результаты

паковать Вы сможете, если уж приспичит, руками
из среды, тогда, когда с приложением никто работать не будет,
но только явно и четко при осознанной необходимости.
(в моей практике были случаи,
когда "горе писатели" чистили пользователям таблицы
напрочь - теряли данные).
не нужно для многоп-й среды создавать какие-то
подобные инструменты и давать их пользователям -
это задача администратора.

также такой принцип (в случае чего) Вам позволит безболезненено
мигрировать на сервер (там нет такой вещи, как удаленная запись).


+ еще один вопрос:
зачем Вы вообще решили, что необходимо иметь
возможность восстановления удаленных записей?
это пожелание кого-то или личная хотелка?
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133778
Alexandr29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юристишко-выпускникеще раз:
2. для того, чтобы быстродействие не страдало от кол-ва уд-х
записей в табличке нужно создать доп.индексы
про хитрый индекс, можно по подробнее?
Юристишко-выпускникзачем Вы вообще решили, что необходимо иметь
возможность восстановления удаленных записей?
это пожелание кого-то или личная хотелка?
К сожалению пожелание пользователя, хотя будет ли это реально востребовано ни пользователь ни я не знаем.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37133810
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37134166
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr29Юристишко-выпускникеще раз:
2. для того, чтобы быстродействие не страдало от кол-ва уд-х
записей в табличке нужно создать доп.индексы
про хитрый индекс, можно по подробнее?
Тут по-русски
Вся хитрость в таком индексе
Код: plaintext
INDEX ON DELETED() TAG DeletedTag BINARY
Этот индекс далеко не всегда дает ускорение при выборке, реальная польза от него будет если есть много помеченных на удаление записей. Если мало (как оно обычно и бывает), то от него лишние тормоза.
Обсуждали это не раз. Поищи в форуме по фразе "index on deleted()"

Вобщем вредный он или полезный надо проверять на конкретной задаче.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37134277
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T Если мало (как оно обычно и бывает), то от него лишние тормоза.


ну давай, показывай тормоза
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37134771
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юристишко-выпускник

Александр, я не понял, а почему не надо паковать таблицы, если есть записи, помеченные как удаленные? Для чего хранить "мусор"?

Я так понимаю, что Вы категорически против самой команды Pack в любом виде. Почему, собственно?

И еще, по-моему, должно быть очевидно, что "Rushmore-оптимизация" не есть синоним "ускорения". Тут более точно подойдет термин "как правило". Т.е. если запрос будет оптимизирован, то, как правило он будет выполняться быстрее.

Это правило. Но оно имеет исключения. О чем ясно и недвусмысленно написано в Help в справке по типам индексов

http://www.foxclub.ru/rhproject/project/html/fe911859-3235-4349-82c7-fa16a16d5527.htm

HRLP VFP9Visual FoxPro часто может создать битовую карту оптимизации Rushmore для бинарных индексов значитетельно быстрее, если число возвращаемых записей более, чем 3% от общего числа записей. Однако, если возвращаемое число записей менеее 3% от общего числа записей, то создание битовых карт оптимизации Rushmore является более медленным процессом . 3% барьер может уменьшаться по мере увеличения записей в таблице.

Замечание

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

Т.е. вывод простой, если записей, помеченных как удаленные, мало, то индекс по таким записям замедлит, а не ускорит выборку. А вот сколько именно записей будет "мало", а сколько "достаточно" определяется экспериментально.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37134937
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ Юристишко-выпускник

Александр, я не понял, а почему не надо паковать таблицы, если есть записи, помеченные как удаленные? Для чего хранить "мусор"?

Я так понимаю, что Вы категорически против самой команды Pack в любом виде. Почему, собственно?


я кажется написал,
если заняться нечем,
и "невтерпеж",
то это должен делать админ, а не пользователь.

ду ю андестенд ми?

+ в некоторых разработках бывает привязка к номеру записи -
упаковал - получил проблему.

ВладимирМТ.е. вывод простой, если записей, помеченных как удаленные, мало, то индекс по таким записям замедлит, а не ускорит выборку. А вот сколько именно записей будет "мало", а сколько "достаточно" определяется экспериментально.

еще раз

ну давай, показывай тормоза
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37134992
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМОднако, если возвращаемое число записей менеее 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% от общего числа записей.

т.е. явно написано, что результирующая выборка будет медленнее?
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37135103
Юристишко-выпускник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ для внесения правок в труды относительно 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.
_SCREEN.Cls()

* Это можно сделать добавив в индекс FOR-условие, которое в данном случае будет выглядеть так: FOR .NOT.Deleted() 
* Но добавление FOR-условия в выражение индекса автоматически исключает его из списка индексов, участвующих в оптимизации.

Create CURSOR tt (id i AUTOINC, pp c( 10 ) )
For i= 1  to  10 
   Insert into tt (pp) values ( Ltrim(Str(i)) ) 
EndFor 
Index on id tag id for !Deleted() 
Index on id tag del_id for Deleted() 
Index on Deleted() tag del binary
  
SYS( 3054 , 11 )

set deleted off
SELECT * FROM tt where Deleted() and id =  3  into CURSOR pp

SELECT * FROM tt where !Deleted() and id =  10  into CURSOR pp

set deleted on
SELECT * FROM tt where id =  3   into CURSOR pp

Return

исключает?
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37135436
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юристишко-выпускникну давай, показывай тормоза
Я уже писал что надо на реальных данных проверять. Я у себя на проверял так:
Код: plaintext
1.
2.
3.
4.
5.
6.
lnSec = Seconds()
select ...;
	from Table1 join Spr1 on ...;
		join Spr2 on ...;
	where Table1.Field = ...;
	into cursor tres
? Seconds() - lnSec
Запрос взял частовыполняемый в одном из проектов.
Помеченных на удаление в таблицах нет. Регулярно PACK у меня делается.
Запускал раз 20, время выборки 0.093-0.095 сек.
добавил твой хитрый индекс, время выборки 0.095-0.097 сек.
На 1-2% дольше по времени с хитрым индексом получается.
Исходные таблички выложить не могу, т.к. это реальная база.

Теперь твоя очередь доказывать что с индексом быстрее работает.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37135656
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юристишко-выпускникВладимирМ Юристишко-выпускник

Александр, я не понял, а почему не надо паковать таблицы, если есть записи, помеченные как удаленные? Для чего хранить "мусор"?

Я так понимаю, что Вы категорически против самой команды Pack в любом виде. Почему, собственно?

я кажется написал,
если заняться нечем,
и "невтерпеж",
то это должен делать админ, а не пользователь.
А разве против того, что это должен делать админ кто-то возражал? По-моему, именно это все и имели в виду. Правда, в отличии от Вас предполагалась не ручная упаковка каждой таблицы в отдельности, а наличие некой процедуры, которая сама пробежится по всем таблицам и их упакует.

"ду ю андестенд ми?"

Юристишко-выпускник+ в некоторых разработках бывает привязка к номеру записи -
упаковал - получил проблему.
Т.е. Вы против по той причине, что у кого-то, где-то, разработка построена на использовании физического номера записи?

Юристишко-выпускникВладимирМТ.е. вывод простой, если записей, помеченных как удаленные, мало, то индекс по таким записям замедлит, а не ускорит выборку. А вот сколько именно записей будет "мало", а сколько "достаточно" определяется экспериментально.
еще раз

ну давай, показывай тормоза
Вы не верите тому, что написано в Help? Тогда бремя доказательства лежит на Вас. Продемонстрируйте ускорение, когда записей, помеченных как удаленные нет вообще или их количество существенно меньше общего количества записей. Для индекса типа Binary, в большинстве случаев, HELP говорит о пороге в 3%
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37136887
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМВы не верите тому, что написано в Help?

да, - я не верю тому как переведено,
и Вашему пониманию того, что там написано.

а речь идет в контексте именно о постоении карты оптимизации,
но никак не о запросе, который будет это использовать

ВладимирМТогда бремя доказательства лежит на Вас.
Продемонстрируйте ускорение, когда записей, помеченных как удаленные нет вообще или их количество существенно меньше общего количества записей. Для индекса типа Binary, в большинстве случаев, HELP говорит о пороге в 3%


кажется разговор был о замедлении при наличии такого индекса.

Dima TНа 1-2% дольше по времени с хитрым индексом получается.


жесть

я даже готов согласиться в том, что тесты корректны и
что при наличии индекса теряем .002 секунды.

0.002 секунды - это тормоз?

Вам не кажется, что проще все-же иметь такой индекс, который все-же не замедляет выборки?

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

поэтому наличие такого индекса - необходимо.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37137005
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоВладимирМТогда бремя доказательства лежит на Вас.
Продемонстрируйте ускорение, когда записей, помеченных как удаленные нет вообще или их количество существенно меньше общего количества записей. Для индекса типа Binary, в большинстве случаев, HELP говорит о пороге в 3%


кажется разговор был о замедлении при наличии такого индекса.


А разве я сказал не то же самое? Ну, хорошо, тогда "по буквам"

1. Индекс по Deleted() ускорит выполнение выборки, если общее количество записей, помеченных как удаленные, в среднем, более 3%.
2. Однако, индекс по Deleted() замедлит выполнение выборки, если общее количество записей, помеченных как удаленные, в среднем, менее 3% или вообще отсутствуют.

Это то, что утверждает HELP и с чем я согласен. Насколько я понимаю, Вы утверждаете, что факт наличия индекса ускорит выполнение выборки всегда и при любых условиях. Вот и докажите это свое утверждение. Т.е докажите, что второе положение - не верно.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37137335
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошелмимоя даже готов согласиться в том, что тесты корректны и
что при наличии индекса теряем .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)
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37137418
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()

В итоге все равно никакой пользы от хитрого индекса , хотя она должна бы быть судя по хэлпам.
Потери времени небольшие, но все-таки потери.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37137441
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попроверял на других значениях nTovarId, получил на одном из значений результат с индексом быстрее на 0.002 сек.
Хотя если сделать PACK, то без индекса быстрее на 0.012 сек.

Вобщем мои выводы не в пользу индекса, согласен, он не мешает, но и не помогает.
...
Рейтинг: 0 / 0
Выделить удаленные записи в Grid
    #37137510
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай уточню. Перед выполнением запросов FoxPro перзагружался?

Это я к тому, что Fox кеширует индексы. Как правило, первый раз после загрузки FoxPro запрос выполняется относительно медленно, зато потом "летает" именно в силу того, что индекс уже лежит в кеше и его не надо дополнительно скачивать.

Т.е. сравнивать скорости надо либо каждый раз перед выполнением запроса перезагружая FoxPro, либо запускать каждый запрос два раза подряд и сравнивать время выполнения второго раза.
...
Рейтинг: 0 / 0
25 сообщений из 179, страница 2 из 8
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Выделить удаленные записи в Grid
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]