|
|
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Удаляя запись из таблицы, с помощью команды DELETE, запись фактически не удаляется, а становится помеченой на удаление, это всем известно. С помощью команды SET DELETE ON помеченные записи игнорируются. Но кода я хочу посчитать количество строк командой RECCOUNT(), то в результате получаю все записи, включая помеченный на удаление. Какое тут правило? Может есть список команд, которые не игнорируют помеченные записи? Нужно ли делать PACK или можно гарантировать корректную работу не PACK-ая таблиц? Большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:06 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. Код: plaintext 1. 2. Кроме RECCOUNT() с SET DELETE ON никаких проблем нет ни у каких команд, а PACK требует монопольного открытия, что создаст уйму проблем, когда ты решишь сделать прогу сетевой, поэтому настоятельно не рекомендую делать PACK после каждого удаления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:53 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
reccount() подсчитывает ВСЕ записи.... а, например, count for !deleted() to myvar подсчитывает только не помеченные на удаление записи... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 16:54 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Нет. ________ Не дадим распространиться заразе политкорректности! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 21:50 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Reccount() вообще ничего не подсчитывает. В заголовке файла DBF хранится число, содержащее общее количество записей. Вне зависимости от того, помечена данная запись на удаление или нет. Вот Reccount() и возвращает это значение. При настройке SET DELETED ON, любая функция или команда, которая действительно считает записи будет подсчитывать только и исключительно записи не помеченные как удаленные. Никаких специальных действий для игнорирования таких записей предпринимать уже не надо. Сразу после DELETE давать команду PACK не надо. Эта операция выносится в отдельный блок процедур администратора по обслуживанию базы данных и запускается периодически раз в неделю, месяц, год. В зависимости от интенсивности удаления записей в базе данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 23:12 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Лучще команду PACK вообще никогда не выполнять, а использовать помеченные на удаление записи повторно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 11:43 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
MVIЛучще команду PACK вообще никогда не выполнять, а использовать помеченные на удаление записи повторно. Нет. Не лучше. Повторное использование записей, ранее помеченных как удаленные, очень сильно напоминает "закат солнца вручную". Это связано с очень большим количеством программирования по замене стандартного функционала FoxPro. Поищите по форуму. Неоднократно обсуждалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 12:32 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Повторное использование записей, ранее помеченных как удаленные, очень сильно напоминает "закат солнца вручную". К сожалению на FoxPro есть задачи 24/7/365 - получить доступ в монопольном режиме очень сложно. Упаковка открытых таблиц другими пользователями это точно "закат солнца вручную"... Так что для таких задач это единственный выход... В принципе - это как правило не более 30 строк кода (для INSERT) + новый бинарный индекс в VFP 9.0 был специально создан в том числе, чтобы облегчить работу по управлению удаленными записей... Хотя я согласен - упаковывать таблицы нужно как можно чаще в FoxPro по причине проблем с ростом индексов и многопользовательским доступом, особенно в ранних версиях FoxPro... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 13:43 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Sergey Ch ВладимирМ Повторное использование записей, ранее помеченных как удаленные, очень сильно напоминает "закат солнца вручную". К сожалению на FoxPro есть задачи 24/7/365 - получить доступ в монопольном режиме очень сложно. Даже в такой постановке возникает много вопросов. Т.е. "в принципе" такое возможно, но "на практике" очень быстро пользователи откажутся от использования в качестве хранилища данных именно файлы DBF. При таком режиме работы возникает очень много сопутствующих проблем, среди которых упаковка - далеко не самая главная. И остановка на час...другой с некоторой периодичностью все-равно будет неизбежна. Какие бы системы хранения не использовались. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 14:12 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
При запуске программы берем в локальный курсор Select ... Where ! Deleted() и не видим удаленных. Ну, а если есть возможность открыть монопольно, то Pack. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 15:00 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
FfffffffПри запуске программы берем в локальный курсор Select ... Where ! Deleted() и не видим удаленных. Вы сами-то пробовали то, что советуете? Такое будет работать только в том случае, если источником данных запроса будет только одна таблица. Если таблиц-источников больше, то результат запроса становится не предсказуемым. Единственным гарантированным способом отсечения записей помеченных как удаленные является настройка SET DELETED ON и никак иначе. Все остальное работает при определенных условиях для решения частных задач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 23:00 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
ну допустим и не единственный нормально работает и индекс с условием нот делейтед, в 9-ке оптимизирован ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 09:37 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
alex11100ну допустим и не единственный нормально работает и индекс с условием нот делейтед, в 9-ке оптимизирован Эх... Опять Вы читаете отдельные слова, а не все предложение... Повторю то, что Вы не дочитали ВладимирМВсе остальное работает при определенных условиях для решения частных задач. -) Внутри команды Select-SQL индекс с FOR-условием не используется. -) При программной обработке данных, как правило, главный индекс вообще отключается. Т.е. индекс с FOR-условием - это частное решение частной задачи. В общем случае - не годится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 10:16 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Вы сами-то пробовали то, что советуете? Владимир. Ну это частный случай, что вы сказали. Не передергивайте. Ничто не мешает делать выборку из одной таблицы без связей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 10:23 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Смотрика, действительно в 9-ке изменилось поведение. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 10:43 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 11:15 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
ВладимирМНу, да. Но здесь опять же есть ограничения. Э-э-э, кроме "большого" индекса других ограничений не увидел - это во первых, во-вторых в моём примере используется обьединение (inner join), а про это в хелпе ни слова, ведь раньше как раз с этим были проблемы, а where not deleted() для одной таблицы можно было использовать ещё в 5-ке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 12:01 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Да, видимо подправили оптимизацию. Хотя, по-моему, для целей FULL-оптимизации, логичнее делать отдельный индекс типа Binary по выражению Deleted(). Ведь все-равно это работает только для настройки SET DELETE ON. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 16:46 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
слав, те ... дошло через год .... но все-равно сет будем дергать - такая у нас религия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 17:03 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
alex11100слав, те ... дошло через год .... но все-равно сет будем дергать - такая у нас религия Это Вы для кому отвечали? Если мне, то Вам следует ВНИМАТЕЛЬНО ознакомиться со статьей HELP по ссылке. Приведу выдержку из этой статьи: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Т.е. при настройке SET DELETED OFF, при определенных условиях, FOR DELETED() по прежнему НЕ ИСПОЛЬЗУЕТСЯ. Не сам индекс, а его FOR-условие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2007, 18:27 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
ошибся, значит не дошло .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 07:31 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
Мысли в слух. Вообще-то, хорошо, что появилась оптимизация на фильтрованный индекс по deleted (не сам индекс по deleted, а именно фильтрованный индекс) - это избавляет от построения дополнительного индекса для rushmore. Остается только проверить стабильность работы такого фильтрованного индекса, в ранних версиях были проблемы с транзакциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 09:38 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
2 PaulWist невозможно не двигаться вперед per aspera ad astra ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2007, 10:09 |
|
||
|
Нужно ли после DELETE делать PACK?
|
|||
|---|---|---|---|
|
#18+
alex11100ошибся, значит не дошло .... Если бы Вы научились ВНЯТНО излагать свои мысли, то, я бы понял что именно Вы имеете в виду. В данном случае я понял так: ВЫ САМИ ошиблись и не поняли о чем речь. Это своего рода ВАШЕ извинение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2007, 11:21 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=198&tid=1589311]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 191ms |
| total: | 323ms |

| 0 / 0 |
