powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / All table
18 сообщений из 18, страница 1 из 1
All table
    #33307579
McFozzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А эсли я запрашибаю данные с помощъю SQL команд (SELECT, UPDATE, DELETE) из базы данных каторая находится на шаред диске в LANе, то FoxPro качает всю таблицу или только результат команды?

На другом форуме один чувак твердит что FoxPro качает всю таблицу туда и обратно, но я где-то слышал что это не правда.
Кде найти какыю нибуть статью об этом?
...
Рейтинг: 0 / 0
All table
    #33307588
mvictor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и да и нет
уверен на 99,8% что
fox будет сканировать таблицу или ее индекс (если найдет подходящий)
и для него нет разницы где лежит таблица
По сети, конечно, будет дольше
...
Рейтинг: 0 / 0
All table
    #33307620
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VFP выполняется в памяти Вашего компьютера и обращается к данным на сетевом диске.
Откуда (от какого процесса) может вернуться только результат ?

Доступ к данным будет оптимизирован, но без блокировки файлов или их пересылки полностью или частично не обойтись.
...
Рейтинг: 0 / 0
All table
    #33307687
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi vklepko!

При чём тут блокировка? Для извлечения данных никакой блокировки не нужно.
А насчёт чтения - так в чём проблема то - по индексу будут извлечены только
необходимые куски dbf файла - какая в конце концов разница - будет передан
кусок dbf-а, или равноценный по размеру "ответ" от SQL-сервера...
Тут совсем другие моменты играют ключевую роль...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
All table
    #33307753
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor Korolyov

Блокировки я упомянул, так как автор задавал вопрос относительно нескольких операций с данными, а не только операции выборки данных. Первоисточник утверждает, что операции UPDATE и DELETE влекут за собой различного вида DATA LOCKING, которую я, как понял, неудачно обозвал блокировкой.

Если задаться целью, то, наверное, можно проанализировать, какие ресурсы и в каком объёме будут вовлечены в выполнение операции UPDATE-SQL, в результате которой модифицируется одна запись таблицы и при этом изменяются поля входящие в уникальный (не первичный) ключ и обычный индекс.
...
Рейтинг: 0 / 0
All table
    #33308836
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
McFozzyА эсли я запрашибаю данные с помощъю SQL команд (SELECT, UPDATE, DELETE) из базы данных каторая находится на шаред диске в LANе, то FoxPro качает всю таблицу или только результат команды?

На другом форуме один чувак твердит что FoxPro качает всю таблицу туда и обратно, но я где-то слышал что это не правда.
Кде найти какыю нибуть статью об этом?Во-первых, твой советчик из другого форума сильно не в теме Можешь отправить его читать статью на ФоксКлубе

Во-вторых, прежде чем спрашивать у посторонних, правильнее и надежнее сначала проверить самому. Создать табличку размером побольше, поместить ее на соседний компьютер. И попытаться получить данные с помощью sql-запроса. Засечь время, и сравнить его с копированием таблицы целиком.
Все же, чтобы упростить тебе анализ полученных результатов, подскажу - если у таблицы есть индекс, ТОЧНО совпадающий с условием SQL-запроса, то клиенту будет передана только необходимая часть данных. Если такого индекса нет - будет передана таблица целиком.

И, наконец, почитай про оптимизацию Rushmore в Help. Поэкспериментируй. И все встанет на свои места.
...
Рейтинг: 0 / 0
All table
    #33310433
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi karlyT!

> если у таблицы есть индекс, ТОЧНО совпадающий с условием SQL-запроса, то
> клиенту будет передана только необходимая часть данных.

Не пугай человека :) Частичную оптимизацию пока не отменили - даже отсечение
по ОДНОЙ ЧАСТИ условия из 10 (т.е. когда есть индекс лишь для одного поля, а
условие ссылается на 10 разных полей) может КАРДИНАЛЬНО ускорить операцию.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
All table
    #33310516
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McFozzyА если я запрашиваю данные с помощъю SQL команд (SELECT, UPDATE, DELETE) из базы данных каторая находится на шаред диске в LANе, то FoxPro качает всю таблицу или только результат команды?...
Где найти какую-нибудь статью об этом?
В Help-е.
Рассмотрим команду SELECT-SQL:
SELECT ... FROM <перечень таблиц и связи между ними> ...
т.е. FOX проверяет открыты ли таблицы в рабочих областях. Если нет, то открывает , а потом уже выполняет SELECT. По моему так происходит.
Аналогично с UPDATE и DELETE.
...
Рейтинг: 0 / 0
All table
    #33310835
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СА
Рассмотрим команду SELECT-SQL:
SELECT ... FROM <перечень таблиц и связи между ними> ...
т.е. FOX проверяет открыты ли таблицы в рабочих областях. Если нет, то открывает, а потом уже выполняет SELECT. По моему так происходит.
Аналогично с UPDATE и DELETE.
Только в свете всей дискусси надо пояснить, что физически "открыть таблицу" означает скачать на клиента несколько байт заголовка таблицы. Фактически, только определиться со структурой. А уже скачивание информационной части (записей) происходит по мере необходимости.
...
Рейтинг: 0 / 0
All table
    #33312372
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боюсь, если при открытии таблицы set tablevalidate
установлен в 3, то чтением заголовка дело не ограничится.
...
Рейтинг: 0 / 0
All table
    #33312843
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi vklepko!

Помимо заголовка ВСЕГДА считывается одна запись (чтобы фокс мог установить
на неё указатель) - при этом может очень конкретно напакостить SET DELETED
ON - поскольку удалённая запись "не подходит" то фокс может начать
сканирование таблицы в поисках первой неудалённой записи :(
TableValidate же не так страшен - для определения РАЗМЕРА файла совсем не
обязательно его целиком считывать :) Более того - даже если проверка
отключена, фокс всё равно запрашивает размер файла.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
All table
    #33312901
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor Korolyov

Что Вы имеете ввиду под РАЗМЕРОМ?

Для определения РАЗМЕРА-ДЛИНЫ файла его и открывать-то не нужно, не говоря уже про считывать и тем более целиком.

Для определения РАЗМЕРА-КОЛИЧЕСТВА ЗАПИСЕЙ считывать его целиком тоже не нужно, но на время валидации количества записей нужно будет обеспечить недобавление новых другими пользователями.
...
Рейтинг: 0 / 0
All table
    #33313081
MikeLed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа.
Вы от овета на вопрос ушли в дискусию, цель которой в контексте вопроса не понятна.
Выполнение запросов для таблиц фокса просходит одинаково - в памяти локального компа - не зависимо от места хранения. Со скоростью можно разбираться настройами в зависимости от количества таблиц полей (типов и размеров).
...
Рейтинг: 0 / 0
All table
    #33313134
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikeLedГоспода.
Вы от овета на вопрос ушли в дискусию, цель которой в контексте вопроса не понятна.
Выполнение запросов для таблиц фокса просходит одинаково - в памяти локального компа - не зависимо от места хранения. Со скоростью можно разбираться настройами в зависимости от количества таблиц полей (типов и размеров).
"И это правильно" (с)

Однако есть "незначительная" деталь. Что значит, точнее как именно, происходит это самое "выполнение запросов"? Т.е. какая именно информация необходима?

Так вот, вкратце. Если это возможно, то FoxPro сначала делает выборку не самих записей, а определяет какие именно записи попадают в итоговую выборку. А затем с сервера вытягивает эти самые записи. Т.е. не всю таблицу тягает на клиента, а только то, что действительно нужно.

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

Это в самом общем виде. Детальный механизм всей этой работы (технология Rushmore) - это коммерческая тайна Microsoft. Поэтому прямого описания нигде не найдешь. Приходится довольствоваться косвенными признаками.

В общем, не стоит утверждать что прежде чем выполнить запрос таблица будет перекачана на клиента целиком. Да, такое тоже может быть, но это зависит от конкретного запроса и наличия индексов.
...
Рейтинг: 0 / 0
All table
    #33313863
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
В общем-то (если я правильно понял) вопрос в том, как фокс обращается с данными?
Кстати, мне это тоже интересно , с познавательными целями... (поскольку у меня 20 пользователей, и и пока еще никто не ругался... может, я пишу неправильно :) )
...
Рейтинг: 0 / 0
All table
    #33316155
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi vklepko!

Ну я то понимаю, что имею в виду под размером :) Я лишь реагирую на твоё
замечание про то что чтением заголовка дело не ограничится...
В контексте изначального вопроса может возникнуть страшное подозрение - что
при такой настройке механизма встроенной проверки произойдёт какое-то
дополнительное чтение данных - однако это не так - ничего сверх обычного
фокс читать не будет.

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

Совершенно верно - и для этого фокс выполняет неявный RLOCK(0) - т.е. так
называемую "блокировку заголовка таблицы" - после проверки он блокировку
конечно снимает. В ряде случаев эта блокировка может мешать, но вот
дополнительного чтения данных из dbf файла она не вызывает. Хотя конечно
если быть совсем уж строгим - собственно наложение/снятие/контроль
блокировки выполняет всё-же сервер, а значит появляются дополнительные
сетевые пакеты, которыми клиент всё это дело запрашивает у сервера - т.е.
сетевой трафик конечно возрастает - в плане объёма это конечно мизер, но вот
если сетка с большим временем отклика (а все эти "файловые команды"
естественно выполняются в синхронном режиме - т.е. запрос-ответ-снова запрос
по результатам ответа...) - то это может быть заметно.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
All table
    #33320642
vklepko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi Igor Korolyov
автор...
наложение/снятие/контроль блокировки выполняет всё-же сервер
...

Давайте продолжим выяснять, какии функции выполняет сервер, а то в свете поставленного вопроса может возникнуть подозрение, что от сервера можно ждать осмысленной помощи в выполнении SQL-запроса.

В нашем случае сервер предоставляет ресурс для хранения файлов БД, к которым осуществляется многопользовательский доступ. В этих файлах сервер не видит организованный набор данных, против которых можно выполнять SQL-запросы. Вся работа по выбрке данных перекладывается на VFP, который выполняется на клиенте.
Когда в контексте данной темы используются выражения "...FoxPro качает...","...клиенту будет передана... " и т.д., то надо полагать, что мы знаем, что мы имеем ввиду - "выполняясь в памяти клиента, VFP читает с сервера "

VFP будет использовать Rushmore и читать только, то что необходимо для получения результата, но читать всегда только часть .dbf, которая соответствует результирующей выборке, VFP не может - не волшебник
...
Рейтинг: 0 / 0
All table
    #33321359
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi vklepko!

> В этих файлах сервер не видит организованный набор данных, против которых
> можно выполнять SQL-запросы

Естественно.

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

То что не ВСЕГДА - это факт, а вообще... может - именно базируясь на работе
оптимизатора. Из cdx извлекаются как раз "номера записей" - соответственно
имея данные о номерах записей и о их размере и начале (из заголовка) читать
фокс может именно необходимые куски файла - не больше. Причём это конечно
"логическое" чтение - физически вступают в действие размеры
сектора/кластера, алгоритмы упреждающего чтения и т.п. - однако всего этого
фокс уже не видит и не рулит...
Кстати cdx читается тоже не целиком, и даже один индексный тег может
считываться не полностью! Т.к. это дерево - то фокс от корня идёт по
направлению к нужным вершинам, пропуская заведомо "бесполезные"

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / All table
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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