|
|
|
All table
|
|||
|---|---|---|---|
|
#18+
А эсли я запрашибаю данные с помощъю SQL команд (SELECT, UPDATE, DELETE) из базы данных каторая находится на шаред диске в LANе, то FoxPro качает всю таблицу или только результат команды? На другом форуме один чувак твердит что FoxPro качает всю таблицу туда и обратно, но я где-то слышал что это не правда. Кде найти какыю нибуть статью об этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 21:29:56 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
и да и нет уверен на 99,8% что fox будет сканировать таблицу или ее индекс (если найдет подходящий) и для него нет разницы где лежит таблица По сети, конечно, будет дольше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 21:52:22 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
VFP выполняется в памяти Вашего компьютера и обращается к данным на сетевом диске. Откуда (от какого процесса) может вернуться только результат ? Доступ к данным будет оптимизирован, но без блокировки файлов или их пересылки полностью или частично не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2005, 22:55:45 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Hi vklepko! При чём тут блокировка? Для извлечения данных никакой блокировки не нужно. А насчёт чтения - так в чём проблема то - по индексу будут извлечены только необходимые куски dbf файла - какая в конце концов разница - будет передан кусок dbf-а, или равноценный по размеру "ответ" от SQL-сервера... Тут совсем другие моменты играют ключевую роль... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2005, 02:06:10 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Hi Igor Korolyov Блокировки я упомянул, так как автор задавал вопрос относительно нескольких операций с данными, а не только операции выборки данных. Первоисточник утверждает, что операции UPDATE и DELETE влекут за собой различного вида DATA LOCKING, которую я, как понял, неудачно обозвал блокировкой. Если задаться целью, то, наверное, можно проанализировать, какие ресурсы и в каком объёме будут вовлечены в выполнение операции UPDATE-SQL, в результате которой модифицируется одна запись таблицы и при этом изменяются поля входящие в уникальный (не первичный) ключ и обычный индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2005, 07:34:58 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
McFozzyА эсли я запрашибаю данные с помощъю SQL команд (SELECT, UPDATE, DELETE) из базы данных каторая находится на шаред диске в LANе, то FoxPro качает всю таблицу или только результат команды? На другом форуме один чувак твердит что FoxPro качает всю таблицу туда и обратно, но я где-то слышал что это не правда. Кде найти какыю нибуть статью об этом?Во-первых, твой советчик из другого форума сильно не в теме Можешь отправить его читать статью на ФоксКлубе Во-вторых, прежде чем спрашивать у посторонних, правильнее и надежнее сначала проверить самому. Создать табличку размером побольше, поместить ее на соседний компьютер. И попытаться получить данные с помощью sql-запроса. Засечь время, и сравнить его с копированием таблицы целиком. Все же, чтобы упростить тебе анализ полученных результатов, подскажу - если у таблицы есть индекс, ТОЧНО совпадающий с условием SQL-запроса, то клиенту будет передана только необходимая часть данных. Если такого индекса нет - будет передана таблица целиком. И, наконец, почитай про оптимизацию Rushmore в Help. Поэкспериментируй. И все встанет на свои места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2005, 13:18:06 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Hi karlyT! > если у таблицы есть индекс, ТОЧНО совпадающий с условием SQL-запроса, то > клиенту будет передана только необходимая часть данных. Не пугай человека :) Частичную оптимизацию пока не отменили - даже отсечение по ОДНОЙ ЧАСТИ условия из 10 (т.е. когда есть индекс лишь для одного поля, а условие ссылается на 10 разных полей) может КАРДИНАЛЬНО ускорить операцию. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 01:45:33 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
McFozzyА если я запрашиваю данные с помощъю SQL команд (SELECT, UPDATE, DELETE) из базы данных каторая находится на шаред диске в LANе, то FoxPro качает всю таблицу или только результат команды?... Где найти какую-нибудь статью об этом? В Help-е. Рассмотрим команду SELECT-SQL: SELECT ... FROM <перечень таблиц и связи между ними> ... т.е. FOX проверяет открыты ли таблицы в рабочих областях. Если нет, то открывает , а потом уже выполняет SELECT. По моему так происходит. Аналогично с UPDATE и DELETE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 07:25:01 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Владимир СА Рассмотрим команду SELECT-SQL: SELECT ... FROM <перечень таблиц и связи между ними> ... т.е. FOX проверяет открыты ли таблицы в рабочих областях. Если нет, то открывает, а потом уже выполняет SELECT. По моему так происходит. Аналогично с UPDATE и DELETE. Только в свете всей дискусси надо пояснить, что физически "открыть таблицу" означает скачать на клиента несколько байт заголовка таблицы. Фактически, только определиться со структурой. А уже скачивание информационной части (записей) происходит по мере необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 10:28:26 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Боюсь, если при открытии таблицы set tablevalidate установлен в 3, то чтением заголовка дело не ограничится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2005, 17:16:46 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Hi vklepko! Помимо заголовка ВСЕГДА считывается одна запись (чтобы фокс мог установить на неё указатель) - при этом может очень конкретно напакостить SET DELETED ON - поскольку удалённая запись "не подходит" то фокс может начать сканирование таблицы в поисках первой неудалённой записи :( TableValidate же не так страшен - для определения РАЗМЕРА файла совсем не обязательно его целиком считывать :) Более того - даже если проверка отключена, фокс всё равно запрашивает размер файла. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2005, 04:34:06 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Hi Igor Korolyov Что Вы имеете ввиду под РАЗМЕРОМ? Для определения РАЗМЕРА-ДЛИНЫ файла его и открывать-то не нужно, не говоря уже про считывать и тем более целиком. Для определения РАЗМЕРА-КОЛИЧЕСТВА ЗАПИСЕЙ считывать его целиком тоже не нужно, но на время валидации количества записей нужно будет обеспечить недобавление новых другими пользователями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2005, 10:09:17 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Господа. Вы от овета на вопрос ушли в дискусию, цель которой в контексте вопроса не понятна. Выполнение запросов для таблиц фокса просходит одинаково - в памяти локального компа - не зависимо от места хранения. Со скоростью можно разбираться настройами в зависимости от количества таблиц полей (типов и размеров). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2005, 16:23:58 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
MikeLedГоспода. Вы от овета на вопрос ушли в дискусию, цель которой в контексте вопроса не понятна. Выполнение запросов для таблиц фокса просходит одинаково - в памяти локального компа - не зависимо от места хранения. Со скоростью можно разбираться настройами в зависимости от количества таблиц полей (типов и размеров). "И это правильно" (с) Однако есть "незначительная" деталь. Что значит, точнее как именно, происходит это самое "выполнение запросов"? Т.е. какая именно информация необходима? Так вот, вкратце. Если это возможно, то FoxPro сначала делает выборку не самих записей, а определяет какие именно записи попадают в итоговую выборку. А затем с сервера вытягивает эти самые записи. Т.е. не всю таблицу тягает на клиента, а только то, что действительно нужно. Для определения этих самых "нужных" записей используется индекс. Т.е. предварительно на клиента вытягивается индекс (не индексный файл целиком, а именно нужные индексные тэги). В нем делается нужная выборка кодов записей и уже с сервера вытягиваются эти самые коды. Это в самом общем виде. Детальный механизм всей этой работы (технология Rushmore) - это коммерческая тайна Microsoft. Поэтому прямого описания нигде не найдешь. Приходится довольствоваться косвенными признаками. В общем, не стоит утверждать что прежде чем выполнить запрос таблица будет перекачана на клиента целиком. Да, такое тоже может быть, но это зависит от конкретного запроса и наличия индексов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2005, 17:57:38 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
ВладимирМ В общем-то (если я правильно понял) вопрос в том, как фокс обращается с данными? Кстати, мне это тоже интересно , с познавательными целями... (поскольку у меня 20 пользователей, и и пока еще никто не ругался... может, я пишу неправильно :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2005, 06:44:26 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Hi vklepko! Ну я то понимаю, что имею в виду под размером :) Я лишь реагирую на твоё замечание про то что чтением заголовка дело не ограничится... В контексте изначального вопроса может возникнуть страшное подозрение - что при такой настройке механизма встроенной проверки произойдёт какое-то дополнительное чтение данных - однако это не так - ничего сверх обычного фокс читать не будет. > на время валидации количества записей нужно будет обеспечить недобавление > новых другими пользователями. Совершенно верно - и для этого фокс выполняет неявный RLOCK(0) - т.е. так называемую "блокировку заголовка таблицы" - после проверки он блокировку конечно снимает. В ряде случаев эта блокировка может мешать, но вот дополнительного чтения данных из dbf файла она не вызывает. Хотя конечно если быть совсем уж строгим - собственно наложение/снятие/контроль блокировки выполняет всё-же сервер, а значит появляются дополнительные сетевые пакеты, которыми клиент всё это дело запрашивает у сервера - т.е. сетевой трафик конечно возрастает - в плане объёма это конечно мизер, но вот если сетка с большим временем отклика (а все эти "файловые команды" естественно выполняются в синхронном режиме - т.е. запрос-ответ-снова запрос по результатам ответа...) - то это может быть заметно. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2005, 01:08:55 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Hi Igor Korolyov автор... наложение/снятие/контроль блокировки выполняет всё-же сервер ... Давайте продолжим выяснять, какии функции выполняет сервер, а то в свете поставленного вопроса может возникнуть подозрение, что от сервера можно ждать осмысленной помощи в выполнении SQL-запроса. В нашем случае сервер предоставляет ресурс для хранения файлов БД, к которым осуществляется многопользовательский доступ. В этих файлах сервер не видит организованный набор данных, против которых можно выполнять SQL-запросы. Вся работа по выбрке данных перекладывается на VFP, который выполняется на клиенте. Когда в контексте данной темы используются выражения "...FoxPro качает...","...клиенту будет передана... " и т.д., то надо полагать, что мы знаем, что мы имеем ввиду - "выполняясь в памяти клиента, VFP читает с сервера " VFP будет использовать Rushmore и читать только, то что необходимо для получения результата, но читать всегда только часть .dbf, которая соответствует результирующей выборке, VFP не может - не волшебник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2005, 16:30:43 |
|
||
|
All table
|
|||
|---|---|---|---|
|
#18+
Hi vklepko! > В этих файлах сервер не видит организованный набор данных, против которых > можно выполнять SQL-запросы Естественно. > VFP будет использовать Rushmore и читать только, то что необходимо для > получения результата, но читать всегда только часть .dbf, которая > соответствует результирующей выборке, VFP не может - не волшебник То что не ВСЕГДА - это факт, а вообще... может - именно базируясь на работе оптимизатора. Из cdx извлекаются как раз "номера записей" - соответственно имея данные о номерах записей и о их размере и начале (из заголовка) читать фокс может именно необходимые куски файла - не больше. Причём это конечно "логическое" чтение - физически вступают в действие размеры сектора/кластера, алгоритмы упреждающего чтения и т.п. - однако всего этого фокс уже не видит и не рулит... Кстати cdx читается тоже не целиком, и даже один индексный тег может считываться не полностью! Т.к. это дерево - то фокс от корня идёт по направлению к нужным вершинам, пропуская заведомо "бесполезные" Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2005, 01:10:38 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33313134&tid=1593286]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
37ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 294ms |

| 0 / 0 |
