|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Подскажите, от чего в большей степени зависит скорость работы с данными?? 1. Формат данных (SQL Server, Access) 2. или Организация (структура) данных По поводу 2 пункта: у меня в базе (Access) две основные таблицы - DOCLIST и DOCrows (шапки документов и строки соответственно). Растут постоянно!!!! Документы делятся на разные типы - накладные расходные, возвратные, счета, заказы, остаток, приходные от поставщика и т.п. НО все документы - в одной таблице. В DOCLIST'е ок. 65000 записей, в DOCrows'е - ~ 780000 Скорость обработки данных по сети убийственная (да и на локальной машине не очень ) СПАСЁТ ли (в смысле скорости) SQL Server? Или надо разбить таблицу DOCLIST (и DOCrows соотв.) на столько, сколько имеется типов документов? Вообще-то мне этот вариант ну оооочень не нравится. Криво как-то.. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2003, 20:34 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
--Криво как-то.. :( кому-то вариант и с одной таблицей может показаться самым правильным. MS SQL будетЮ конечно, обрабатывать это несколько быстрее, но правильная организация базы, как правило, - весьма необходимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2003, 20:45 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
"кому-то вариант и с одной таблицей может показаться самым правильным." Да. Мне. :-) Мне мой вариант кажется очень даже правильным. Просто нашелся один человек, который сказал, что это есть плохо - одна таблица, но возможно, он неправ! Так я вроде более-менее подробно описала организацию данных, так правильная она или нет?? Индексы, связи, "все дела" - вроде всё грамотно сделано. Просто таблица растет очень быстро, так и отдельные несколько таблиц будут расти, а данные в запросах объединять все-таки проще... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2003, 20:54 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
SQL server поможет. 1. Файл-сервер (Access) тащит всю базу на клиента и там его обрабатывает, наверника у тебя именно от этого тормоза, т.к. запросы у тебя явно простенькие. Как вариант понатыкай индексов явно их не хватает раз тормозит на таких объемах (детских) Но лучше переходи на SQL сервер, хотя бы для того чтоб получить экспириенс, а потом зарплату ;) 2. Почитай все таки теорию, хотябы то что грится про 4 нормальные формы, там все ответы на вопросы по организации данных . (наверника на этом сайте есть) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 00:19 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Если ты будешь работать с sql server -ом старым файл-серверным способом, т.е. тянуть на клиента все данные, а потом их разгребать - то тут любая СУБД и любая сеть помрет. При перестроеке запросов, навешивании индексов тебе даже mySql даст выигрыш ~10% ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 05:13 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
авторВ DOCLIST'е ок. 65000 записей, в DOCrows'е - ~ 780000 Это не те объемы при которых можно было бы задуматься про секционированные представления, если переходить на сиквел. авторСкорость обработки данных по сети убийственная (да и на локальной машине не очень ) Это ни о чем не говорящая фраза без указания что за обработка, что за сеть, что за железо. авторСПАСЁТ ли (в смысле скорости) SQL Server? ЕСли переписать заново алгоритм работы с данными, то прирост производительности должен быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 10:16 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Алгоритмы работы с данными нипричем, совершенно. производительность любого приложения для БД на 90% зависит от структуры данных - как разложены они по таблицам, какие есть индексы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 10:48 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
2 gardenman авторАлгоритмы работы с данными нипричем, совершенно. Ну может я не правильно выразился. Имелся в виду подход к обработке данных. Написание хп, абстрагирование клиента от структуры данных и т.п. Так что структура данных - это еще не все. Это не Access. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 11:34 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Помница в те времена далекие) 1996,97 когда еще машина на 486 - считалось круто, у меня 15 юзеров сидело на новеловском сервере. В самой большой таблице 1 500 000 записей, сеть - 10МБ, приложение написано на CLARION, отклик чуть больше 1 секунды... Вот так вот.) Причем хранили образцы подписей клиентов в графическом виде) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 12:23 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Таблица DOCLLIST Поля: IDDOC, счетчик (код записи) DOCTYPE, числовой (тип документа) DOCNUM, текстовый (номер документа) DOCDATE, дата/время (дата по документу) FACTDATE, дата/время (дата по факту) ORG1, числовой (организация, отпускающая товар) ORG2, числовой (организация-получатель товара) ORG_PAYER1, числовой (организация-плательщик со стороны продавца) ORG_PAYER2, числовой (организация-плательщик со стороны покупателя) DISCOUNT, числовой (скидка) PKORDERNUM, текстовый (номер приходно-кассового ордера) OSNOVANIE, текстовый (основание для выписки документа) PACKAGE, числовой (всего мест по накладной) SOURCEIDDOC, числовой (код записи парного документа) DELIVERDATE, дата/время (дата доставки заказа - для заказов) DELIVERTIME1, дата/время (время1 доставки заказа) DELIVERTIME2, дата/время (время2 доставки заказа) VALUTE, числовой (код валюты - рубль default) ADDRECDATE, дата/время (дата добавления записи) FORRETAIL, Логический FORLOOK, Логический Индексы: IDDOC (PrimaryKey) DOCTYPE ORG1 ORG2 DOCNUM PKORDERNUM SOURCEIDDOC VALUTE Таблица DOCrows IDDOC, IDROW (PrimaryKey), PRODUCT, QTY, RATE, TAXROW (проиндексированы IDDOC, IDROW, PRODUCT) А вот запросы у меня не такие уж простенькие :((( И железо и сеть вполне приемлемые, думаю, не о них здесь речь (есть и 3 и 4 пни). Вопрос: Из VB6 строю инструкцию SQL (пока к БД Access, а в принципе вопрос про SQL Server) - это файл-серверный способ? Эту же инстукцию запускаю типа cn.execute (имя хранимой процедуры) - это клиент-серверный способ? Спасибо за ответы на наивные вопросы... С новым годом всех.. =)) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 12:26 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
2 gardenman автортаблице 1 500 000 записей, сеть - 10МБ, приложение написано на CLARION, отклик чуть больше 1 секунды... Вот так вот.) ЧТо это за характеристика такая - просто отклик? Без указания конкретики грош цена таким цифрам. Если это выборка 1 записи - то это долго. И мы не пальцем деланные и под новелом с Clipperом работали на ARCNet (если кто не помнит 2,5 Мb). И то же все летало. Но речь то ведь не об этом. 2 гостья авторИз VB6 строю инструкцию SQL (пока к БД Access, а в принципе вопрос про SQL Server) - это файл-серверный способ? Эту же инстукцию запускаю типа cn.execute (имя хранимой процедуры) - это клиент-серверный способ? В последнем случаи все будет зависеть от того, что это за хп. Если в ней вы написали SELECT * FROM Table1, то это не клиент-серверный способ. Основной смысл двухзвенки (про N-звенку не будем) - перенос обработки данных на серверную сторону. Если вы храните тока документы и постоянно поним считаете (не имея предрасчитанных итогов, например, типа регистра складских остатков + оборотов за месяц) то быстродействие вашей системы будет обратнопропорционально объему обрабатываемых данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 13:31 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
отклик - это одна проводка, плюс полностью перерисовка экрана... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 15:25 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Не нравятся мне Ваши индексы. Структура тоже. Но пока поговорим про индексы Я бы предложил такие Таблица DOCLLIST Составной первичный ключ DOCTYPE, DOCDATE, DOCNUM, IDOC Таблица DOCrows Составной первичный ключ IDDOC, IDROW Или для DOCrows у Вас именно такой составной индекси и есть? Насчет вторичных индексов трудно что-то сказать не зная конкретных надобностей. ============= Пока Вы работаете с файл-сервером, которым является Access, любые Ваши запросы будут "файл-серверными" . Это сильно упрощенный ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2003, 19:44 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Что-то все говорят о СУБД, структуре базы и никто не вспомнил о железе и программном окружении. Эти вещи надо рассматривать в первую очередь. Что за железо применяется? Является ли СУБД (MSAccess или что там еще) единственным запущенным в ОС приложением? Еще быстродействие зависит от настройки самой ОС (файл подкачки, приоритет процессов). Иначе если например кроме целевого приложения на сервере запущена куча других, которые тоже требуют ресурсы, хоть заоптимизируйся - ничего хорошего не выйдет. Итак, скорость работы СУБД зависит от (в зависимости от величины показателей приоритеты могут менятся): 1. Аппаратное обеспечение (процессор, память, диски, сеть) 2. Программное окружение (ОС, другие приложения в конкурентной среде) 3. Тип выбранной СУБД (и ее настройки) и структура Базы данных 4. Кол-во одновременно работающих пользователей и тип системы (OLTP, DSS, или смешанная) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2003, 09:05 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Железо вторично, идеология первична. Неправильной идеологией можно сделать тормоза на любом железе. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2003, 10:09 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
SergSuper Железо вторично, идеология первична КнигаВначале было слово ... И сказал Господь, что это хорошо Ну это по его мнению. Некоторые считают что получилось как всегда ... |
|||
:
Нравится:
Не нравится:
|
|||
31.12.2003, 10:30 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
авторЯ бы предложил такие Таблица DOCLLIST Составной первичный ключ DOCTYPE, DOCDATE, DOCNUM, IDOC Ну вообще-то поле DOCNUM не всегода заполняется. Но в общем понятно.. авторТаблица DOCrows Составной первичный ключ IDDOC, IDROW Или для DOCrows у Вас именно такой составной индекси и есть? Да, именно так и есть. авторНе нравятся мне Ваши индексы. Структура тоже. Но пока поговорим про индексы Ой, про структуру тож чего-нибудь напишите, pls, если не трудно! И еще, мне таки не понятно, разбивать таблицу или нет?? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2004, 02:16 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Моя Киса уже умаялась смотреть концерты, а я спать пока не хочу ============================== IDDOC, счетчик (код записи) DOCTYPE, числовой (тип документа) DOCNUM, текстовый (номер документа) DOCDATE, дата/время (дата по документу) FACTDATE, дата/время (дата по факту) ORG1, числовой (организация, отпускающая товар) ORG2, числовой (организация-получатель товара) ORG_PAYER1, числовой (организация-плательщик со стороны продавца) ORG_PAYER2, числовой (организация-плательщик со стороны покупателя) DISCOUNT, числовой (скидка) PKORDERNUM, текстовый (номер приходно-кассового ордера) OSNOVANIE, текстовый (основание для выписки документа) PACKAGE, числовой (всего мест по накладной) SOURCEIDDOC, числовой (код записи парного документа) DELIVERDATE, дата/время (дата доставки заказа - для заказов) DELIVERTIME1, дата/время (время1 доставки заказа) DELIVERTIME2, дата/время (время2 доставки заказа) VALUTE, числовой (код валюты - рубль default) ADDRECDATE, дата/время (дата добавления записи) FORRETAIL, Логический FORLOOK, Логический ================= Сначала про индексы. Обычно нужна выборка по типу документа, значит первое поле - DOCTYPE. Потом, обычно, интересует период (год, квартал, месяц) - DOCDATE. Но индекс должен быть уникален. Значит для своих документов нужен DOCNUM. Правда, у входящих документов могут быть совпадающие номера. И их даже может и не быть. И посему, в конце - IDDOC. Я так понимаю, что для полей ORG* есть справочники. И это правильно. Я являюсь противником хранения процента скидки. Скидка делается при выписке и лучше просто заносить в документ высчитанную цену. Причем применяемый Вами вариант скидок слишком негибок. Ведь могут быть скидки в абсолютных суммах и скидки на часть товара по одной накладной. PACKAGE. В данном случае это лишнее. Число мест (сорри, сбегал выпил 50 грамм) имеет смысл в контексте одной накладной. Типа указания грузчикам, что бы меньше путались. Это всегда можно взять из накладной. В нормализованой базе не должно быть полей, значения которых можно получить на основании других данных из этой базы. И у Вас не тот случай, когда нужна денормализация. OSNOVANIE - если это номер договора, тогда претензий нет. Но если это in ("Покупка", "Распоряжение директора", ets), то это должно быть вынесено в справочник. SOURCEIDDOC - не понял, что это, но скорее всего должна быть таблица сопутствующих документов, со связью по IDOC VALUTE, PKORDERNUM - это должно быть в таблице оплат. Ведь по одному заказу могут оплачивать частями и разными валютами. И не только ПКО может быть. А если по безналу? DELIVERDATE,DELIVERTIME1,DELIVERTIME2 - это лишнее. Должна быть таблица заказов, со связью по IDOC =========== Даже если Вы будете (сорри, еще 50 грамм) работать на Access, укорочение длины записей даст некотрый выигрышь в скорости. Но про наилучшее ускорение нужно спросить у профи из Access. Я попробую их позвать. Ноя уверен, что снятие IDOC с первого места из Primary Key увеличит скорость аггрегитирующих запросов. (по крайней мере в SQL-серверах это так, но и Access тоже делает некоторую оптимизацию запросов) ADDRECDATE - а это очень нужно? Все равно, полный аудит работы юзеров на Access сделать можно, но муторно. FACTDATE - не понял. Это дата полного выполнения обязательств по договору? ========= Прошу прошенитя за орфографию. Я уже и в клавиатуру-то непопадаю. Баинки пора. Но еще 50 грамм выпью! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2004, 04:12 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
С новы Годом, Братья и Сестры!!! ------------------------------------- Какое страстное обсуждение! А может быть хоть кто-нибудь пояснит, что значит "медленно" - ЧТО ИМЕННО МЕДЛЕННО??? - таблицы на просмотр открываются медленно или какой-то запрос отрабатывает медленно, или процедура какая пакетной обработки - об чем, собственно, тепло дискуссии и печаль инициатора? Да и медленно - это какое время получения нервного срыва - секунды - минуты - часы- сутки - СКОЛЬКО? Уж совсем глупость спрошу - Jet какой версии пользуется для доступа, и если 4, то каков формат mdb - 97,2000,2002(XP), да, и, если можно - как насчет диаграммы - т.е. ссылочной целостности? ЗЫ tip (для 2K и далее - см MSDN )- если "медленно" открываются таблицы - откройте их в режиме конструктора, жмакните правой клавишей (мыши) в окне конструктора, из контекстного меню выберите пункт "свойства", в открывшемся окне свойств таблицы замените значение свойства "Имя подтаблицы" с [Auto] на [Нет] , после всего сохраните таблицу. ЗЫ2 Если про запросы или процедуры печаль - придется тексты в студию - а до того (запросы) неплохо сохранить в Access и отдать анализатору на ощупь - он хоть и глупый, а иногда пользу скажет... Всем удачи в новом году ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2004, 05:40 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Не вижу никакого смысла разбивать список документов на несколько таблиц. Неужели юзерам нужно видеть в списке только один тип операции? И нельзя ли пояснить, при каких именно операциях тормозит база? А то третий день идут споры вокруг непонятно чего... Создана ли связь между документами и строками? Ключи в таблицах я бы оставил как есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2004, 11:02 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Драсте... С Наступившим! По поводу сабжа и двух таблиц под Аксом... Акс - файл-сервер, который для "обработки" тянет данные на себя, при чём тянет он не целиком всю БД, а частями - таблицами, данные из которых были запрошены. Ну так вот теперь подумаем. Что для файл-сервера легче - затянуть фактически ВСЮ БАЗУ СРАЗУ (обычно данные нужны из обеих таблиц одновременно, а значит именно так и происходит), или затянуть 2 таблички из, например, десятка таблиц (в случае, если документы разнесены по разным таблицам), т.е. 1/5 от всей БД? Далее по поводу двух таблиц... Получив все необходимые данные, Jet должен будет отобрать записи не только по действительно нужному параметру (по номеру документа, по дате и т.п.), но и еще отобрать вообще сами документы, как таковые! То есть, отделить мух от котлет! Ну грубо, вместо просмотра 1/5 от 780000 (в некой отдельной таблице) записей он просматривает все 780000. С таким подходом "двух таблиц" дорога, имхо, одна - клиент-сервер... Там и сервак железом не обижен, и качать для "обработки" внутри себя ему ничё не надо, и вообще, круто :) Ну тонкости всякие... тонкости... Например, если работать из Акс2002 с форматом Акс2000, то тормоза могут быть жутчайшие... Но конкретные вопросы по Аксу не здесь... там... и вообще, хде я? --------- Ну... Я хоть и не заявленный Cat2 профи от Аксеса (таааак... любитель), ну глупостей, кажется, не наговорил :) Удачи... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2004, 11:12 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Позвольте и мне сказануть. Быстродействие зависит и от того, и от другого. 1. Структура данных должна быть правильной независмо от выбранной платформы. В Вашем случае правильная структура данных - это именно две таблицы. Все остальное (одна таблица, десять таблиц, сто таблиц) будет хуже - если не с точки зрения быстродействия, то как минимум с точки зрения логики. 2. При больших объемах данных SQL сервер должен спасти. Только тут главное - не прилинковываться к таблицам полностью, а гонять по сети только те данные, которые нужны. Для этого создаются, например, представления и т.д., но тут я не есть большой специалист. Если кто-то хочет ответить мне, то пишите в форум по Аксессу, я обитаю там. :^) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2004, 11:55 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
Если народ не возражает, то через некоторое время я перенесу этот топик в Проектирование БД. Его место там. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.01.2004, 12:55 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
оо, я тоже ляпну Cat2 Даже если Вы будете (сорри, еще 50 грамм) работать на Access, укорочение длины записей даст некотрый выигрышь в скорости укорочение за счет нормализации базы, созданием таблиц-справочников? ну, да, конечно, но в запросе будет учавствовать уже совсем другое кол-во таблиц, и все это будет обрабатываться на клиенте, так что тут еще палка о двух концах - иногда в акцессе лучше оставить данные денормализованными, именно с точки зрения скорости обработки (вернее закачки на клиент и дальнейшей обработки), опять же все зависит от задачи 4 гостья а по поводу хранения - если это однотипные документы (наклыдные: приходные, расходные и т.д.), то видимо логичнее хранить в одной таблице, как у вас, зачем разбивать-то? другое дело, например, накладные и счета-фактуры... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2004, 01:27 |
|
скорость обработки данных!!
|
|||
---|---|---|---|
#18+
О, ну вот и я до сюда дополз. Модерите меня семеро 2 Гостья В DOCLIST'е ок. 65000 записей, в DOCrows'е - ~ 780000 Цифры,близкие к критическим для аксеса. Если индексов мало (или они неправильные) - скорость выборки безобразная. Если все хорошо проиндексированно - скорость восстановления базы просто неприемлимая. На моей памяти база из двух таблиц (заголовок+данные, ~100-150тыс + ~600-800тыс записей, обе перегружены индексами) восстанавливалась по 3-5 часов. Так что с такими объемами переход от настольной базы (аксес) к чему-нибудь хотя бы более надежному - это всего лишь вопрос времени. До первого нетривиального падения. 2 ГДРГ (и заодно Нуф-Нуфу) 1. Файл-сервер (Access) тащит всю базу на клиента и там его обрабатывает Бред Причем полный бред. (Нуф-Нуфу должно быть стыдно за фразу " тянет он не целиком всю БД, а частями - таблицами ") Не тянет аксес ни всю базу, ни таблицы целиком. Если есть возможность (и надобность) - подтягивает индексы, по ним делает выборку, и потом уже тянет нужные записи. Правда, надо отметить, что индексы он подтягивает целиком. При 780000 записей один только первичный ключ будет весить несколько метров. 2 Гостья еще раз Или надо разбить таблицу DOCLIST (и DOCrows соотв.) на столько, сколько имеется типов документов? Вообще-то смотря что за данные. Исходя из фразы " Документы делятся на разные типы - накладные расходные, возвратные, счета, заказы, остаток, приходные от поставщика " - надо. Запихнуть в одну таблицу приходные документы, расходные, счета, счета, заказы, накладные, счета-фактуры, акты инвентаризации, и прочую муру - это бред. Х..ня полная. Разные сущности треба хранить в разных таблицах. Приемный акт и заказ - две совершенно не связанные между собой вещи. Отгрузка клиенту и внутренние перемещения - тоже две большие разницы. У них просто разные аттрибуты. В приемных актах нафих не нужны дата/время доставки заказа и какие-нибудь скидки. В отгрузках клиентам нафих не нужен грузоотправитель - из предположения что он один (а даже если не один - это все равно не то же самое, что грузоотправитель в приходных документах) Мухи отдельно, котлеты отдельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2004, 20:25 |
|
|
start [/forum/topic.php?fid=32&fpage=174&tid=1546674]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 457ms |
0 / 0 |