Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / классы Cache / 25 сообщений из 27, страница 1 из 2
26.11.2007, 10:11
    #34964311
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Существует 2 класса на первый взгляд полностью идентичные : структура хранения и атрибуты одни. Из Delphi вызываю запрос, также один в один и в том и в другом случае. НО работа с одним классом происходит быстро, а с другим значительно медленнее. Хотя там где медленнее, данных почти в 3 раза меньше! Что это такое может быть, подскажите,пожалуйста.
...
Рейтинг: 0 / 0
26.11.2007, 11:22
    #34964525
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Как вариант, разное хранение данных... Даи "первый взгляд" может сыграть злую шутку.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
26.11.2007, 11:26
    #34964534
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
но все реально один в один, в том числе и хранение данных
...
Рейтинг: 0 / 0
26.11.2007, 11:32
    #34964560
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Покажите классы для начала
...
Рейтинг: 0 / 0
26.11.2007, 11:46
    #34964605
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Экспортировать никак не могу, ошибка какая-то..а вы не можете мне хотя бы примерно сказать из-за чего это может быть, где искать хотя бы?
...
Рейтинг: 0 / 0
26.11.2007, 11:52
    #34964623
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Не надо экспортировать, скопируйте описание класса из студии.

А какая ошибка при экспорте?
А при компиляции ошибок нет?
...
Рейтинг: 0 / 0
26.11.2007, 12:01
    #34964651
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
При компиляции нету, а при экспорте-A fatal Cache' Server Error has occured. А в описании у меня ничегошеньки не написано(((( даже и не знаю, как быть!
...
Рейтинг: 0 / 0
26.11.2007, 12:06
    #34964675
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
persistent class User.KnigaPokypokNew extends %Library.Persistent


Public Properties


• property BezNalog As %Float
• property CorrectionFor As %Library.Integer [InitialExpression = 0;]
• property DateDoc As %String
• property DateLast As %Integer
• property DateOplati As %Integer
• property DatePrihoda As %Integer
• property DateSys As %Integer
• property INNPostav As %String
• property KPPPostav As %Library.String (MAXLEN = 11)
• property NamePostav As %String
• property NumGTD As %String
• property NumberDoc As %String
• property Organization As %Library.Integer (VALUELIST = ) [InitialExpression = 0;]
• list property PercentNDS As ZapisNDS
• property Pr0VAL As %Library.String [Calculated; Transient;]
• property Pr10NDS As %Library.Float [Calculated; Transient;]
• property Pr10VAL As %Library.String [Calculated; Transient;]
• property Pr18NDS As %Library.String [Calculated; Transient;]
• property Pr18VAL As %Library.String [Calculated; Transient;]
• property Pr20NDS As %Library.String [Calculated; Transient;]
• property Pr20VAL As %Library.String [Calculated; Transient;]
• property PrALL As %Library.String [Calculated; Transient;]
• property Strana As %String
• property SumPokup As %Float
• property ZAvansa As %Library.String
• property idFirm As %Integer
• property idOper As %String


Queries


• query DopList(Firm As %Library.Integer, DS As %Library.Integer, DF As %Library.Integer, Org As %Library.Integer)
Selects CorrectionFor As %Library.Integer
...
Рейтинг: 0 / 0
26.11.2007, 12:09
    #34964684
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
persistent class User.SellBook extends %Library.Persistent


Public Properties


• property CorrectionFor As %Library.Integer [InitialExpression = 0;]
• property DDN As %Library.String [Calculated; Transient;]
• property DateOplati As %Integer
• property DateSys As %Integer
• property DocDate As %String
• property DocNumber As %String
• property Flag As %Library.Integer [InitialExpression = 0;]
• property Organization As %Library.Integer (VALUELIST = ) [InitialExpression = 0;]
• list property PercentNDS As ZapisNDS
• property PokupINN As %String
• property PokupKPP As %Library.String (MAXLEN = 11)
• property PokupName As %String
• property Pr0VAL As %Library.String [Calculated; Transient;]
• property Pr10NDS As %Library.Float [Calculated; Transient;]
• property Pr10VAL As %Library.String [Calculated; Transient;]
• property Pr18NDS As %Library.String [Calculated; Transient;]
• property Pr18VAL As %Library.String [Calculated; Transient;]
• property Pr20NDS As %Library.String [Calculated; Transient;]
• property Pr20VAL As %Library.String [Calculated; Transient;]
• property PrALL As %Library.String [Calculated; Transient;]
• property SumSell As %Float
• property TaxFree As %Float
• property idFirm As %Integer
• property idOper As %String

Queries

• query DopList(Firm As %Library.Integer, DS As %Library.Integer, DF As %Library.Integer, Org As %Library.Integer)
Selects CorrectionFor As %Library.Integer

у этого класса есть еще методы, другие запросы, но это не относится
...
Рейтинг: 0 / 0
26.11.2007, 12:28
    #34964746
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Текст запроса вы не привели, поэтому окончательный диагноз ставить рано :) Но предварительный таков: в описаниях классов отсутствуют индексы. Если это действительно так, то скорость выполнения большинства запросов (за исключением простейших вида: select что-то from откуда-то where id = :Value) напрямую будет зависеть от объема хранимых данных. Т.е. замедление в 3 раза - это нормально. С легкостью может быть и в 33 :(
...
Рейтинг: 0 / 0
26.11.2007, 12:31
    #34964764
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Индексы есть. Текст запроса -
SELECT DISTINCT CorrectionFor
FROM KnigaPokypokNew
WHERE (((idFirm = :Firm) AND (101 <> :Firm)) OR (101 = :Firm)) AND
(DateOplati >= :DS) AND
(DateOplati <= :DF) AND
(Organization = :Org) AND
(CorrectionFor <> 0) AND
(CorrectionFor IS NOT NULL)
ORDER BY CorrectionFor
И самое интересное-то в том, что медленнее работает та база, в которой данных меньше!
...
Рейтинг: 0 / 0
26.11.2007, 13:15
    #34964963
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Не убедили :) Неизвестно, какие индексы и в каком порядке используются, пока Вы не посмотрите планы запросов. Сделайте это - и найдите "10 различий" между эффективным и неэффективным планом.
...
Рейтинг: 0 / 0
26.11.2007, 13:26
    #34965023
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Все-таки я просил привести текст класса (методы мне не нужны)
А вы скопировали только список полей. Зачем мне список полей?
Мне нужны индексы и текст запросов
...
Рейтинг: 0 / 0
26.11.2007, 13:29
    #34965035
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
И также (как посоветова Алексей Маслов), выполните эти запросы в портале управления и нажмите кнопку план. План тоже интересно посмотреть.
...
Рейтинг: 0 / 0
26.11.2007, 13:35
    #34965059
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Индексы класса SellBook для свойств : DateOplati, DateSys, DocDate, DocNumber, Flag, idFirm.
Индексы класса KnigaPokypokNew для свойств : CorrectionFor, DateLast, DateOplati, DateSys, idFirm, NumberDoc, Organization.
Текст запроса я уже указала. SellBook работает быстро, а KnigaPokypokNew - медленно.
...
Рейтинг: 0 / 0
26.11.2007, 13:51
    #34965126
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Странно, что из вас приходится вытягивать информацию.
Сейчас нужно собирать информацию из ваших сообщений (причем вы даже не выделили информацию как текст программы)
Вы ведь заинтересованы в решении проблемы. Или мы запрашиваем секретную информацию?

Еще кстати селективности нужно бы, чтобы понять, почему какой план

На мой взгляд, не видя плана запроса (который от вас просили), могу предположить, что видя
ORDER BY CorrectionFor
отптимизатор запросо решает идти по этому индексу, что является неоптимальным.
Почему он так делает - для меня загадка. В моем случае помогло только удаление индекса.
(Игра с селективностями ничего не дала).

Но это только мои предположением (пока нет плана)
...
Рейтинг: 0 / 0
26.11.2007, 14:11
    #34965211
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
прощу прощения, просто я еще новичок, что конкретно нужно для решения проблемы. И я , к сожалению, не могу выполнить план, может быть дело в том, что у нас версия Сache 4.1?
...
Рейтинг: 0 / 0
26.11.2007, 14:32
    #34965293
Daha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Всем большое спасибо!!! Получилось!! Просто удалила индекс CorrectionFor)))))
...
Рейтинг: 0 / 0
26.11.2007, 15:06
    #34965429
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Первый раз слышу что удаление индекса ускоряет обработку данных класса
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
27.11.2007, 06:41
    #34966908
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
В 4.1 о плане можно догадываться только глядя на скомпилированный код запроса.
Как посмотреть план, записанный человеческими словами в каше 4.1 - я не знаю.
Но мы не знали, что у вас 4.1

А удаление индекса очень даже может ускорить работу запроса.
1. если неправильно рассчитаны селективности
2. если по индексированному полю есть сортировка.
В каше 5 по крайней мере если по индексированному полю есть сортировка, каше выберет его, даже если по этому полю нет фильтра. Почему так сделано - для меня загадка.

например запрос типа select * from table1 where date=? order by summa
пойдет по индексу суммы, а не даты (и повесит процесс). Побороть это удалось только удалив индексы по таким полям.
...
Рейтинг: 0 / 0
27.11.2007, 08:31
    #34967000
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Однако!
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
27.11.2007, 10:49
    #34967302
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Блок А.Н.например запрос типа select * from table1 where date=? order by summa
пойдет по индексу суммы, а не даты (и повесит процесс). Побороть это удалось только удалив индексы по таким полям.

select * from table1 where date=? and date>0 order by summa
...
Рейтинг: 0 / 0
27.11.2007, 11:16
    #34967388
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Григорий, поясните?
...
Рейтинг: 0 / 0
27.11.2007, 11:57
    #34967584
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Наверное изменение условия помогает в этой проблеме :)
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
27.11.2007, 14:18
    #34968303
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
классы Cache
Лень косячить классы, чтобы это выяснить.
И почему именно такое изменение условия?
Именно знак<> побуждает компилятор запросов выбрать проход по нужному индексу?
В общем, ничего не понятно
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / классы Cache / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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