powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / скорость обработки данных!!
25 сообщений из 51, страница 2 из 3
скорость обработки данных!!
    #32367966
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу индексов
Cat2 писалТаблица DOCLLIST
Составной первичный ключ
DOCTYPE, DOCDATE, DOCNUM, IDOC
Совершенно не согласен.
С какой стати дата документа должна входить в первичный ключ? Брррр... ед.
Типа будут два документа одного типа, с одним числовым номером, с одним текстовым номером, но с разными датами? Нее... это, наверное, последствия нового года.
Ключ - либо IDOC, либо связка DocType+IDOC. Если нужна уникальность по текстовому номеру - то заводится еще один (суррогатный) уникальный индекс DocNum (либо DocType+DocNum). По дате - просто неуникальный индекс.
Для состава документа - либо составной первичный ключ (первичный ключ шапки + IDRow), либо IDRow + связь между шапкой и составом по полям, входящим в первичный ключ шапки. Без связи любая выборка будет тормозить.

Все остальное уже лениво писать... В понедельник... все в понедельник...
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32367984
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох Позорныйподтягивает индексы, по ним делает выборку
тогда где он делает эту выборку???
на сервере што ли??
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32367999
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для Улыбки еще раз на пальцах.
Для того, чтобы сделать выборку (разумеется на клиенте) совсем необязательно копировать по сети всю базу (весь файл .mdb), и даже совсем не обязательно тянуть по сети отдельно взятые таблицы.
Если можно использовать индексы - аксес их использует. Тянет индексы на клиента, там (на клиенте) их (индексы) шерстит, после чего грузит с файл-сервера на клиент только нужные страницы с данными. Аксес - это, конечно, настольная БД, но все-таки чуть-чуть поумнее экселя будет :)

При правильном построении структуры базы в аксесе можно добиться хорошей производительности и в случае с сотнями тысяч записей. Но надежности в аксесе добиться гораздо сложнее. Хотя бы из этих соображений можно и нужно задуматься над переходом на какой-нибудь MS SQL. Не знаю как автору вопроса, а мне было бы жалко 780000 записей.
а если не жалко - так и перенести их куда нибудь в архив, оставить только актуальные, все летать начнет
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32368004
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. получается прямая зависимость кол-ва передаваемой информации от индексов???
хмм, а как происходит тогда обновление и удаление??? мне че-то сложно увязать его с приведенной вами схемой
объясните, тогда и это на пальцах, если не трудно, конечно
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32368006
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из двух вопросов не понял ни одного :(
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32368021
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полагаю, что под вопросами имелось в виду следующее:
1. Правда ли, что чем больше индексов, тем больше загружается сеть (потому что они все гоняются по ней)?
2. Как с той же точки зрения выглядит алгоритм обновления? И тот же вопрос про удаление. Что куда гоняется, и вообще что в каком порядке происходит?
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32368128
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4 Лох Позорный
Владимир Саныч почему-то понял правильно...
?
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32368429
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cat2 Таблица DOCLLIST
Составной первичный ключ
DOCTYPE, DOCDATE, DOCNUM, IDOC


ЛПС какой стати дата документа должна входить в первичный ключ

мдя. НАдо думать, вопрос о первичном ключе (вернее - о неком уникальном индексе, ибо в аксе затруднительно впаять Null [DOCNUM] в первичный ключ), и порядке полей в нем завязан в первую очередь на, как это не паскудно выглядит в топике из разряда "Сравнение СУБД", на интерфейс прилады. Если основная форма (формы) отбирают данные по некоторому предпочтительному набору условий, то именно от того, каким образом поля входят в эти условия. (т.к. мы "ускоряем" существующую приладу, а не разрабатываем новую). Если в структуре нет архивных таблиц, то, думается фильтр на ~100000 записей построен в 1-ю очередь по дате (если автор так ленив, чтобы разбить таблички (по типам сущностей), то он мог полениться и разбить интерфейсы, и все тянется в одну форму), а уж затем по типу, номеру и прочей лабуде. Но, с другой стороны, набор отдельных индексов не то же самое, что составной индекс. Т.ч.
ЛППо дате - просто неуникальный индекс
не катит. Именно: индекс (основной) - составной, но по основному способу фильтрации данных в главной форме (формах). И вероятно включающий дату в качестве одного из первых полей. Если есть несколько форм и несколько способов фильтрации, то не вредно иметь несколько разных индексов (еще один минус хранения всего в одной таблице - индексы то все время будут гоняться по сети и перестраиваться/писаться на диск. И будут они большими. А для каждого типа документов мог бы быть свой индекс - в зависимости от предпочтительного способа выборки именно этих сущностей).

Не вредно и в запросах посмотреть синтаксис так, чтобы индексы использовались. (если вы, к примеру пишете
Код: plaintext
 WHERE Year([aDate]) =Year(Date())

, то лучше переписать на что-нить типа
Код: plaintext
WHERE [aDate] between DateSerial(Year(Date()), бла-бла-бла) AND DateSerial(Year(Date())+ 1 , бла-бла-бла)

, и т.п.. Потому что никакие индексы не спасут, если выборка строится на функции от полей (если СУБД не строит функциональных индексов).


Да, и имейте в виду, если в Аксе определена _связь_ для таблиц с _целостностью_ (см "схема данных"), то автоматом определен вторичный ключ в деталях (не показывается в конструкторе таблиц, но в семействе индексов присутствует). Если нет - то надо определить индекс в таблице деталей по полям связи (каковой акес создал бы сам при определении связи). Если задублировали индекс (т.е. создали и связь и индекс - лишнее снесите - зачем строить и качать 2 структуры?).
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32368577
Гостья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо всем, кто сюда пишет, всё внимательно читаю, но внести ясность в некоторые вопросы, обращенные ко мне, пока нет времени..
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32372695
Aijik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч, ну Вы бы как знаток Accces (судя по профилю) и сами бы ответили, чтоли...

2 Smile

1. Правда ли, что чем больше индексов, тем больше загружается сеть (потому что они все гоняются по ней)?

Товарищи клиент-серверщики, ну вы пАрите просто. Куда ни плюнь - везде одно и то же идиотское заблуждение. Не тянется ничего ПОЛНОСТЬЮ - ни таблицы, ни индексы!!! Почему это тянутся индексы ВСЕ? Откуда такой вывод? Перечитайте выступление Л.П. Тянутся нужные для оптимизации запроса. Л.П. вам же объяснил как происходит выборка по индексам. Зачем для этого ВСЕ индексы тянуть? В Access и Фоксе есть оптимизатор (в первый перекочевал из второго). Rushmore зовётся. Он и решает, получая SQL-инструкцию, какие индексы тянуть и с каких таблиц. Далее - по вытянутым индексам, в соответствии с запрошенным в SQL-инструкции выражением, определяются нужные записи, и вытягивабтся на клиента ТОЛЬКО ОНИ.


2. Как с той же точки зрения выглядит алгоритм обновления? И тот же вопрос про удаление.
Никаких страшных заморочек и тут нет. Я не знаю как в Access на низком уровне (на 99% уверен, что абсолютно так же), а в фоксе источник выборки (та часть (я подчёркиваю - имеено _часть_) источника, которая была вытянута из сети на клиента) сидит в памяти, она же и изменяется при обновлении/удалении. Синхронизацией её с сетью занимается сам движок Фокспро, с определенным интервалом опрашивая сетевой источник и синхронизируясь с ним.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32373223
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AijikВладимир Саныч, ну Вы бы как знаток Accces (судя по профилю) и сами бы ответили, чтоли...
Для недогадливых: раз я не ответил, значит не знаю.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32373764
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Aijik

>... Не тянется ничего ПОЛНОСТЬЮ - ни таблицы, ни индексы!!! ... Перечитайте выступление Л.П.

Перечитываем внимательно:

Лох Позорный> Если можно использовать индексы - аксес их использует. Тянет индексы на клиента, там (на клиенте) их (индексы) шерстит, после чего грузит с файл-сервера на клиент только нужные страницы с данными.

Т.е. тянет индекс на клиетна именно ПОЛНОСТЬЮ и там шерстит. Вообще с трудом представляю, какой смысл в частично вытащенном индексе. А индексы бывают большие, это ИМХО и имел в виду Smile: больше индексов - больше трафик, заранее неизвестно нужен ли индекс, может дешевле было бы проскинировать таблицу целиком.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32373852
Aijik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 c127

Ваша фраза:
c127Т.е. тянет индек с на клиетна именно ПОЛНОСТЬЮ и там шерстит
моя фраза:
AijikНе тянется ничего ПОЛНОСТЬЮ - ни таблицы, ни индек сы !!!
фраза Владимир Саныча:
Владимир Санычпотому что они все гоняются по ней
Вы разве не усмотрели разницу между озвученными понятиями "индекс" и "(все) индексы"? Что такое "тег" составного индекса кто помнит? В Access, насколько мне известно, понятия "тег" не существует. Просто "индекс" и "индексы" таблицы. Ну пусть так - сути это не меняет.
Кто все равно не понял - пример:
Допустим, есть таблица Cities
Допустим есть поля:
Name, Country, Population, Location, TimeZone, Budget
Для простоты примера допустим, что по ним всем есть индексы

Выборка на клиенте:
SELECT * FROM Cities WHERE Cities.Country="France"
Из сети тянется индекс Country. Не все 5 индексов, а ТОЛЬКО индекс Country (!!!). Тянется полностью (никто о частичном вытягивании индекса не говорил, упаси боже). В индексе находятся адреса записей с Country="France". Тянутся на клиента только они. Всё.. трафик минимально возможный для Файл-сервера и его алгоритма оптимизации

c127А индексы бывают большие, это ИМХО и имел в виду Smile: больше индексов - больше трафик,
Я бы перестроил это заявление. Сложнее выборка - больше индексов затрагивается - больше трафик. "Большие" индексы затрагиваются тогда, когда именно они нужны. ВСЕГДА ли они нужны? Нет! Не раздувайте проблему из ничего. Не надо искать черную кошку в темной комнате ;)

c127заранее неизвестно нужен ли индекс, может дешевле было бы проскинировать таблицу целиком.
Вообще-то сканирование в Файл-сервере тоже оптимизируется (по крайней мере в Фоксе). По тем же самым законам, ибо работает тот же самый Rushmore (который можно отключать при желании).
Насчет "может дешевле было бы...". Упомянутая Вами ситуация возможна. Индекс тормозит работу выборки (ибо увеличивает трафик), если под под критерий выборки попадает очень большой процент записей, сопоставимый с общим количеством записей в таблице. Итого, в такой ситуации мы получаем:
1. Выкачку индекса на клиента
2. Выкачку почти всех записей на клиента.
Это конечно же "дороже", чем "безындексное":
1. Выкачка всех записей на клиента
2. Отсечение малого количества ненужных на клиенте
Во втором варианте и трафик ниже и скорость выше (по причине трафика опять же).

У любой медали 2 стороны и идеального ничего не бывает. Но обход таких ситуаций - это уже дело прогера
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32373962
x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
x
Гость
2 c127
Т .е. тянет индекс на клиетна именно ПОЛНОСТЬЮ и там шерстит. Вообще с трудом представляю, какой смысл в частично вытащенном индексе.

2 Aijik
Из сети тянется индекс Country. Не все 5 индексов, а ТОЛЬКО индекс Country (!!!). Тянется полностью (никто о частичном вытягивании индекса не говорил, упаси боже).


Вы проверяли, что ташится весь индекс, или это умозрительные построения ?

Если умозрительно, то наоборот - нет никакого смысла тащить весь индекс.
Индекс организован в виде дерева. Вытаскивается страница с вершиной, сравнивается с заданным значением, вытаскивается следующая нужная станица. В результате из индекса читается всего несколько страниц, а не весь индекс.

И никакой разницы в работе по сети или на локальной машине. Просто обращения на чтение страницы из файла идут либо к локальному диску либо к сетевому.

Для тех, кто без этого не понимает - это мое личное мнение.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32374168
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На счет того что тянется не весь индекс- это факт.. Тянутся только нужные страницы интекса. Если таблица очень большая - и спуск по дереву к нужной странице индекса - это несколько запросов по сети. А При C/S - это всегда 1 запрос.
Самый кайф - это когда нужных индексов нету и - table scan по сети.:)
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32374316
Гостья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xИ никакой разницы в работе по сети или на локальной машине

Ооооооооооооо, вот только такого мне не говорите!!
Я в секундах засекаю выполнение некоторых процедур, так вот, если по сети, то раз в 4-5 дольше.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32374826
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Гостья
Правильно....)))
Нажал клавишу - реакция должна быть мгновенной...
Или хотябы вылетать диалог: "Можете пойти поставить чайник"
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32374919
Aijik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 x, gardenman
x Вытаскивается страница с вершиной, сравнивается с заданным значением, вытаскивается следующая нужная станица. В результате из индекса читается всего несколько страниц, а не весь индекс.

Это мне известно

С т.з. о частичной выкачке индекса соглашусь. Тесты подтверждают это. Вы правы, коллеги, конечно же - индекс тоже тянется частично. Это даже еще больше "в тему" ;)
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32375023
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще для всевозможных отчетов я б рекомендовал делать промежуточные
таблицы результатов. Ежедневно, например ночью, запускается некий процесс, который их готовит. А отчеты уже получать по ним.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32375072
Гостья
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 gardenman
Сомнительно, чтобы это устроило хотя бы даже небольшую часть заинтересованных в проблеме..

В большинстве случаев нужны "текущие" данные. Как говорит мой директор, "on-line" ;)

А еженедельные отчеты, например, начальство хочет сразу, как только занесена в компьютер последняя "циферка"... Вот так.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32375101
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 x

>Вы проверяли, что ташится весь индекс, или это умозрительные построения?

Ни то ни другое. Пошел по ссылке и прочитал. И Вам советую читать внимательнее, сразу многие вопросы снимутся.

2 Aijik
>Вы разве не усмотрели разницу между озвученными понятиями "индекс" и "(все) индексы"?

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

Очевидно что ни одному нормальному человеку (даже разработчикам акцеса) в голову не придет тянуть на клиента сразу все индексы относящиеся к таблице, поэтому по-видимому Smile не имел в виду что тянутся одновременно все индекы из базы (таблицы), просто неудачно выразился.
А так я согласен.

>Я бы перестроил это заявление. Сложнее выборка - больше индексов затрагивается - больше трафик. "Большие" индексы затрагиваются тогда, когда именно они нужны. ВСЕГДА ли они нужны? Нет! Не раздувайте проблему из ничего.

Так проблема в том, что при работе клиента одной выборкой дело не обходится, посмотрите на свой-же код. Очень часто идут несколько запросов к совершенно разным таблицам, причем в процессе работы клиента ситуация постоянно повторяется. Поэтому сводить вопрос к единственному запросу некорректно. Вообще рано или поздно выборка произойдет по любому индексированному полю или полям в базе (иначе поле проиндексировано зря, это ошибка; исключение - уникальные индексы и внешние ключи, они нужны еще и для поддержания целостности и через клиента могут не прокачиваться). Поэтому со временем ВСЕ индексы из базы пройдут через клиента. В этом смысле Smile прав: на клиента бутут вытащены все индексы, но в разное время. Напоминаю, мы говорим о клиент-сервере и с точностью до утверждения Лоха Позорного.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32375214
Aijik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127
Я усмотрел только что Лох Позорный, на .... поэтому по-видимому Smile не имел в виду что .... А так я согласен.
Ну и ладненько. Будем считать, что вопрос о вытягивании индекса на клиента на этом закрыт ;)

c127Вообще рано или поздно выборка произойдет по любому индексированному полю или полям в базе
Вывод Вы какой из этого делаете, я не совсем понял? Заметьте, Вы говорите "рано или поздно". То, что части таблицы подтягиваются на клиента постепенно, по мере надобности, что в этом плохого? Чем не принципы всеми обожаемого клиент-сервера? ;)) Суть данного обсуждения (по крайней мере как я это понимаю) - это "пиковый" трафик при файл-серверной архитектуре. Именно это ставится обычно в упрек. Я утверждаю, что эта проблема непомерно раздута. Я не говорю, что трафик в Файл-сервере ниже, это не так, конечно же, ниже чем в клиент-сервере трафик сделать просто нельзя, ибо в последнем трафик при грамотном проектировании самый минимальный из вообще возможных, т.к. возвращается "чистый" результат, созданный сервером. В Файл-сервере же результат еще надо добыть (добыть на клиенте... для чего и перетягиваются на него индексы)... Однако при всем при этом проблема в Файл-сервере не имеет таких масштабов, которые ей обычно приписывают те, кто с принципами его оптимизации не знаком вообще. Самое расхожее: "Файл-сервер вытягивает по сети таблицы полностью". Расшифровываю подтекст этого заявления. "Файл-сервер тянет на клиента те данные, которые нахрен для работы не нужны". Глупость - еще раз повторяю... Не вытягивает он то, что для работы не нужно. Но... при условии грамотного применения возможностей оптимизации. При неграмотном - извините, и клиент-сервер положить можно...

c127исключение - уникальные индексы и внешние ключи, они нужны еще и для поддержания целостности и через клиента могут не прокачиваться.
SELECT...JOIN так или иначе выкачает ключи, опять же по причинам оптимизации

c127Напоминаю, мы говорим о клиент-сервере
Напоминаю, мы говорим о файл-сервере ;)
c127и с точностью до утверждения Лоха Позорного.

Тогда я напомню с чего всё началось:
Smile укорочение за счет нормализации базы, созданием таблиц-справочников?
ну, да, конечно, но в запросе будет учавствовать уже совсем другое кол-во таблиц, и все это будет обрабатываться на клиенте, так что тут еще палка о двух концах - иногда в акцессе лучше оставить данные денормализованными, именно с точки зрения скорости обработки (вернее закачки на клиент и дальнейшей обработки), опять же все зависит от задачи
Со Smile совершенно справедливо заспорил Лох Позорный, где и объяснил основной принцип оптимизации выборок в Файл-сервере и что глупо отказываться от нормализации по причинам непонимания потрохов ФС.
Лох Позорный Для Улыбки еще раз на пальцах.
Для того, чтобы сделать выборку (разумеется на клиенте) совсем необязательно копировать по сети всю базу (весь файл .mdb), и даже совсем не обязательно тянуть по сети отдельно взятые таблицы.
Если можно использовать индексы - аксес их использует. Тянет индексы на клиента, там (на клиенте) их (индексы) шерстит, после чего грузит с файл-сервера на клиент только нужные страницы с данными. Аксес - это, конечно, настольная БД, но все-таки чуть-чуть поумнее экселя будет :)
Ответ Smile говорит о том, что он этого не знал:
Smileтогда где он делает эту выборку???
на сервере што ли??
....
т.е. получается прямая зависимость кол-ва передаваемой информации от индексов???
хмм, а как происходит тогда обновление и удаление??? мне че-то сложно увязать его с приведенной вами схемой
объясните, тогда и это на пальцах, если не трудно, конечно


Собственно, в качестве продолжения этой части дискуссии и появился мой первый пост
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32375523
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Гостья
Зря вы так, любезная...
Я понимаю, что нужны всегда последние циферки...) но однако..
Если взять, например такую вещь, как остаток чего-то на складе
на конкретную дату.
Два варианта расчета - весь приход-весь расход = остаток
Или просто - взять остаток из журнала остатков на конкретный день.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32376502
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Aijik

>SELECT...JOIN так или иначе выкачает ключи, опять же по причинам оптимизации

join в данном случае ни при чем. Я хотел сказать, что внешний ключ еще не позволяет добавлять в дочернюю таблицу записи, у которых нет ссылки на родительские, к оптимизации это прямого отношения не имеет. Не знаю индексирует ли такие поля акцес, но это не важно. С уникальным индексом аналогичная ситуация.

>Напоминаю, мы говорим о файл-сервере ;)

Да, конечно, это я по-привычке.

>Вывод Вы какой из этого делаете, я не совсем понял? Заметьте, Вы говорите "рано или поздно".

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

>То, что части таблицы подтягиваются на клиента постепенно, по мере надобности, что в этом плохого?

Ничего плохого в этом нет, кроме того, что сеточка все-таки грузится, пускай и не сильно. Что с файл сервером ни делай - страдает сетка. Клиент-серверу в данном случае легче, ему вообще не нужно оптимизировать сетевой трафик. Потом если вытащил индекс на клиент d (полностью или частично, не важно) - блокируй таблицу, иначе положение записи может измениться другим клиентом g и индекс находящийся у клиента d перестанет соответсвовать таблице. Или клиенты начнут ругаться, чей индекс более правильный.

Я вообще не понимаю, зачем сейчас использовать ФС, если есть очень неплохие, бесплатные и к тому же легкие (работают даже на палмах и не требуют инсталляции) SQL сервера.
...
Рейтинг: 0 / 0
скорость обработки данных!!
    #32376581
Aijik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 c127

c127join в данном случае ни при чем... Я хотел сказать, что внешний ключ еще не позволяет добавлять в дочернюю таблицу записи, у которых нет ссылки на родительские... к оптимизации это прямого отношения не имеет
Имеет прямое. В Visual FoxPro точно. За Accces пусть авторитетно скажут те, кто с ним работает. Уверен, что скажут они то же самое. Поддержание ссылочной целостности реализовано за счет активного использования соответствующих индексных ключей. Т.е. _оптимизировано_.
Вот кусок стандартного триггера на каскадное удаление, который генерит Visual FoxPro на основе штатного генератора RIBuilder, отвечающего за поддержку ссылочной целостности в Базе данных

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 Открытие фоксом дочерней таблицы с активным тегом (индексом) menulst_id - внешний ключ
lcChildWkArea=riopen( "menus" , "menulst_id" )
.............
SELECT (lcChildWkArea)
* SEEK - команда работающая только с индексом. Ищется первое вхождение 
* родительского ключа во внешнем ключе дочерней таблицы
SEEK lcParentID
* Сканирование всех дочерних записей по внешнему ключу и их удаление
SCAN WHILE MENULST_ID=lcParentID AND llRetVal
  pnChildRec=recno()
  pcChildID=MENULST_ID
  pcChildExpr= "MENULST_ID" 
  llRetVal=ridelete()
ENDSCAN get all of the menus records


c127Не знаю индексирует ли такие поля акцес, но это не важно.
Очень даже важно, иначе на больших таблицах будет тормоз.

c127join в данном случае ни при чем
Я имел в виду то, что поскольку SELECT использует индексы, и поскольку JOIN - операция производящаяся по ключам, то эти индексы используются оптимизатором в первую очередь, т.е. тянутся по сети

Что с файл сервером ни делай - страдает сетка. Клиент-серверу в данном случае легче, ему вообще не нужно оптимизировать сетевой трафик.
Это да. Так и есть

Потом если вытащил индекс на клиент d (полностью или частично, не важно) - блокируй таблицу, иначе положение записи может измениться другим клиентом g и индекс находящийся у клиента d перестанет соответсвовать таблице.
Что значит "положение записи может измениться"? Значение индекса изменится всмысле? Ну и нехай изменяется. Синхронизация с сетевым источником в Файл-сервере происходит автоматом по определенному интервалу - я уже писал об этом. Зачем что-то блокировать? Тем более ТАБЛИЦУ. Для просмотра вообще ничего блокировать не надо. Для редактирования - надо, но только не таблицу, а нужную запись/записи. Как раз для того, чтобы разрулить юзеров, желающих править одно и то же.

Я вообще не понимаю, зачем сейчас использовать ФС, если есть очень неплохие, бесплатные и к тому же легкие (работают даже на палмах и не требуют инсталляции) SQL сервера.
Если Вы не против, я уклонюсь от ввязывания во флейм по поводу ФС vs. КС. Раз первый еще не подох, а активно развивается (Visual FoxPro 9 обещают в конце года и с Access в MS никто не собирается завязывать), то значит рынку это надо... Как только рынку это будет не надо - КС вытеснит ФС окончательно. Уж кто-кто, а MS точно за $ мать родную продаст, если почуствует, что его Файл-серверные направления приносят только убытки. И вообще "неплохие, бесплатные" - это довольно подозрительно :) Всё оно обычно бесплатно до первой же банальности, которую система делать будет не уметь, а тебе оно будет ОЧЕНЬ надо...
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / скорость обработки данных!!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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