|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Помогите Выделить удаленные записи в Grid Хочу в Grid добавить поле, которое бы показывало: удалена запись или нет. Подскажите, как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 11:18 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
пример ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 11:23 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29Хочу в Grid добавить поле, которое бы показывало: удалена запись или нет. Подскажите, как это можно сделать?а что, поле deletemark уже отменили? Или расцветку по deleted() ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 11:48 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
igorbikа что, поле deletemark уже отменили? Или расцветку по deleted() ? поле deletemark- это поле которое мы видим слева, посте команды BROWSE? Если да то как добавить его в Grid? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 12:03 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
прошелмимо, Понял, а нельзя ли в Grid не в таблицу добавить столбец, который при помощи какой-нибудь функции определял, удалена запись или нет и соответственно, выдавал значение? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 12:15 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29прошелмимо, Понял, а нельзя ли в Grid не в таблицу добавить столбец, который при помощи какой-нибудь функции определял, удалена запись или нет и соответственно, выдавал значение? вначале ответьте на вопрос: зачем пользователю видеть удаленные записи? так замеждупрочим: пользователь, что такое "запись" "таблица" и т.д. ... в понимании разработчика никогда вообще не знает и не понимает и не должен. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 12:19 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29igorbikа что, поле deletemark уже отменили? Или расцветку по deleted() ? поле deletemark- это поле которое мы видим слева, посте команды BROWSE? Если да то как добавить его в Grid?Вы нашли какие-то отличия грида от того, что показывается в окне Browse? Зачем куда-то что-то добавлять, если это уже там есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 12:30 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Sergey SizovВы нашли какие-то отличия грида от того, что показывается в окне Browse? Зачем куда-то что-то добавлять, если это уже там есть? Извиняюсь, у менья в грид данные попадают посредством SQL-запроса к таблице и поэтому помеченные на удаление записи не видно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 12:39 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29Извиняюсь, у менья в грид данные попадают посредством SQL-запроса к таблице и поэтому помеченные на удаление записи не видно.А теперь поясните этот набор слов. Ибо: 1. Получение данных с сервера никоим образом не влияет на возможности грида. 2. Полученные с сервера данные не содержат помеченных на удаление записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 12:45 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29Sergey SizovВы нашли какие-то отличия грида от того, что показывается в окне Browse? Зачем куда-то что-то добавлять, если это уже там есть? Извиняюсь, у менья в грид данные попадают посредством SQL-запроса к таблице и поэтому помеченные на удаление записи не видно. я просил ответить на вопрос (от этого зависит то, как Вам отвечать) вначале ответьте на вопрос: зачем пользователю видеть удаленные записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2011, 14:05 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
прошелмимовначале ответьте на вопрос: зачем пользователю видеть удаленные записи? 1. Что бы пользователь видел необходимость запускать "монопольного удаления записей", и если вдруг передумал мог их востановить. 2. Я сам пришел из 1С и поэтому тащу за собой их идеологию или методы работы с данными. p.s. извиняюсь за долгий ответ,Работа. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 08:50 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29прошелмимовначале ответьте на вопрос: зачем пользователю видеть удаленные записи? 1. Что бы пользователь видел необходимость запускать "монопольного удаления записей", и если вдруг передумал мог их востановить. 2. Я сам пришел из 1С и поэтому тащу за собой их идеологию или методы работы с данными. p.s. извиняюсь за долгий ответ,Работа. Помеченные на удаление записи в 1С и в фоксе это разные вещи. В 1С в каждой таблице есть отдельное поле "ПомеченНаУдаление" (или типа того), на основании которого показывается что запись помечена на удаление. При этом реального удаления (даже пометки на удаление не происходит) - просто выставляется флаг, на основании которого потом запись будет удалена. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 09:05 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29"монопольного удаления записей" пользователю не нужно "создавать" режим "монопольного удаления" - будут "проблемы" при многоп-м режиме. как добавить поле - признак удаления - показано в примере - также поступают и в 1С. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 09:10 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускник, Спасобо, я все понял(нечево извращаться и изобретать велосипед). Если удалил, то навсегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 09:45 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29 Если удалил, то навсегда. почему это? 1. если удалил, то в дбф-файлике такая запись в начальном байтике помеч-ся звездочкой и остается храниться до тех пор пока не упакуете табличку. 2. паковать в многоп.режиме - зло. 3. "метка на удаление" в дбф и признак "удален" в интерфейсе - это есть разные вещи. пользователь не знает и не должен, что есть какие-то дбф и какие-то служ.метки в нем. для пользователя рисуют интерфейс и если необходимо уд-е и восст-е док-в, то и придумывают каой-то признак, который никоем не зависит от служ.метки в дбф. 4. как сделать признак "удален" и как его исп-ть Вы можете подглядеть в примере и в 1С. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 09:50 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Sergey SizovAlexandr29Извиняюсь, у менья в грид данные попадают посредством SQL-запроса к таблице и поэтому помеченные на удаление записи не видно.А теперь поясните этот набор слов. Ибо: 1. Получение данных с сервера никоим образом не влияет на возможности грида. 2. Полученные с сервера данные не содержат помеченных на удаление записей. У меня не используется сервер. Для доступа к данным применяется Cursoradapter, где в реквизите SelectCmd - SQL-запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 09:54 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускник, У меня 2 варианта решения.: 1. Либо доработать таблицы. 2. Либо самому переодически в монопольном режиме паковать таблицы. Второй вариант предпочтительней. Главное самому об этом не забывать. Вот если бы где нибудь выводить количество помеченных на удаление, тогда бы пользователи сами напоминали бы. Такое возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:07 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr29Вот если бы где нибудь выводить количество помеченных на удаление, тогда бы пользователи сами напоминали бы. Такое возможно? зачем? пользователи зачем должны знать о кол-ве записей в дбф отмеченных особым служебным символом? зачем паковать таблицы? что Вы от этого ожидаете? зразу намек: про бинарные индексы читайте вначале и для чего они. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:12 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Alexandr292. Либо самому переодически в монопольном режиме паковать таблицы. Второй вариант предпочтительней. Главное самому об этом не забывать. Вот если бы где нибудь выводить количество помеченных на удаление, тогда бы пользователи сами напоминали бы. Такое возможно? Посчитать помеченных на удаление можно: Код: plaintext 1. 2. 3. 4. 5.
Обычно команду PACK совмещают с индексированием. И то и другое требует монопольного доступа. А индексирование надо периодически делать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:14 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TА индексирование надо периодически делать. т.е. эксплуатируется ПО, все работает правильно, но все одно "периодически надо индексировать", а затем и "паковать"? чтобы не "заболело" чего? кстате посчиать селектом одним можно, тока занафега? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:23 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникт.е. эксплуатируется ПО, все работает правильно, но все одно "периодически надо индексировать", надо, раз гарантированно проверить целостность индексов невозможно. Юристишко-выпускника затем и "паковать"? я обычно так делаю: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:30 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЮристишко-выпускникт.е. эксплуатируется ПО, все работает правильно, но все одно "периодически надо индексировать", надо, раз гарантированно проверить целостность индексов невозможно. Юристишко-выпускника затем и "паковать"? я обычно так делаю: Код: plaintext 1. 2. 3.
зачем? если "правильная" структура и все работает? параноийа? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:36 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускник, Хотя бы для ускорения работы. Узбавиться от лишних уже не использумых данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:44 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникзачем? Что "зачем?" паковать? если помеченных на удаление нет, то оно быстро отрабатывает. При "правильной" структуре помеченных обычно нет. Принудительное индексирование обычно раз в сутки делаю, плюс контроль вылетов проги. Может и паранойя, только мистики из-за битых индексов я много видел, ладно если выборка для отчета кривая получится, а если в базу чего криво запишется, то такое за пять минут не полечишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2011, 10:46 |
|
Выделить удаленные записи в 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 |
|
Выделить удаленные записи в 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 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
PaulWistВесь тред не читал, а что мешает использовать фильтрованный индекс,... подкидываю идею для исследования :) мешают теоретические труды ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:28 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМ.. Вероятно, он либо никогда не использовал индексы по Deleted(), либо не проводил тестирование его эффективности. одно слово: му**к. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:32 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМ, Хм. Давайте расскажу Вам кой о чем. Подготовка тестовой среды: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Тестирование. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Результат. Странно, но у меня селект в тестировании выполняется быстрее, если я в тестовой среде сделаю индекс: Код: plaintext
Что меня еще смущает. Вы действительно сравниваете время выборки с одной базы, скажем - 150 записей (до упаковки) - и время выборки из такой же базы, но содержащей в себе 100 записей (после упаковки) - и говорите, что во втором случае быстрее, а значит и индекс бесполезен? Я пытался подвести Вас к тому, что в своем примере уважаемый Dima T вообще не использует данный индекс! Хотя, я могу и ошибаться в своих выводах. ЗЫ. Имхо, Вас всех ввел в заблуждение тот факт, что в Фокспро в хелпе бинарный индекс приведен в примере с удаленными файлами... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:33 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
К тому же мне кажется, что варианты DELETED() и PACK - это два совершенно разных варианта развития ситуации. Как их можно сравнивать? Если в варианте с DELETED() - мы работаем с базой, в которой есть и реальные, и удаленные записи, при этом нам иногда нужно потрогать удаленные. Если в варианте с PACK - то мы работаем только с реальными записями. Почему Вы сравниваете два разных набора записей? ЗЫ. Отсылка к началу: я тоже против постоянной упаковки таблиц. Упаковка нужна для тестирования, для решения проблем. Но в промышленной эксплуатации - вероятно, допущена ошибка в проектировке... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:48 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosТестирование. Код: plaintext 1. 2.
Это чего? Цифры не привел, чего у тебя получилось по времени? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:50 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Ваш пример прямо противоположен тому, что происходит в реальных задачах. Вы ищите запись, помеченную как удаленная. А в реальных задачах стоит обратная проблема. Найти запись НЕ помеченную как удаленная. Кроме того, имейте в виду, что функцию Delete() в условии Where можно писать разве что для теста. Опять же, в реальных задачах фильтрация выполняется через SET DELETED ON. Впрочем, для теста это особой роли не играет Мне кажется, Вы не поняли, что именно сравнивали. Основная идея прошелмимо заключается в следующем Если использовать индекса по Deleted(), то он ускорит выполнение выборки настолько, насколько ускорится выполнение после команда PACK. Вот этот тезис и был опровергнут. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:53 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TBanditosТестирование. Код: plaintext 1. 2.
Это чего? Это включение в работу удаленных записей. Dima TЦифры не привел, чего у тебя получилось по времени? Разница стабильно в 0.006 секунды минимум. ЗЫ. Только без возмущений что типа мало. Примитивная база, примитивная выборка - результат соответствует. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:54 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosЗЫ. Отсылка к началу: я тоже против постоянной упаковки таблиц. Упаковка нужна для тестирования, для решения проблем. Но в промышленной эксплуатации - вероятно, допущена ошибка в проектировке... Упаковка происходит не "постоянно". Для этого создается специальный пункт меню или отдельная процедура. И какой-либо ответственный пользователь (если нет админа) периодически (раз в неделю, раз в месяц, раз в год) запускает эту процедуру Отстутсвие подобной процедуры в промышленной эксплуатации и выполнение команды PACK "вручную" - вот это-то и есть "ошибка проектирования" Совсем обойтись без команды PACK, если база данных основана на DBF-таблицах, в принципе, возможно. Но это не оправданно усложняет всю программу. В большинстве задач, все-таки, значительно проще периодически давать команду PACK, чем строить приложение без ее использования. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 17:57 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМ Если использовать индекса по Deleted(), то он ускорит выполнение выборки настолько, насколько ускорится выполнение после команда PACK. Владимир! Почему Вы упорно игнорируете мой вопрос о принципиально двух разных наборах записей - до упаковки и после??? Кстати, я полностью согласен с прошелмимо, что если использовать индекс DELETED(), то выборка ускорится ПО УДАЛЕННЫМ ЗАПИСЯМ!!!!!!!!!!!!!!!!!! И как это можно сравнивать с результатом после упаковки, если после упаковки данных записей в таблице нет?????? ЗЫ. Радует тот факт, что Вы не стали возражать про неиспользование индекса в экспериментах Dima T. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:00 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Banditos Еще раз возвращаемся с того, с чего начали У нас есть МНОГО записей помеченных как удаленные. Выборка тормозит. Необходимо ускорить выполнение выборки. Какие есть способы этого добиться? 1. Создать индекс по Deleted() 2. Выполнить команду PACK Какой вариант предпочесть? Вероятно, надо сделать некие тестовые замеры. Какие будут Ваши предложения по тестированию? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:04 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosКстати, я полностью согласен с прошелмимо, что если использовать индекс DELETED(), то выборка ускорится ПО УДАЛЕННЫМ ЗАПИСЯМ!!!!!!!!!!!!!!!!!! Однако именно прошелмимо настаивает на том, что эта информация НЕ НУЖНА! Приведите пример, когда Вам действительно необходимо отобрать записи, помеченные, как удаленные. Не сомневаюсь, что прошелмимо будет первый, кто скажет, что это не правильно. Как минимум, не правильная организация приложения, если Вам понадобилась именно ТАКАЯ информация. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:08 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМОднако именно прошелмимо настаивает на том, что эта информация НЕ НУЖНА! Теретик, Вам не кажется, что Вы за меня многое домысливаете? и ведете разговор в нужном Вам русле. Вы ведь занимаетесь только теорией, и к реальной разработке не имеете никакого отношения. не так-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:11 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМBanditosКстати, я полностью согласен с прошелмимо, что если использовать индекс DELETED(), то выборка ускорится ПО УДАЛЕННЫМ ЗАПИСЯМ!!!!!!!!!!!!!!!!!! Однако именно прошелмимо настаивает на том, что эта информация НЕ НУЖНА! Вы, сударь - наглый лжец. Вы считаете себя настолько компетентным, чтобы писать за аппонента любые суждения, которые Вы считаете нужным? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:22 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникВладимирМОднако именно прошелмимо настаивает на том, что эта информация НЕ НУЖНА! Теретик, Вам не кажется, что Вы за меня многое домысливаете? Во-первых, я могу и процитировать Юристишко-выпускник3. "метка на удаление" в дбф и признак "удален" в интерфейсе - это есть разные вещи. пользователь не знает и не должен, что есть какие-то дбф и какие-то служ.метки в нем. для пользователя рисуют интерфейс и если необходимо уд-е и восст-е док-в, то и придумывают каой-то признак, который никоем не зависит от служ.метки в дбф. Во-вторых, я ведь с этим высказыванием и не спорю. Я с ним полностью согласен. Необходимость поиска именно записей помеченных как удаленные - довольно редкое явление. Юристишко-выпускники ведете разговор в нужном Вам русле. Разумеется. Я стараюсь, чтобы меня поняли. Поняли что именно я хочу сказать. Какую мысль донести. Поэтому так многословен и стараюсь не изъясняться "словесной жвачкой". Если я в чем-то ошибаюсь, сразу становится видно в чем. Не надо "домысливать" Юристишко-выпускникВы ведь занимаетесь только теорией, и к реальной разработке не имеете никакого отношения. не так-ли? Почему это? Именно что реальной разработкой и занимаюсь. Точнее, сопровождением и "допиливанием" под "хотелки" пользователя существующего приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:23 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМ Banditos Еще раз возвращаемся с того, с чего начали У нас есть МНОГО записей помеченных как удаленные. Выборка тормозит. Необходимо ускорить выполнение выборки. Какие есть способы этого добиться? 1. Создать индекс по Deleted() 2. Выполнить команду PACK Какой вариант предпочесть? Вероятно, надо сделать некие тестовые замеры. Какие будут Ваши предложения по тестированию? В очередной раз говорю, что это две принципиально разные ситуации. В Вашем случае: 1. Если удаленные записи дальше нужны. 2. Удаленные записи больше никогда не нужны. Чего здесь еще спорить? Зачем мешать понятия "красное" и "горячее"? Если записи дальше не нужны - тогда ОДНОЗНАЧНО вариант 2 - выполнить команду PACK. Но вот если у Вас каждый день набегает существенный объем таких записей, что у Вас начинает тормозить система из-за этого, и Вы просто вынуждены паковать таблицы - однозначно проблема в проектировке. А если речь идет о профилактике, то раз в год нет проблем - можно и упаковать, и с архивировать. И упорядочить. И еще много чего. Кстати, в моих проектах юзвери не могут удалить записи. Никогда и никак. У меня все эти записи просто переходят в другой статус. И когда база вырастает до неприемлемых размеров - я и архивирую, и пакую, и еще много чего. Но случается это весьма редко. А делать сие даже раз в неделю - тьфу-тьфу... Мне просто очень жалко личного времени, чтобы делать сие даже раз в месяц.... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:23 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМПочему это? Именно что реальной разработкой и занимаюсь. Точнее, сопровождением и "допиливанием" под "хотелки" пользователя существующего приложения. я б Вам руки отбил. не пишите за меня то, что Вы лично домыслили, и что я не писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:26 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникВладимирМпропущено... Однако именно прошелмимо настаивает на том, что эта информация НЕ НУЖНА! Вы, сударь - наглый лжец. Вы считаете себя настолько компетентным, чтобы писать за аппонента любые суждения, которые Вы считаете нужным? Да. Считаю. Поскольку Вы не даете себе труд внятно объяснить свою позицию. Именно что приходится "додумывать" и "домысливать". Впрочем, как мне кажется, я не сильно ошибаюсь в интерпретации Вашей позиции. Если Вы считаете, что за Вас "домысливают" и "додумывают" не правильлно, то извольте изъясняться так, чтобы Вас понимали. А не при помощи той словесной жвачки и хамства, как Вы обычно это делаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:27 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМЮристишко-выпускникпропущено... Вы, сударь - наглый лжец. Вы считаете себя настолько компетентным, чтобы писать за аппонента любые суждения, которые Вы считаете нужным? Да. Считаю. Поскольку Вы не даете себе труд внятно объяснить свою позицию. Именно что приходится "додумывать" и "домысливать". Впрочем, как мне кажется, я не сильно ошибаюсь в интерпретации Вашей позиции. Если Вы считаете, что за Вас "домысливают" и "додумывают" не правильлно, то извольте изъясняться так, чтобы Вас понимали. А не при помощи той словесной жвачки и хамства, как Вы обычно это делаете. иди на фоксклаб. я изъяснялся так, как считаю нужным. еще раз: 1. упаковка бывает неприменима по ряду причин. 2. есть способ создания бинарного индекса, который позволяет оптимально работать с таблицами с удаленными записями. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:30 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosЕсли записи дальше не нужны - тогда ОДНОЗНАЧНО вариант 2 - выполнить команду PACK. Но вот если у Вас каждый день набегает существенный объем таких записей, что у Вас начинает тормозить система из-за этого, и Вы просто вынуждены паковать таблицы - однозначно проблема в проектировке. А если речь идет о профилактике, то раз в год нет проблем - можно и упаковать, и с архивировать. И упорядочить. И еще много чего. Я не понял, а о чем тогда Вы спорите? Именно ЭТО мы с Dima T и объясняли с самого начала. Не вижу никаких противоречий с нашей позицией. BanditosКстати, в моих проектах юзвери не могут удалить записи. Никогда и никак. У меня все эти записи просто переходят в другой статус. И когда база вырастает до неприемлемых размеров - я и архивирую, и пакую, и еще много чего. Но случается это весьма редко. А делать сие даже раз в неделю - тьфу-тьфу... Мне просто очень жалко личного времени, чтобы делать сие даже раз в месяц.... Тоже согласен. Вполне здравый подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:32 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускник1. упаковка бывает неприменима по ряду причин. Бывает. Я же не спорю. Но это, скорее, исключение, чем правило Юристишко-выпускник2. есть способ создания бинарного индекса, который позволяет оптимально работать с таблицами с удаленными записями. Так что же Вы столько молчали! Давно бы привели пример и спор на этом завершился бы! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:34 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМЮристишко-выпускник1. упаковка бывает неприменима по ряду причин. Бывает. Я же не спорю. Но это, скорее, исключение, чем правило Юристишко-выпускник2. есть способ создания бинарного индекса, который позволяет оптимально работать с таблицами с удаленными записями. Так что же Вы столько молчали! Давно бы привели пример и спор на этом завершился бы! ВладимирМ, Вы баран? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:36 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМBanditosЕсли записи дальше не нужны - тогда ОДНОЗНАЧНО вариант 2 - выполнить команду PACK. Но вот если у Вас каждый день набегает существенный объем таких записей, что у Вас начинает тормозить система из-за этого, и Вы просто вынуждены паковать таблицы - однозначно проблема в проектировке. А если речь идет о профилактике, то раз в год нет проблем - можно и упаковать, и с архивировать. И упорядочить. И еще много чего. Я не понял, а о чем тогда Вы спорите? Именно ЭТО мы с Dima T и объясняли с самого начала. Не вижу никаких противоречий с нашей позицией. Хм, нет. Немного истории... Раз: Выделить удаленные записи в Grid Два: Выделить удаленные записи в Grid Из этих двух постов ясно, что индексирование и упаковку нужно делать практически ежедневно. Собственно, если вы обратите внимание, именно с этих постов и разгорелся спор. И именно против такого подхода против и прошелмимо, и я. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 18:43 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosВладимирМпропущено... Я не понял, а о чем тогда Вы спорите? Именно ЭТО мы с Dima T и объясняли с самого начала. Не вижу никаких противоречий с нашей позицией. Хм, нет. Немного истории... Раз: Выделить удаленные записи в Grid Два: Выделить удаленные записи в Grid Из этих двух постов ясно, что индексирование и упаковку нужно делать практически ежедневно. Собственно, если вы обратите внимание, именно с этих постов и разгорелся спор. И именно против такого подхода против и прошелмимо, и я. Периодичность выполнение упаковки и переиндексации определяется конкретной задачей и личными предпочтениями программиста. Вполне возможно, что для Dima T такая периодичность вполне оправдана. Однако соблюдены все условия "правильной" работы 1. Пользователь сам ничего физически не удаляет 2. Есть некая процедура, которая автоматически, с некоторой периодичностью, выполняет команду PACK Честно говоря, не вижу никакого "криминала" делать упаковку каждый день. Если условия позволяют, то почему бы и нет? Он ведь далее написал что и бекап делает. Т.е. имеет такие же ежедневные копии базы. При этом нигде, никоим образом, прошелмимо даже не упоминал о периодичности команды PACK. Он возражал именно против нее как таковой. Аппелируя к тому, что индекс по Deleted() ее должен заменить http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=830283&msg=10283715 прошелмимо2. для того, чтобы быстродействие не страдало от кол-ва уд-х записей в табличке нужно создать доп.индексы (...) паковать Вы сможете, если уж приспичит, руками из среды, тогда, когда с приложением никто работать не будет, Как видите, ничего не "додумываю". Это его позиция. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 19:10 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosРазница стабильно в 0.006 секунды минимум. ЗЫ. Только без возмущений что типа мало. Примитивная база, примитивная выборка - результат соответствует. Ты уж извини, но я все-таки повозмущаюсь: 1. В конце селекта надо добавить NOFILTER иначе выборки не происходит 2. Выборку надо делать не из курсора, а из таблицы, и расшаренной. Обычно так открыты в рабочем софте. 3. SET DELETED ON (а не OFF, т.к. обычно у всех стоит ON) хотя на результат у меня это не повлияло. 4. Не вижу смысла дописывать в запросе AND DELETED() (тебе надо было т.к. у тебя SET DELETED OFF) 5. Одного раза мало, сделал запрос в цикле и WHERE ID=i для разнообразия. Вобщем я его немного приблизил к реальности. И записей добавил, а то уж больно время маленькое получалось. Вот твой тест с учетом вышеизложенного: Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
А вот результат теста на моем компе: Создали индекс MainID Тэгов: 1 Время: 19148 Время: 1532,0 Время: 8285,0 Время: 343,0 Время: 2951,0 Время: 66,0 Время: 69,0 Время: 70,0 Время: 65,0 Время: 65,0 Время: 67,0 Время: 66,0 Время: 70,0 Время: 65,0 Время: 65,0 Время: 66,0 Время: 69,0 Время: 64,0 Время: 67,0 Время: 66,0 Создали индекс Del Тэгов: 2 Время: 10911 Время: 8139,0 Время: 977,0 Время: 2618,0 Время: 4570,0 Время: 323,0 Время: 1775,0 Время: 1891,0 Время: 81,0 Время: 69,0 Время: 69,0 Время: 91,0 Время: 68,0 Время: 69,0 Время: 74,0 Время: 69,0 Время: 70,0 Время: 71,0 Время: 73,0 Время: 69,0 Ну не вижу я разницы и все тут. Первые запросы немного отличаются, но и то в разные стороны. После я сделал PACK MyTable и результат стал такой: Создали индекс MainID Тэгов: 1 Время: 233,0 Время: 643,0 Время: 980,0 Время: 50,0 Время: 48,0 Время: 48,0 Время: 49,0 Время: 49,0 Время: 52,0 Время: 49,0 Время: 54,0 Время: 50,0 Время: 48,0 Время: 50,0 Время: 52,0 Время: 49,0 Время: 48,0 Время: 49,0 Время: 49,0 Время: 49,0 Создали индекс Del Тэгов: 2 Время: 265,0 Время: 623,0 Время: 987,0 Время: 56,0 Время: 57,0 Время: 56,0 Время: 57,0 Время: 59,0 Время: 56,0 Время: 57,0 Время: 61,0 Время: 58,0 Время: 60,0 Время: 57,0 Время: 58,0 Время: 57,0 Время: 58,0 Время: 60,0 Время: 57,0 Время: 58,0 И получил то, о чем я выше писал: PACK лучше ускоряет чем индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 19:33 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosИз этих двух постов ясно, что индексирование и упаковку нужно делать практически ежедневно. Собственно, если вы обратите внимание, именно с этих постов и разгорелся спор. И именно против такого подхода против и прошелмимо, и я. Вообще-то в этих постах я по-другому выразился. Началось все с того что прошелмимо сильно расстроился что его индекс назвали тормозом . Тесты показали что это не так. Замедление на миллисекунды сложно назвать тормозом. Но и ускорения от него никакого. Я не агитирую за ежедневное индексирование, я делюсь собственным опытом. У меня никогда не было проблем из-за этого. Все работает стабильно и без всякого сопровождения. Зато были мистические глюки из-за битых индексов. Повторю еще раз - дадите гарантированный способ проверить что индекс не битый - пересмотрю свое отношение к этому вопросу. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2011, 19:58 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T2. Выборку надо делать не из курсора, а из таблицы, и расшаренной. Обычно так открыты в рабочем софте. Вобщем я его немного приблизил к реальности. итак, первая часть марлезонского балета: соглашение о том, что наличие бинарного идекса не вносит тормоз - достигли (мнение кулинара-теоретика, который не имеет отношения к разработке, а болтается по форумам и учит и детей и практиков - не учитываем). вторая часть марлезонского балета: выяснить, возможно ли созданием бинарного индекса какой-то период пернебречь упаковкой. т.е. работать с таблицей в которой имеются уд-е записи и не паковать ее до опред.момента. начинаем смотреть тесты. мы четко себе представляем, что запросы у нас только по ид записи и других видов запросов быть не может. замечу, очень странный идентификатор - теряюсь как мы будем искать записи в таблице в которой по несколько штук повторяющихся айди. это не ошибка? так нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 09:58 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TТы уж извини, но я все-таки повозмущаюсь: 1. В конце селекта надо добавить NOFILTER иначе выборки не происходит 2. Выборку надо делать не из курсора, а из таблицы, и расшаренной. Обычно так открыты в рабочем софте. 3. SET DELETED ON (а не OFF, т.к. обычно у всех стоит ON) хотя на результат у меня это не повлияло. 4. Не вижу смысла дописывать в запросе AND DELETED() (тебе надо было т.к. у тебя SET DELETED OFF) 5. Одного раза мало, сделал запрос в цикле и WHERE ID=i для разнообразия. Вобщем я его немного приблизил к реальности. И записей добавил, а то уж больно время маленькое получалось. 1. Вообще не понял. У меня работает во всех случаях. Вероятно, что-то я не знаю. 2. Хм. В ходе эксперимента специально был взят курсор, чтобы не было погрешностей работы с дисками. Потому что я физически не могу проконтролировать все процессы винды, которые будут писатть/читать на диск. А в работе с памятью это менее существенно. 3. А вот это бред. Смысл тогда делать индекс по DELETED, чтобы потом его не использовать? Кстати, именно это показывает условие Код: plaintext
Вероятно, потому, что именно это условие и показывало Вам, что Вы - не используете данный индекс. Вот Вы и выбросили его, негодного... И заблуждение про то, что типа Код: plaintext
автоматически ВКЛЮЧАЕТ индекс DELETED - оставьте другим... Ибо это уже не смешно. Кстати, вы еще с десяток индексов сделайте по другим полям, а потом выбирайте по ID - и снова удивляйтесь, как это индексы по другим полям Вам не помогают, а даже мешают! (не удержался, простите...) 4. Бред. Пункт 3. 5. Да и я делал это чуть менее 9000 раз... Dima TВообще-то в этих постах я по-другому выразился. Началось все с того что прошелмимо сильно расстроился что его индекс назвали тормозом. Тесты показали что это не так. Замедление на миллисекунды сложно назвать тормозом. Но и ускорения от него никакого. Что значит - по-другому? Это как понимать? То есть, то, что Вы пишете, на самом деле значит совсем другое? У Вас же два поста практически подряд, явно говорят - надо каждый день все прогонять. Чего сейчас отпираться то? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 10:51 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМПериодичность выполнение упаковки и переиндексации определяется конкретной задачей и личными предпочтениями программиста. Вполне возможно, что для [b]Dima T такая периодичность вполне оправдана.[/b] Однако соблюдены все условия "правильной" работы Владимир, выделенной фразой я засчитываю вам поражение. Ибо в нашем споре не было никаких условий про некую мифическую задачу Dima T . Кстати, даже он сам не говорил про некую свою задачу. Был разговор про ОБЩИЙ случай. Для всех. По теме топика. И в в ходе разговора никто не обязан предполагать или додумывать, что кто-то из оппонентов вдруг стал говорить не по теме разговора, а про свою, узко направленную, сугубо специфическую, неоднозначно определенную, никому не нужную "конкретную задачу". Потому что адекватные люди, если они хотят привести какой-нибудь специфический пример, они об этом говорят ДО ТОГО, как приводят пример. А не после, словами типа "так это же я типа пример, конкретный и специфический" - когда его в угол загнали в споре... А перебирать все случаи в жизни подробно - нам наших жизней не хватит. Глупое и бессмысленное занятие. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 11:03 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
мои суждения обращенные к Диме: итак моя задача сейчас поговорить с Вами на тему полезности индекса при наличии уд-х записей. т.е. сейчас мы не беседуем про: нужно паковать или нет (поговорим после). т.е. сейчас мы предполагаем, что есть неупак-я табличка и поймем, помогает ли наличие индекса в табличке с присутствующими уд.записями. т.е. мы попытаемся понять для чего разработчики "придумали это". итак в своем пример пожалуйста сделайте все-же автоинкр. идентификатор и затем с индексом и без выполните запрос SELECT Count(*) as cnt FROM mytable where id > 100 INTO CURSOR tmp nofilter результат доложите нам. т.е. я еще раз подвожу к мысли: можно ли тестировать "для чего придумали" только на каких-то простейших запросах? так-ли нужно не доверять оптимизатору, который нам сообщает, что для оптим-и он использует бинарный индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 11:42 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosВладимирМПериодичность выполнение упаковки и переиндексации определяется конкретной задачей и личными предпочтениями программиста. Вполне возможно, что для [b]Dima T такая периодичность вполне оправдана.[/b] Однако соблюдены все условия "правильной" работы Владимир, выделенной фразой я засчитываю вам поражение. Ибо в нашем споре не было никаких условий про некую мифическую задачу Dima T . Кстати, даже он сам не говорил про некую свою задачу. Сформулирую по другому Если одна, конкретная задача требует ежедневную упаковку, означает ли это, что, в общем случае , без "привязки" к "некой мифической задаче" периодическую упаковку базы данных не надо делать вообще? Чтобы опять не скатится к банальной перебранке объясню свою позицию. Я исхожу из того, что те люди с которыми я общаюсь - это люди "вменяемые" и грамотные. Раз они долгое время пишут и сопровождают работающие приложения, значит, имеют представление о том, что надо делать и чего не надо. Другое дело, что далеко не каждый может внятно объяснить свою позицию. Просто не умеет. Или же человек отвечает "по месту" на конкретный выпад со стороны оппонента. Поэтому, я пытаюсь понять некую "общую" позицию того, с кем я разговариваю. По возможности, не цепляясь к отдельным словам, если это не имеет принципиального значения. В данном случае, с моей точки зрения, позиции спорящих сторон выглядят следующим образом: Позиция 1 1. Если в качестве хранилища данных используются DBF-таблицы, то это хранилище требует периодической упаковки (PACK) и переиндексации. Вне зависимости от того, насколько правильно работает приложение 2. Индекс по deleted() не оказывает существенного влияния на производительность приложения, в силу относительно малого количества записей помеченных как удаленные Позиция 2 1. До тех пор, пока не возникнут явные ошибки приложения выполнять упаковку и переиндексацию нет необходимости. 2. В силу того, что записи, помеченные как удаленные, физически удаляются чрезвычайно редко и их относительно много необходим индекс по deleted() Так вот, я придерживаюсь первой позиции. Необходимо регулярное обслуживание базы данных. Как следствие, индекс по deleted() - не имеет смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 13:02 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМТак вот, я придерживаюсь первой позиции. Необходимо регулярное обслуживание базы данных. Как следствие, индекс по deleted() - не имеет смысла. Регулярное обслуживание и ежедневная упаковка с переиндексацией - ДВЕ РАЗНЫЕ ВЕЩИ!!! И не нужно одно выдавать за другое. За регулярное обслуживание - админу плюс, за ежедневную упаковку - найти виновных и расстрелять! Кстати, меня просто убивает тот факт, что Вы делаете индекс по DELETED, упорно его не используете, и утверждаете, что он - не имеет смысла. Владимир, говоря Вашими же словами, индекс по ID - тоже не имеет смысла. А что? Я тут делал выборку по полю NAME, так вот, наличие индекса по ID мне не только не помогало, но и мешало! Как следствие - индекс по ID не имеет смысла! ЗЫ. А про бинарные индексы прочитайте. Подумайте, что это такое. Про слово "логических", которое там упоминается. Бесплатный совет: про удаленные записи, которые там приведены КАК ПРИМЕР, не читайте. Представьте лучше таблицу, в которой есть ЛОГИЧЕСКОЕ поле "ПРИЗЫВНИК", в котором значения "True" - призывник, "FALSE" - не призывник... Создайте таблицу, протестируйте... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 13:19 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosDima TТы уж извини, но я все-таки повозмущаюсь: 1. В конце селекта надо добавить NOFILTER иначе выборки не происходит 2. Выборку надо делать не из курсора, а из таблицы, и расшаренной. Обычно так открыты в рабочем софте. 3. SET DELETED ON (а не OFF, т.к. обычно у всех стоит ON) хотя на результат у меня это не повлияло. 4. Не вижу смысла дописывать в запросе AND DELETED() (тебе надо было т.к. у тебя SET DELETED OFF) 5. Одного раза мало, сделал запрос в цикле и WHERE ID=i для разнообразия. Вобщем я его немного приблизил к реальности. И записей добавил, а то уж больно время маленькое получалось. 1. Вообще не понял. У меня работает во всех случаях. Вероятно, что-то я не знаю. Работает, но выборки не происходит :) В случае простых селектов фокс накладывает фильтр, примерно так: Код: plaintext 1. 2.
Для замеров это принципиально, т.к. выборки всех записей не происходит, соответственно и время выполнения другое. Banditos2. Хм. В ходе эксперимента специально был взят курсор, чтобы не было погрешностей работы с дисками. Потому что я физически не могу проконтролировать все процессы винды, которые будут писатть/читать на диск. А в работе с памятью это менее существенно. Ну померил ты скорость проца и памяти. И чего? главный тормоза сетка и винт, даже в твоем случае как только курсор в кэш фокса не влезет - начнется своп и время увеличится на порядки, а своп начнется тем раньше, чем объем больше. Banditos3. А вот это бред. Смысл тогда делать индекс по DELETED, чтобы потом его не использовать? Индекс должен задействоваться автоматически при его наличии, согласно хэлпу: HELPВместо этого, вы можете создать и использовать бинарный индекс, который оптимизирует бит, отвечающий за удаление записи, для увеличения производтельности, когда вы выдаете команду SET DELETED ON Как я понимаю SET DELETED ON это автоматическое добавление "and deleted()" во все условия. BanditosКстати, именно это показывает условие Код: plaintext
Вероятно, потому, что именно это условие и показывало Вам, что Вы - не используете данный индекс. Вот Вы и выбросили его, негодного... Я вообще никогда не смотрю чего SYS(3054) показывает, а выбросил чтобы он замеры не портил. Когда меня интересует производительность - я меряю время. Запускал пробовал оба варианта, с "and deleted()" немного медленнее . Код теста выше приведен, запусти так и так, выложи что получилось. BanditosИ заблуждение про то, что типа Код: plaintext
автоматически ВКЛЮЧАЕТ индекс DELETED - оставьте другим... Ибо это уже не смешно. Кстати, вы еще с десяток индексов сделайте по другим полям, а потом выбирайте по ID - и снова удивляйтесь, как это индексы по другим полям Вам не помогают, а даже мешают! (не удержался, простите...) ХЗ чего там тебе мешает, у меня так пишет: SYS(3054, 2)SELECT * FROM mytable WHERE ID=10 INTO CURSOR tmp nofilter Using index tag Mainid to rushmore optimize table mytable Using index tag Del to rushmore optimize table mytable Rushmore optimization level for table mytable: full ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 13:33 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TИндекс должен задействоваться автоматически при его наличии, согласно хэлпу: HELPВместо этого, вы можете создать и использовать бинарный индекс, который оптимизирует бит, отвечающий за удаление записи, для увеличения производтельности, когда вы выдаете команду SET DELETED ON Как я понимаю SET DELETED ON это автоматическое добавление "and deleted()" во все условия. Это кому индекс должен задействоваться? С чего бы? А тот факт, что оптимизатор его не использует, как бы Вам не намекает, что индекс НЕ ЗАДЕЙСТВОВАН? Кстати, а откуда хелпик? У меня в хелпе в комментарии к команде "SET DELETED" указано: HELPВыполняемые Запросы, использующие для тестирования статуса "удаления" записей функцию DELETED( ), могут быть оптимизированы по технологии Rushmore Query Optimization , для этого должен быть в наличии активный индекс по функции DELETED( ) исходной таблицы. И больше всего веселит Ваше "как я понимаю". Ну, если все дело только в Вашем понимании, тогда да, спор бессмыслен. Ибо Ваше понимание неправильное, и действительность совсем другая. Сказали бы сразу - "а я так понимаю это и это" - вопросов бы не было... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 13:48 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosРегулярное обслуживание и ежедневная упаковка с переиндексацией - ДВЕ РАЗНЫЕ ВЕЩИ!!! И не нужно одно выдавать за другое. И в чем же заключается это "Регулярное обслуживание" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 13:55 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TBanditosРегулярное обслуживание и ежедневная упаковка с переиндексацией - ДВЕ РАЗНЫЕ ВЕЩИ!!! И не нужно одно выдавать за другое. И в чем же заключается это "Регулярное обслуживание" ? Я Вас удивлю, но... (барабанная дробь) в упаковке и индексации!!! ЗЫ. Внимание: ищем разницу в "в упаковке и индексации" и в "ежедневной в упаковке и индексации". И думаем, думаем... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 13:59 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosЭто кому индекс должен задействоваться? С чего бы? А тот факт, что оптимизатор его не использует, как бы Вам не намекает, что индекс НЕ ЗАДЕЙСТВОВАН? Я твой любимый SYS(3054,2) уже процитировал, еще раз то что у меня он пишет: SYS(3054, 2)SELECT * FROM mytable WHERE ID=10 INTO CURSOR tmp nofilter Using index tag Mainid to rushmore optimize table mytable Using index tag Del to rushmore optimize table mytable Rushmore optimization level for table mytable: full Никаких "and deleted()" только SET DELETED ON BanditosКстати, а откуда хелпик? Тынц BanditosИ больше всего веселит Ваше "как я понимаю". Ну, если все дело только в Вашем понимании, тогда да, спор бессмыслен. Ибо Ваше понимание неправильное, и действительность совсем другая. Сказали бы сразу - "а я так понимаю это и это" - вопросов бы не было... Если б читал внимательно, не переспрашивал бы по два раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 14:02 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЯ твой любимый SYS(3054,2) уже процитировал, еще раз то что у меня он пишет: SYS(3054, 2)SELECT * FROM mytable WHERE ID=10 INTO CURSOR tmp nofilter Using index tag Mainid to rushmore optimize table mytable Using index tag Del to rushmore optimize table mytable Rushmore optimization level for table mytable: full Никаких "and deleted()" только SET DELETED ON прекрасно, то что оптимизатор по-любому использует бинарный индекс независимо от того есть ли в таб-ке уд-е записи или их нет это пугает? я Вас просил остановиться только на таблицах с наличием уд-х записей и проверить запрос: SELECT Count(*) as cnt FROM mytable where id > 100 INTO CURSOR tmp nofilter намекая на то, что только тестом с придуманным Вами запросом невозможно понять для чего нужен этот индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 14:22 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
[quot Dima T Тынц [/quot] Т.е. не смотря на этот превосходный хелп с примерами, в котором четко написано, когда достигается и когда не достигается оптимизация, Вы все равно продолжаете утверждать, что Ваше тестирование показательно и индекс по DELETED не нужен? Т.е. все, что написано в этом хелпе - бред? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 14:25 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosЗЫ. Внимание: ищем разницу в "в упаковке и индексации" и в "ежедневной в упаковке и индексации". И думаем, думаем... Запусти этот код, посмотри на результаты, и подумай чего может произойти пока ты соизволишь свое "регулярное обслуживание" провести: Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 14:26 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЗапусти этот код, посмотри на результаты, и подумай чего может произойти пока ты соизволишь свое "регулярное обслуживание" провести: какое отношение этот тест имеет к советам про ежедневную упаковку таблиц (как я понимаю всех таблиц в приложении) ? ЗЫ: евреи шоб не болел писюн знаешь шо делают? не жалко? говорить про "зачем это надо" (бинарн индекс.) будем? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 14:39 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T, Вы издеваетесь? Вы подменяете индексы и удивляетесь разному результату? За подобный код у меня хомячки летали по коридору, как ошпаренные! За ручное подкладывание таблиц с одной копии, а индексов из другой - и без индексации - расстрел! Что же я должен был увидеть в этом коде и результате тестирования? То, что индексы автоматически не пересобираются при открытии таблицы? Это я знаю. То, что ваш случай может произойти только в случае РУЧНОГО вмешательства криворукого программера - тоже знаю. Так что же я должен был увидеть? Что нового почерпнуть должен был я? ЗЫ. Когда я увижу такую ситуацию, я не буду каждый день "упаковывать и индексировать". Я буду каждый день пилить автора сего идиотизма до тех пор, пока он не исправит! ЗЫЫ. Не индексация здесь нужна, а понижение в должности... или увольнение... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 14:42 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosВладимирМТак вот, я придерживаюсь первой позиции. Необходимо регулярное обслуживание базы данных. Как следствие, индекс по deleted() - не имеет смысла. Регулярное обслуживание и ежедневная упаковка с переиндексацией - ДВЕ РАЗНЫЕ ВЕЩИ!!! И не нужно одно выдавать за другое. За регулярное обслуживание - админу плюс, за ежедневную упаковку - найти виновных и расстрелять! Почему? Какая периодичность обслуживания является "плюсом", а какая "расстрел на месте"? Каковы критерии, определяющие периодичность обслуживания базы? BanditosКстати, меня просто убивает тот факт, что Вы делаете индекс по DELETED, упорно его не используете, и утверждаете, что он - не имеет смысла. Извините, если повторю то, что Вы и так знаете. При настройке SET DELETED ON, в случае наличия индекса по Deleted() он используется . Вне зависимости от наличия условия Deleted() в опции WHERE запроса. Это наглядно видно, если использовать настройку SYS(3054,1). Ну, а раз используется, то, соответственно, оказывает влияние на время выполнения запроса. О чем, собственно, все тесты и говорят BanditosВладимир, говоря Вашими же словами, индекс по ID - тоже не имеет смысла. А что? Я тут делал выборку по полю NAME, так вот, наличие индекса по ID мне не только не помогало, но и мешало! Как следствие - индекс по ID не имеет смысла! Если Вы думали пошутить, то шутка не удалась, поскольку, если Вы не используете поиск по ID, то, действительно, индекс по ID - не нужен. В данном, конкретном запросе. Ведь индекс по ID создается вовсе не для поиска по Name, а для поиска именно по ID. А вот индекс по Deleted() используется каждый раз в любом запросе если указана настройка SET DELETED ON. Как следствие, влияет на скорость выполнения ВСЕХ запросов. Без исключения. BanditosЗЫ. А про бинарные индексы прочитайте. Подумайте, что это такое. Про слово "логических", которое там упоминается. Бесплатный совет: про удаленные записи, которые там приведены КАК ПРИМЕР, не читайте. Представьте лучше таблицу, в которой есть ЛОГИЧЕСКОЕ поле "ПРИЗЫВНИК", в котором значения "True" - призывник, "FALSE" - не призывник... Создайте таблицу, протестируйте... Вы не правильно предстваляете себе цель и назначение логических полей. Поле "Призывник", если оно логического типа, следует интерпретировать как "А является ли данный человек призывником?". Это вовсе не "призывник/не призывник". Это уже Ваше "домысливание", что данное поле может иметь всего-лишь два значения. На самом деле, даже в данном случае - это далеко не так. Ведь могут быть много разных состояний степени "призванности". Т.е. логические поля - ни в коем случае не справочники. Это именно признаки . Некий не явный вопрос, подразумевающий только ответ типа Да/Нет. Если же Вы начинаете интерпретировать значение Да/Нет, то это означает, что Вы не правильно выбрали тип данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 15:12 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosDima T, Вы издеваетесь? Вы подменяете индексы и удивляетесь разному результату? Я тебе показал что бывает при битом индексе. Подменять руками его не обязательно, достаточно того что комп на котором выполнится "UPDATE чего-нибудь" успеет записать изменение в DBF и не успеет в CDX (или наоборот), по любой причине: железо, сетка, пользователь задачу снял. Это редкость, но бывает, т.к. запись последовательно происходит, сначала один файл, затем второй. И если это произойдет, то ближайшей переиндексации результаты запросов будут с ошибкой, если это будет долго продолжаться, то это приведет к тому что какой-нибудь пользователь это увидит и поправит согласно своим возможностям (т.е. усугубит проблему), и потом эти косяки надо будет кому-то разгребать. Я этим "кем-то" был уже несколько раз. Поэтому предпочитаю минимизировать интервал с момента сбоя до исправления. У меня есть возможность индексировать базу каждый день, поэтому я ей пользуюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 15:28 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TBanditosDima T, Вы издеваетесь? Вы подменяете индексы и удивляетесь разному результату? Я тебе показал что бывает при битом индексе. Подменять руками его не обязательно, достаточно того что комп на котором выполнится "UPDATE чего-нибудь" успеет записать изменение в DBF и не успеет в CDX (или наоборот), по любой причине: железо, сетка, пользователь задачу снял. Это редкость, но бывает, т.к. запись последовательно происходит, сначала один файл, затем второй. И если это произойдет, то ближайшей переиндексации результаты запросов будут с ошибкой, если это будет долго продолжаться, то это приведет к тому что какой-нибудь пользователь это увидит и поправит согласно своим возможностям (т.е. усугубит проблему), и потом эти косяки надо будет кому-то разгребать. Я этим "кем-то" был уже несколько раз. Поэтому предпочитаю минимизировать интервал с момента сбоя до исправления. У меня есть возможность индексировать базу каждый день, поэтому я ей пользуюсь. ок., мы Вам верим - индексы бьются у Вас каждый день. при чем здесь УПАКОВКА? какое отношение имеет создание индексов к УПАКОВКЕ таблиц? почему нужно паковать все таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 15:31 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМИзвините, если повторю то, что Вы и так знаете. При настройке SET DELETED ON, в случае наличия индекса по Deleted() он используется . Вне зависимости от наличия условия Deleted() в опции WHERE запроса. Это наглядно видно, если использовать настройку SYS(3054,1). Ну, а раз используется, то, соответственно, оказывает влияние на время выполнения запроса. О чем, собственно, все тесты и говорят Не извиняю. Ибо это действительно я знаю. И понимаю. В отличии от Вас, к сожалению. То, что индексы используются - уже хорошо, уже прогресс. Это радует, что мы с Вами дошли до момента, когда индексы у нас однозначно задействованы. И дня не прошло. Кстати, о каких тестах Вы говорите? Вы проводили какие-то тесты, а нам ничего не сказали? Не хорошо. Итак, о тестах. Тестовая среда: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Тест: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Так вот. Если создать тестовую среду без: Код: plaintext
Что Вы там тестируете, интересно? ЗЫ. А бинарные индексы Вы все же не понимаете... ЗЫЫ. Про то, что Вы расписали мою задачу, в которой было всего 2 значения, на другой набор значений и при этом обвинили меня, что это я что-то додумал - вообще не хочу комментировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 15:57 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosSELECT * FROM mytable WHERE ID=10 INTO CURSOR tmp Я уже писал что это не выборка, а поиск первой записи удовлетворяющей условию, т.е. равносильно команде Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 16:26 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosТак вот. Если создать тестовую среду без: Код: plaintext
а если сделать PACK ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 16:27 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TBanditosТак вот. Если создать тестовую среду без: Код: plaintext
а если сделать PACK ? зачем? мы пытаемся вести разговор про то зачем индекс в таблице с имеющимися удаленными записями. почему Вы игнорируете просьбу и не желаете поговорить про оптимизацию в непакованных таблицах и проверить запрос, отличающийся от Вашего, который Вы используете в своем тесте? (у Вас в реальном приложении всегда заспросы одного типа? поиск по айди записи?) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 16:40 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TBanditosТак вот. Если создать тестовую среду без: Код: plaintext
а если сделать PACK ? А если по пустой таблице? Знаете, я конечно не уверен, но почти догадываюсь, что один и тот же запрос по таблице в сто тысяч миллионов записей будет почти так же быстр, как по таблице с тремя записями. А если и будет медленнее, то не намного. Возможно, все зависит от установок типа DELETE, FILTER, может быть BINARY... Хотя я могу и ошибаться... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:03 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникя Вас просил остановиться только на таблицах с наличием уд-х записей и проверить запрос: SELECT Count(*) as cnt FROM mytable where id > 100 INTO CURSOR tmp nofilter намекая на то, что только тестом с придуманным Вами запросом невозможно понять для чего нужен этот индекс. Проверил твой запрос, код теста тут: Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
Результат в твою пользу, ускорение более чем в 100 раз, этому запросу очень нужен твой индекс: Создали индекс MainID Тэгов: 1 Время: 5980,0 Время: 5973,0 Время: 5907,0 Время: 5928,0 Время: 5894,0 Время: 5928,0 Время: 5911,0 Время: 5931,0 Время: 5902,0 Время: 5930,0 Создали индекс Del Тэгов: 2 Время: 67,0 Время: 42,0 Время: 42,0 Время: 43,0 Время: 42,0 Время: 54,0 Время: 43,0 Время: 43,0 Время: 45,0 Время: 45,0 Правда без индекса по ID твой хитрый индекс становится балластом: Без индексов Тэгов: 0 Время: 5967,0 Время: 5919,0 Время: 5908,0 Время: 5911,0 Время: 5911,0 Время: 5911,0 Время: 5918,0 Время: 5933,0 Время: 5939,0 Время: 5937,0 Создали индекс Del Тэгов: 1 Время: 13551 Время: 6377,0 Время: 6391,0 Время: 6386,0 Время: 6390,0 Время: 6399,0 Время: 6389,0 Время: 6390,0 Время: 6434,0 Время: 6409,0 Тут похоже какой-то баг оптимизатора на подобных запросах, т.к. совсем без индексов и с индексом только по ID время одинаковое. Еще поизучаю, не ликуй раньше времени :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:08 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TРезультат в твою пользу, ускорение более чем в 100 раз, этому запросу очень нужен твой индекс: Правда без индекса по ID твой хитрый индекс становится балластом: а кто утверждал, что одиночный бинарн.индекс оптим-ет выборку по айди запси? для оптим-и выборки по айди записи как раз и нужен индекс по ID Dima TЕще поизучаю, не ликуй раньше времени :) мне ликование не нужно. мне нужно, чтобы кулинар-теоретик заткнулся и ушел учить детей. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:13 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникок., мы Вам верим - индексы бьются у Вас каждый день. Ты бы уж писал что у тебя они вообще не бьются. Юристишко-выпускникпри чем здесь УПАКОВКА? какое отношение имеет создание индексов к УПАКОВКЕ таблиц? почему нужно паковать все таблицы? 1. Обе операции требуют монопольного доступа. 2. PACK таблицы без индексов происходит быстро, индексы дольше создаются. Если нет помеченных то очень быстро (а они не каждый день появляются) Поэтому я так делаю Код: plaintext 1. 2. 3. 4.
Я так и не могу понять что в этом ненормального? Кстати кроме воплей что это "ужас" других аргументов не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:23 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЯ так и не могу понять что в этом ненормального? Кстати кроме воплей что это "ужас" других аргументов не было. А ненормально здесь то, что у Вас нигде не упоминается ни архивирование, ни бэкап. И в неком ближайшем будущем, когда вы уже раз 20 упакуете таблицу, бухгалтер тетя Соня припрется к Вам в 17:27 и скажет: - А чегой-то моего клиента (документа, платежки...) нигде нету? Я точно вводила. Затем редактировала, и снова вводила. Точно. А сегодня гляжу - нету нигде. А значит - Ваша программа глючит! И фиг с два Вы отвертитесь, что это не так. И про то, был ли не был такой клиент - уже и узнать-то не получится... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:33 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima Tок., мы Вам верим - индексы бьются у Вас каждый день. Ты бы уж писал что у тебя они вообще не бьются. [/quot] не имеет отношения к обсуждаемой теме, (существуют люди, которые верят в летающие тарелки) Юристишко-выпускникпри чем здесь УПАКОВКА? какое отношение имеет создание индексов к УПАКОВКЕ таблиц? почему нужно паковать все таблицы? 1. Обе операции требуют монопольного доступа. 2. PACK таблицы без индексов происходит быстро, индексы дольше создаются. Если нет помеченных то очень быстро (а они не каждый день появляются) Поэтому я так делаю Код: plaintext 1. 2. 3. 4.
Я так и не могу понять что в этом ненормального? Кстати кроме воплей что это "ужас" других аргументов не было.[/quot] не имеет отношения к обсуждению. необходимости сущ-я бинарных индексов и т.д. .. воплей не было - были замечания, затем домыслы убого кулинара-теоретика, который не имеет отношения к реальной разработке, мечущегося по форумам и пытающегося для каких-то целей учить реальных разработчиков, при этом трактуя все про то кто и как мыслит себе в угоду. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:36 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosDima TЯ так и не могу понять что в этом ненормального? Кстати кроме воплей что это "ужас" других аргументов не было. А ненормально здесь то, что у Вас нигде не упоминается ни архивирование, ни бэкап. Тынц ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:40 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T, Принято. Вопрос снят. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:42 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TBanditosпропущено... А ненормально здесь то, что у Вас нигде не упоминается ни архивирование, ни бэкап. Тынц начинаем опять по кругу, обосновываем необходимость бубнов. ну т.е. всегда делаем бекап, пакуем, индексируем. и так каждый день? пользователям мануал пишем куда жать? иными словами: если приложение написано на фокспро, то судьба юзера жать на большую кнопку и никак иначе? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:47 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
BanditosИ в неком ближайшем будущем, когда вы уже раз 20 упакуете таблицу, бухгалтер тетя Соня припрется к Вам в 17:27 и скажет: - А чегой-то моего клиента (документа, платежки...) нигде нету? Я точно вводила. Затем редактировала, и снова вводила. Точно. А сегодня гляжу - нету нигде. А значит - Ваша программа глючит! И фиг с два Вы отвертитесь, что это не так. И про то, был ли не был такой клиент - уже и узнать-то не получится... Ну найду я помеченную на удаление платежку и что это изменит? Скажу была, но ее кто-то удалил. Тут же спросят кто? И что дальше? В итоге все-равно крайний разработчик. Это кстати тот вопрос с которого топик начался. Если принципиально надо хранить все что ввели, то не надо встроенные средства пометки на удаление использовать. Тут я это и писал. И не только я ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:50 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T2. PACK таблицы без индексов происходит быстро, индексы дольше создаются.Дольше чего? Если нет помеченных то очень быстро"очень быстро" к чему относится? К PACK или к созданию индексов? (а они не каждый день появляются) Поэтому я так делаю Код: plaintext 1. 2. 3. 4.
Я так и не могу понять что в этом ненормального? А общее время команд меньше чем Pack с индексами? Почему рассматривается только время упаковки? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:53 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникпользователям мануал пишем куда жать? Зачем вообще куда-то жать? есть планировщик, который все делает. В мануал пишем как из планировщика запускать. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 17:54 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Sergey SizovDima T2. PACK таблицы без индексов происходит быстро, индексы дольше создаются.Дольше чего? Если нет помеченных то очень быстро"очень быстро" к чему относится? К PACK или к созданию индексов? Вроде по-русски написал. Уточняю: Индексы дольше создаются чем PACK таблицы без индексов PACK таблицы без индексов происходит очень быстро если нет помеченных на удаление. Sergey SizovА общее время команд меньше чем Pack с индексами? Почему рассматривается только время упаковки? Некорректное сравнение. При наличии помеченных на удаление происходит переиндексация, при отсутствии помеченных переиндексации не происходит. Время упаковки потому что обсуждаем упаковку. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 18:08 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЮристишко-выпускникпользователям мануал пишем куда жать? Зачем вообще куда-то жать? есть планировщик, который все делает. В мануал пишем как из планировщика запускать. ок. разрабатываем софт. отдаем пользователю. на его ПК мы должны настроить планировщик? мы не пойдем простым путем? т.е. мы настолько параноидальны, что топчимся по работающим таблицам и ищем проблем? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 18:08 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TВремя упаковки потому что обсуждаем упаковку. ладно, пора убегать, нужно уж определиться: делать мен во всех своих разработках большую кнопку и планировщик (гы, хз как оно работает) т.е. просто по-любому? всегда пакуем? если софт на фокспро и используем родные таблицы, то всегда пакуем и никак по-другому? если софт на фокспро и используем таблицы, то размер всех этих таблиц всегда в 4 млн.записей? + уж добью до конца - пусть кулинар чего-нить придумает еще про меня: если софт на фокспро и используем родные таблицы, то эти таблицы всегда в сети и т.д. ? если софт на фокспро и используем родные таблицы, то пользователь не станет задавать вопрос, а че это Ваше приложение такое творит, что мечется по нашему диску как шальное (упаковка приводит к созданию нового ф-ла, а старый переим-ся) ну я про битые сектора там, еще чего на диске умалчиваю ...? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 18:19 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TSergey Sizovпропущено... Дольше чего?пропущено... "очень быстро" к чему относится? К PACK или к созданию индексов? Вроде по-русски написал.Вот именно - вроде. Есть еще такое понятие как согласование слов в предложении. Уточняю: Индексы дольше создаются чем PACK таблицы без индексов PACK таблицы без индексов происходит очень быстро если нет помеченных на удаление. Sergey SizovА общее время команд меньше чем Pack с индексами? Почему рассматривается только время упаковки? Некорректное сравнение. При наличии помеченных на удаление происходит переиндексация, при отсутствии помеченных переиндексации не происходит.Поо показанному Вами коду это не скажешь. Индексация там безусловная.Время упаковки потому что обсуждаем упаковку.А почему только упаковку, если Вы все время сравниваете с индексацией? Кстати, в приведенном Вами коде происходит тройное полное сканирование таблицы. Упаковка с индексами это делает вроде бы за один проход. Вам диски и сеть не жалко? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 18:20 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ладно, ребята, с Вами весело. наверное правиль, что убили фокспро. но я вот для Вены сделаю фенечку,- успокоюсь насовсем. а так, конечно радует еще как ни странно, что в обсуждение "впрягаются" "помошники", спасибо помогло сдержаться - а то бы матюги писал - уже набрал в 25 этажей, но сдержался. странно, я ведь злой и ругаюсь матом, а ваш кулинар-теоретик словесную жвачку не жует, но учит детей гадостям. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 18:28 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЯ тебе показал что бывает при битом индексе.Хм, думаете, это большая неожиданность? Подменять руками его не обязательно, достаточно того что комп на котором выполнится "UPDATE чего-нибудь" успеет записать изменение в DBF и не успеет в CDX (или наоборот), по любой причине: железо, сетка, пользователь задачу снял. Это редкость, но бывает, т.к. запись последовательно происходит, сначала один файл, затем второй. И если это произойдет, то ближайшей переиндексации результаты запросов будут с ошибкой, если это будет долго продолжаться, то это приведет к тому что какой-нибудь пользователь это увидит и поправит согласно своим возможностям (т.е. усугубит проблему), и потом эти косяки надо будет кому-то разгребать. Я этим "кем-то" был уже несколько раз.А кто таким не был? Поэтому предпочитаю минимизировать интервал с момента сбоя до исправления.Обычно устраняют причины сбоя, а не его последствия. У меня есть возможность индексировать базу каждый день, поэтому я ей пользуюсь.А еще у Вас есть возможность не индексировать базу каждый день, но Вы почему-то этой возможностью не пользуетесь. Все это к тому, что Вы далеко не первый и наверняка не последний, кто сталкивался с описанными проблемами. Просто другие устраняют причины проблем и о проблеме забывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 18:35 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Sergey Sizov, перечитай пожалуйста топик, кто за что агитирует, а то в меня моими же камнями... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 18:43 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TSergey Sizov, перечитай пожалуйста топик, кто за что агитирует, а то в меня моими же камнями...Я его читал. И если я задаю вопросы, то значит в прочитанном я не нахожу достаточно прочной и однозначной причинно-следственной связи. Я могу понять сравнение упаковки при наличии индексов и упаковки без индексов с последующим созданием индексов. В обоих случаях имеем одинаковые состояния системы и до операции, и после операции. Я НЕ могу понять сравнение упаковки при наличии индексов и просто упаковки без индексов. До операции имеем индексы, после операции индексов не имеем. Потом таки индексы безусловно делаются и состояние системы приходит в исходное. Но время на индексацию почему-то выкидываем из сравнения. Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 18:54 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникесли софт на фокспро и используем родные таблицы, то всегда пакуем и никак по-другому? По-любому. Пакуем и точка. Юристишко-выпускникесли софт на фокспро и используем таблицы, то размер всех этих таблиц всегда в 4 млн.записей? + уж добью до конца - пусть кулинар чего-нить придумает еще про меня: если софт на фокспро и используем родные таблицы, то эти таблицы всегда в сети и т.д. ? Тормоза начинают быть заметными при сетевом использовании, поэтому исходим из наихудшего варианта. Размеры тестовых таблиц чтоб не в микросекундах сравнивать. Юристишко-выпускникесли софт на фокспро и используем родные таблицы, то пользователь не станет задавать вопрос, а че это Ваше приложение такое творит, что мечется по нашему диску как шальное (упаковка приводит к созданию нового ф-ла, а старый переим-ся) ну я про битые сектора там, еще чего на диске умалчиваю ...? Так это ж хорошо что мечется, а то будет писать в один и тот же сектор и тогда точно сектору поплохеет, а так равномерный износ диска. Тему необходимости использования PACK предлагаю закрыть на этом. Кому надо все аргументы за и против прочитают выше. PS поизучал странные результаты "select count(*) from ..", пришел к выводу что таблица вообще не используется при наличии двух индексов. Стоит только добавить еще чего-нибудь внутрь селекта (например "select count(*), max(ID) from ..") так результаты сразу начинают быть близкими: Время без хитрого индекса (при помеченных) > Времени с хитрым индексом (при помеченных) > Время без хитрого индекса (после PACK) Эту тему тоже предлагаю закрыть, т.к. каждый доказал то, что ему важнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 19:02 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Sergey SizovDima TSergey Sizov, перечитай пожалуйста топик, кто за что агитирует, а то в меня моими же камнями...Я его читал. И если я задаю вопросы, то значит в прочитанном я не нахожу достаточно прочной и однозначной причинно-следственной связи. Я могу понять сравнение упаковки при наличии индексов и упаковки без индексов с последующим созданием индексов. В обоих случаях имеем одинаковые состояния системы и до операции, и после операции. Я НЕ могу понять сравнение упаковки при наличии индексов и просто упаковки без индексов. До операции имеем индексы, после операции индексов не имеем. Потом таки индексы безусловно делаются и состояние системы приходит в исходное. Но время на индексацию почему-то выкидываем из сравнения. Почему? Спор был принципиально применять PACK или нет, я за то чтоб применять, оппоненты против. Аргументы выше. Про скорость PACKа упомянул по причине что его присутствие незначительно замедлит. Что касается этого кода: Код: plaintext 1.
Код: plaintext 1. 2. 3. 4.
PS Давай тему PACKа закроем, я его использовал, использую и буду использовать. Особенности использования немного оффтопик. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 19:10 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЧто касается этого кода: Код: plaintext 1.
Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 19:18 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Sergey SizovВот это утверждение мне кажется сильно спорным. На чем оно основано? Код: plaintext 1.
Можешь на моем примере с битым индексом проверить. Filemon.exe еще есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 20:33 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Banditos Некоторые замечания для справки. Как уже заметил Dima T , при определенных условиях, вместо создания новой временной таблицы FoxPro просто переоткрывает уже существующую с наложенным фильтром. Это на порядки более быстрая операция, чем создания новой таблицы. Чтобы этого избежать, нужно добавить опцию NOFILTER. Проверить, чем же является полученный курсор в реальности можно при помощи функции DBF(). В условиях Вашего примера, это будет так Код: plaintext 1. 2.
Я прогнал Ваш тест с NOFILTER на локали для курсора и он показал, что факт использования или не использования индекса по Deleted() не оказывает вообще никакого влияния на время выполнения выборки. Если же выполнить тест по сети для таблицы, то результаты похожи на результаты Dima T . Правда разница на порядок меньше, но не суть. Только вот, что из этого следует-то? Только то, что и было сказано до этого. Индекс по Deleted() ускоряет выполнение выборки, если записей, помеченных как удаленные, относительно много. В Вашем примере 30% от общего объема. По-моему, против этого никто и не возражал. Спор шел вокруг того, а действительно ли в реальных задачах следует доводить дело до того, чтобы записей, помеченных как удаленные стало так много? Еще раз сошлюсь на то, о чем, по моему мнению, идет спор http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=830283&msg=10312202 PS: Не стоит "шашкой махать" и доказывать что "я самый умный, а все вокруг - идиоты". Я все-таки надеюсь, что Вы хотите не "себя доказать", а разобраться в ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 21:08 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TПроверил твой запрос, код теста тут: (...) Тут похоже какой-то баг оптимизатора на подобных запросах, т.к. совсем без индексов и с индексом только по ID время одинаковое. Еще более интересные результаты получаются, если в таблице вообще нет записей, помеченных как удаленные. Т.е. в этом же самом тесте не давать команду Код: plaintext
Как ни странно, но результаты будут примерно такими же. Наличие индекса по Deleted() дает ускорение. Однако, если вместо Count(*) сделать выборку, результат которой будет содержать относительно большое количество записей, ну, хотя бы такое Код: plaintext
Такой запрос вернет 100тысяч записей, что, учитывая мизерный размер одной записи, не займет много времени. В этом случае результаты сразу же выравниваются и приходят к ожидаемым значениям. С индексом по Deleted(), как при отстутсвии записей, помеченных как удаленные, так и при удалении 33% записей, выборка выполняется медленнее, чем без него. Также произойдет резкое ускорение запроса с Count(*) в случае наличия удаленных записей при настройке SET DELETED OFF Похоже, действительно, функция Count(*) работает только по индексам, если запрос полностью оптимизируем . Только это, скорее, не баг, а фича. Поскольку реально ускоряет работу. Следовательно, в тестовых примерах недопустимо использование Count(*), поскольку она, скорее, вводит в заблуждение ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2011, 21:31 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМСледовательно, в тестовых примерах недопустимо использование Count(*), поскольку она, скорее, вводит в заблуждение + стопитьсот а в реальных приложениях не использовать запросы с сортировкой, суммированием, группировкой и т.д. еще раз доказывает пристрастие кулинара-теоретика, не имеющего отношения к разработке эксплуатируемых приложений, к лживым выводам, удобных для навязывания своих мыслей детям. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 07:23 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Нашел альтернативу использованию PACK. Задумка такая: заменяем в удаленных записях значение полей используемых в индексах на заведомо несуществующие. Таким образом при выборке по индексу он даст только не помеченные на удаление записи. PRIMARY KEY можно не трогать, т.к. он уникальный, а запросы с указанием значения помеченного на удаление - нарушение целостности. Для тестов сделал repl in with 0 for deleted() Потестил немного, результаты по убыванию скорости выполнения: 1. без хитрого индекса после PACKа 2. без хитрого индекса с 33% помеченных на удаление (без PACKа) 3. с хитрым индексом после PACKа 4. с хитрым индексом с 33% помеченных на удаление (без PACKа) Реально все три варианта почти равны (разница по времени 1-2%) Еще польза от такого подхода - быстрое нахождение помеченных записей (IndexSeek) и их восстановление (RECALL) для повторного использования. (По BINARY индексу IndexSeek() не работает), т.е. можно организовать работу с минимальным количеством помеченных совсем без PACKа раз уж столько претензий к нему. Какие будут доводы против такого подхода? Мне мысль понравилась, обязательно использую в каком-нибудь проекте, чтобы на реальной проге посмотреть. PS Доводы про то что вдруг чего-то нужное случайно пометили просьба не приводить, исходим из того что если пометили - значит запись не нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 08:18 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T Нашел альтернативу использованию PACK. Задумка такая: заменяем в удаленных записях значение полей используемых в индексах на заведомо несуществующие. Таким образом при выборке по индексу он даст только не помеченные на удаление записи. кАшмар. нивабиду, просто веселое настроение, зовите санитаров - пусть устанавливают диагноз: параноидальные кошмары сменяются генерацией буйных идей. итак кулинар зашоренный, за руками не следит, у Димы вроде прояснилось, затем Остапа понесло. Дима, итак 2-ю часть марлезонского балета заканчиваем? мы увидели, что как-бы есть оптимизация, и тормозов нет от бинарного индекса? 2-ю часть заканчиваем? или еще тесты будут? в 3-й части балета тезис будет: "А у нас в квартире газ, а у вас?" ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 09:20 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЗадумка такая: заменяем в удаленных записях значение полей используемых в индексах на заведомо несуществующие. [/b] Таким образом при выборке по индексу он даст только не помеченные на удаление записи. PRIMARY KEY можно не трогать , т.к. он уникальный, а запросы с указанием значения помеченного на удаление - нарушение целостности. ... Какие будут доводы против такого подхода? ... А так же нельзя использовать с ограничением Candidat/FOREIGN KEY, а так же Rule и до кучи триггеры, те можно только для индексов regular ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 09:21 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускник2-ю часть заканчиваем? или еще тесты будут? Заканчиваем. Тестов достаточно, идея родилась, надо ее на реальных прогах испытывать, чем и займусь. PaulWistА так же нельзя использовать с ограничением Candidat/FOREIGN KEY, а так же Rule и до кучи триггеры, те можно только для индексов regular Это да, только для таких вещей есть MSSQL, в DBFе не использую целостность встроенную, так исторически сложилось Пробовал целостность пользовать еще в VFP5, пару раз сглючило так что PRIMARY KEY задвоился и таблица вообще перестала открываться, после этого только new_id() в контейнере хранил, в VFP9 вообще без контейнера работаю. Никого не агитирую делать именно так, это у меня так сложилось с учетом специфики работы и обслуживания моих приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 10:28 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЭто да, только для таких вещей есть MSSQL, в DBFе не использую целостность встроенную, так исторически сложилось ... Мда, грустно,...даже нечего сказать, мда.... Dima T... Пробовал целостность пользовать еще в VFP5, пару раз сглючило так что PRIMARY KEY задвоился и таблица вообще перестала открываться, после этого только new_id() в контейнере хранил, в VFP9 вообще без контейнера работаю. Никого не агитирую делать именно так, это у меня так сложилось с учетом специфики работы и обслуживания моих приложений. В 5-ке действительно был "глюк" с фильтрованными индексами. Кстати, а как до использования NewID вычислялjcm следующее значение? Вот недавний тред почему так делать неправильно ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 10:55 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
PaulWistКстати, а как до использования NewID вычислялjcm следующее значение? В 9-ке встроенный автоинкримент использую. В 6-ке пробовал несколько вариантов, окончательный такой: Код: 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. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110.
PaulWistВот недавний тред почему так делать неправильно Я в курсе, прежде чем нарушать правила я их тщательно изучаю. Все плюсы и прелести целостности знаю, и даже использую, только в базах MSSQL. DBF-ные базы у меня небольшие: 10-20 табличек, за ними можно и без целостности уследить. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 12:08 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T Нашел альтернативу использованию PACK. Задумка такая: заменяем в удаленных записях значение полей используемых в индексах на заведомо несуществующие. Насколько я понимаю, цель подобной замены - это повторное использование записей, ранее помеченных как удаленные? Данная концепция, не то, чтобы ошибочная, но она является "не естесственной" для работы с любыми данными. "Умерла, так умерла" (с). Какие проблемы Вы "поимеете" на этом пути: 1. Придется "оборачивать" команды по созданию новых записей в процедуры, которые сначала будут искать записи, помеченные как удаленные, а потом уже, если таких записей нет, физически создавать новые записи. 2. Придется просто выбросить все команды групповой вставки данных вроде APPEND FROM или INSERT-SQL, поскольку, очевидно, в них невозможно встроить предварительный поиск записей, ранее помеченных как удаленные 3. Сама по себе процедура восстановления записей, ранее помеченых как удаленные - не тривиальна. Например, довольно не тривиально решается задача конфликтов совместного доступа. Это когда два пользователя одновременно нашли запись, помеченную как удаленную, но использовать ее может только один из них. А второй должен отказаться от притязаний на эту запись и продолжить поиск. 4. Если в базе данных используются Memo-поля, то периодическая упаковка мемо-полей - не избежная и обязательная процедура. При этом экономия на упаковке самих таблиц - выглядит странно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 12:11 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
прошелмимоВладимирМСледовательно, в тестовых примерах недопустимо использование Count(*), поскольку она, скорее, вводит в заблуждение + стопитьсот а в реальных приложениях не использовать запросы с сортировкой, суммированием, группировкой и т.д. Почему это? Речь шла только и исключительно о запросе вида Код: plaintext
Было показано, что анализ производительности, основанный на подобных запросах приводит к ложным выводам. Про сортировку, суммирование и группировку вообще ничего не говорилось. Будьте внимательнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 12:17 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМпрошелмимопропущено... + стопитьсот а в реальных приложениях не использовать запросы с сортировкой, суммированием, группировкой и т.д. Почему это? Речь шла только и исключительно о запросе вида Код: plaintext
Было показано, что анализ производительности, основанный на подобных запросах приводит к ложным выводам. Про сортировку, суммирование и группировку вообще ничего не говорилось. Будьте внимательнее. теоретик, разговор про использование бинарных индексов и т.д. и т.п. будьте внимательны, следите за движениями рук. анализ производительности, произведенный анализом какого-то одно запроса - это бред и подтасовка фактов. подтасовывать факты - Вы любитель, + писать про то, что мыслит Ваш собеседник - иными словами писать домыслы. еще раз вопрос: зачем Вам - не проф.разработчику, лазить целыми днями по форумам и пытаться учить разработчиков с опытом? остановитесь на детях неразумных и найдите свою нишу на форуме, где Вас не назовут нехорошим словом. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 12:25 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T...Я в курсе, прежде чем нарушать правила я их тщательно изучаю. Все плюсы и прелести целостности знаю, и даже использую, только в базах MSSQL. DBF-ные базы у меня небольшие: 10-20 табличек, за ними можно и без целостности уследить. Опять же мда-а-а..., и транзакции значит не используются, ....мда... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 12:26 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМDima T Нашел альтернативу использованию PACK. Задумка такая: заменяем в удаленных записях значение полей используемых в индексах на заведомо несуществующие. Насколько я понимаю, цель подобной замены - это повторное использование записей, ранее помеченных как удаленные? да ВладимирМДанная концепция, не то, чтобы ошибочная, но она является "не естесственной" для работы с любыми данными. "Умерла, так умерла" (с). Почти такую же концепцию практикуют многие СУБД, например MS SQL: при удалении записи место в файле помечается свободным и может быть использовано повторно в будущем. ВладимирМКакие проблемы Вы "поимеете" на этом пути: 1. Придется "оборачивать" команды по созданию новых записей в процедуры, которые сначала будут искать записи, помеченные как удаленные, а потом уже, если таких записей нет, физически создавать новые записи. 3. Сама по себе процедура восстановления записей, ранее помеченых как удаленные - не тривиальна. Например, довольно не тривиально решается задача конфликтов совместного доступа. Это когда два пользователя одновременно нашли запись, помеченную как удаленную, но использовать ее может только один из них. А второй должен отказаться от притязаний на эту запись и продолжить поиск. Это не проблема, уже есть мысли что должно быть в моей функции AppendBlank() которая все это будет делать. Попытку одновременного использования учту в коде. ВладимирМ2. Придется просто выбросить все команды групповой вставки данных вроде APPEND FROM или INSERT-SQL, поскольку, очевидно, в них невозможно встроить предварительный поиск записей, ранее помеченных как удаленные Выброшу: APPEND FROM практически не использую, INSERT-SQL заменю на AppendBlank() c REPLACE ВладимирМ4. Если в базе данных используются Memo-поля, то периодическая упаковка мемо-полей - не избежная и обязательная процедура. При этом экономия на упаковке самих таблиц - выглядит странно. Мемополя не использую. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 12:34 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускниканализ производительности, произведенный анализом какого-то одно запроса - это бред и подтасовка фактов. Вот и я о том же, запрос "select count(*) from ..." резко выделяется среди остальных типов запросов. Это говорит о том что для такого типа запросов в движке прописан отдельный способ их выполнения. Стоит только добавить что-то к запросу и он начинает вписываться в общую картину, например "select count(*), max(ID) from ..." ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 12:39 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima T Кстати, при выбранной стратегии использования записей, ранее помеченных как удаленные, индекс по Deleted() становится жизненно необходим, поскольку будет постоянно выполняться поиск именно записи помеченной как удаленная. С другой стороны, поскольку таких записей, очевидно будет очень мало, то факт наличия такого индекса приведет к тормозам в "обычных" запросах. Стоит ли "овчинка выделки"? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 15:02 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМ Dima T Кстати, при выбранной стратегии использования записей, ранее помеченных как удаленные, индекс по Deleted() становится жизненно необходим, поскольку будет постоянно выполняться поиск именно записи помеченной как удаленная. С другой стороны, поскольку таких записей, очевидно будет очень мало, то факт наличия такого индекса приведет к тормозам в "обычных" запросах. Стоит ли "овчинка выделки"? Нет, индекс по Deleted() как раз и не нужен. По BINARY индексу поиск невозможен, он только в помощь оптимизатору запросов используется. У меня есть обычный индекс, есть значение которое я пишу в удаляемые записи чтобы они не мешали выборкам (значение которое не используется при нормальной работе, например, -1). Вот этот -1 я и буду искать по этому индексу. Например есть таблица c индексами: Код: plaintext 1. 2. 3.
Удаление будет так: Код: plaintext 1.
Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 15:37 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускниканализ производительности, произведенный анализом какого-то одно запроса - это бред и подтасовка фактов. Именно на этот факт мы с Dima T и указали. На очень специфичный способ выполнения запроса с Count(*). И показали, что в любых других запросах статистика производительности получается совершенно иная. Тем не менее, лично Вы почему-то упорно игнорирует все другие типы запросов и настаиваете на том, что анализ производительности надо выполнять только и исключительно по запросу Count(*). Почему, собственно? С моей точки зрения, именно это и называется "бред и подтасовка фактов". Кстати, чтобы опять не скатится в перебранку, приведите свой собственный тест, который показал бы правоту Ваших слов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 15:41 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TНет, индекс по Deleted() как раз и не нужен. По BINARY индексу поиск невозможен, он только в помощь оптимизатору запросов используется. Он также используется в любых оптимизируемых выражениях. В частности, в любых операциях поиска с FOR-условием. А это можно сделать в команде LOCATE Код: plaintext 1. 2.
Dima TУ меня есть обычный индекс, есть значение которое я пишу в удаляемые записи чтобы они не мешали выборкам (значение которое не используется при нормальной работе, например, -1). Вот этот -1 я и буду искать по этому индексу. Это означает, что у Вас не будет контроля уникальности первичного ключа. Впрочем, можно просто инвертировать значение ключа. Менять знак, оставляя абсолютное значение без изменения. Соответственно, просто искать значения меньше нуля В общем-то, верю, что можно написать. Просто, не вижу смысла. Это значительно более громоздкое решение, чем периодическая упаковка. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 15:52 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМЮристишко-выпускниканализ производительности, произведенный анализом какого-то одно запроса - это бред и подтасовка фактов. Именно на этот факт мы с Dima T и указали. На очень специфичный способ выполнения запроса с Count(*). И показали, что в любых других запросах статистика производительности получается совершенно иная. Тем не менее, лично Вы почему-то упорно игнорирует все другие типы запросов и настаиваете на том, что анализ производительности надо выполнять только и исключительно по запросу Count(*). Почему, собственно? С моей точки зрения, именно это и называется "бред и подтасовка фактов". Кстати, чтобы опять не скатится в перебранку, приведите свой собственный тест, который показал бы правоту Ваших слов. Что Вы от меня хотите добиться? Зачем теоретику, который не имеет отношения к реальной разработке ПО какие-то тесты, знания и т.д.? Вы - вредитель. Вам об этом открыто заявляют. В ходе беседы мы определились, что "тормозов" нет, миллисекунды и т.д. не существенны, что возможна разработка ПО и возможны рек-и по использованию бин.индексов (целый список - лень писать). Паковка также ежедневно, а то и ежемесячно, а то и вообще никогда не практикуется по множеству причин (целый список - лень писать). Далее Вы вместе с Димой продолжаите нести пароноидальный бред и постить безумные идеи - они веселят, не более того. Ок - я сижу и наблюдаю. Не пишите про "тормоза" индекса. "Тормоза" это не индексы - а нечто иное. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 15:56 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМDima TУ меня есть обычный индекс, есть значение которое я пишу в удаляемые записи чтобы они не мешали выборкам (значение которое не используется при нормальной работе, например, -1). Вот этот -1 я и буду искать по этому индексу. Это означает, что у Вас не будет контроля уникальности первичного ключа. Впрочем, можно просто инвертировать значение ключа. Менять знак, оставляя абсолютное значение без изменения. Соответственно, просто искать значения меньше нуля Будет уникальность, во-первых я специально nNaklId не трогаю в своем коде. Во-вторых присвоение свежего ID: Код: plaintext
Хотя можно и штатный контроль целостности оставить добавив во все таблицы пустую запись с ID=-1 ВладимирМВ общем-то, верю, что можно написать. Просто, не вижу смысла. Это значительно более громоздкое решение, чем периодическая упаковка. Ничего громоздкого: 1. сделать три функции MyDelete(), MyAppend() и MarkDeleted() для проверки что все помеченные были правильно удалены. 2. заменить в коде delete in MyTable на MyDelete('MyTable') и append blank in MyTable на MyAppend('MyTable') Вобщем сделаю - выложу. PS Это можно пользовать в любой версии фокса, у меня на 6-ке еще много чего работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 16:24 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникЧто Вы от меня хотите добиться? Примеров, а не голословных утверждений. Хоть каких-нибудь примеров, которые можно было бы реально проверить. Потестировать. Юристишко-выпускникВ ходе беседы мы определились, что "тормозов" нет, миллисекунды и т.д. не существенны, Стоп. Либо "тормозов нет", либо "тормоза есть, но не существенны". В данном споре - это принципиальная разница. Юристишко-выпускникчто возможна разработка ПО и возможны рек-и по использованию бин.индексов (целый список - лень писать). Да, конечно. Только вот Вы не привели НИ ОДНОЙ рекомендации по использованию бин.индексов. Кроме, разумеется, голословных утверждений, что их надо использовать... Юристишко-выпускникПаковка также ежедневно, а то и ежемесячно, а то и вообще никогда не практикуется по множеству причин (целый список - лень писать). Да, конечно. Только вот Вы опять не привели НИ ОДНОЙ причины, почему команду PACK не надо давать вообще. Собственно, в этом-то и проблема. Вы НИЧЕГО не предлагаете. НЕТ Ваших предложений которые можно было бы оценить и сказать: "Да, действительно. Как же это я сам до такого не додумался. Вот, оказывается, в чем я ошибался." Спор ведется по принципу: - Использование (...) показывает (...) - Идиоты! - Но ведь видно же (...) - Зовите саниторов! - Ну, как же... И чего Вы хотите после ТАКОГО способа ведения дискуссии? Вы привели хотя бы ОДИН аргумент, за который можно было бы "уцепиться" и "повертеть" с разных сторон? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 16:30 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМСтоп. Либо "тормозов нет", либо "тормоза есть, но не существенны". В данном споре - это принципиальная разница. Вам проф.разработчики высказали свои приоритеты. Миллисекунды положенные на чашу весов с оторванностью от конеч-го пользователя, не знанием конечн.условий эксплуатации ПО проигрывают, и мы не усматриваем в милисек-х какого-то вреда и ущербности ПО. ВладимирМСпор ведется по принципу: - Использование (...) показывает (...) - Идиоты! - Но ведь видно же (...) - Зовите саниторов! - Ну, как же... Да. Вы - идиот. В том, что ввязались в спорт с проф. разработчиками ВладимирМИ чего Вы хотите после ТАКОГО способа ведения дискуссии? Вы привели хотя бы ОДИН аргумент, за который можно было бы "уцепиться" и "повертеть" с разных сторон? От Вас я не хочу ничего, кроме как то, чтобы пошли на свой фоксклаб, и там терли носы детям. Аргументов приведено множество. Аргумент понятный проф.разработчику непонятен теоретику. Тем кому нужно, все поняли. В след.раз утверждать про "тормоза" на таблицах с миллионами записей и про ежедневную паковку не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 17:20 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникДалее Вы вместе с Димой продолжаите нести пароноидальный бред и постить безумные идеи - они веселят, не более того. Ок - я сижу и наблюдаю. Я деньги зарабатываю на безумных идеях. И большинство связано с повышением производительности классических подходов. Иногда удается вместо классического решения найти безумное, которое работает в разы быстрее. И если в задаче производительность стоит на первом месте - безумство оправданно. Поэтому и провожу всегда всякие тесты на скорость, проверяю все варианты. То что для тебя непринципиальная потеря времени - для меня важно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 17:55 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Dima TЯ деньги зарабатываю на безумных идеях. странно, а чем я занимаюсь? гмм, замечу, у меня федерик констанс на руке, а ботинки - честер. наверное нужно начать заниматься безумством, чтобы сменить на бригет и позалини? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 18:15 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникАргументов приведено множество. Ссылку, пожалуйста. Хотя бы на один аргумент. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 18:21 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМЮристишко-выпускникАргументов приведено множество. Ссылку, пожалуйста. Хотя бы на один аргумент. теоретик, разговора не получится, я Вас не понимаю. там по-еврейски http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=830283&msg=10315242 + читать аргументы тех, кто принимал участие в обсуждении кроме Вас и Димы. далее, там Вас тоже ткнули носом в то, что для практиков не нужно обсасывание всего и всея http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=832460&msg=10312450 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 18:30 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникВладимирМпропущено... Ссылку, пожалуйста. Хотя бы на один аргумент. теоретик, разговора не получится, я Вас не понимаю. там по-еврейски http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=830283&msg=10315242 + читать аргументы тех, кто принимал участие в обсуждении кроме Вас и Димы. далее, там Вас тоже ткнули носом в то, что для практиков не нужно обсасывание всего и всея http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=832460&msg=10312450 И после этого Вы называете себя "профессионалом"? Ну, ну... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 18:49 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМИ после этого Вы называете себя "профессионалом"? Ну, ну... конечно, - не теоретиком. с Вами договориться не получится, я вспоминаю беседу про "абстракцию". еще раз: - для профи важна венгерская нотация; - для Вас суть беседы сводится к тому, что "можно Машку за ляжку и еще и на печи". беседа превращается в хрен знает что и обо всем и не о чем ... потом, когда Вы надоедаете - Вас одергивают, что Вы не с детьми беседуете, Вы - не унимаетесь все одно. еще раз: то что для Вас "тормоза", для меня "без разницы - закрыл глазки и не вижу". у меня задача - не теорию писать. когда объясните мне, зачем лазить по форумам, поучать и т.д., - тогда может поговорим. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 19:11 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникс Вами договориться не получится, я вспоминаю беседу про "абстракцию". Так и я тоже помню, что как только дело дошло до конкретики, то Вы тут же "слиняли". Юристишко-выпускникеще раз: - для профи важна венгерская нотация; - для Вас суть беседы сводится к тому, что "можно Машку за ляжку и еще и на печи". Для профи важно наличие стандартов. А будет ли этот стадарт в виде венгерской нотации или "Машкой за ляжку" - совершенно не имеет значения. "Пусть безобразно, зато единообразно" (с) Юристишко-выпускникеще раз: то что для Вас "тормоза", для меня "без разницы - закрыл глазки и не вижу". Ну, вот и договорились. Наличие индекса по Deleted() - никакой роли не играет. Юристишко-выпускниккогда объясните мне, зачем лазить по форумам, поучать и т.д., - тогда может поговорим. Когда объясните мне, зачем лазить по профессиональным форумам, что просто хамить и ругаться, тогда, может и поговорим... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 19:27 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
ВладимирМНу, вот и договорились до чего договорились? что можно Машку за ляжку? ВладимирМ лазить по профессиональным форумам я на своем форуме. здесь можно и на х.й послать. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 19:53 |
|
Выделить удаленные записи в Grid
|
|||
---|---|---|---|
#18+
Юристишко-выпускникВладимирМНу, вот и договорились до чего договорились? что можно Машку за ляжку? ВладимирМ лазить по профессиональным форумам я на своем форуме. здесь можно и на х.й послать.Так вот ты какой, северный оленьДжудж! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2011, 20:02 |
|
|
start [/forum/search_topic.php?author=GiorgiL&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
336ms |
get tp. blocked users: |
1ms |
others: | 492ms |
total: | 946ms |
0 / 0 |