powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по запросу через Firebird ADO.NET Data Provider
22 сообщений из 47, страница 2 из 2
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647935
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам1. Для чего "разбираешь", цель какая ?
2. Автор в пределах досягаемости ?

1. Руководитель поставил задачу
2. Да
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647936
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar> 1. Руководитель поставил задачу
> 2. Да

1. Какую задачу-то? Выводить в консоль 800 записей?
2. Дык заряди его, пусть облагораживает свой г-код.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647942
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамGallemar> 1. Руководитель поставил задачу
> 2. Да

1. Какую задачу-то? Выводить в консоль 800 записей?
2. Дык заряди его, пусть облагораживает свой г-код.

1. Разобраться, что влияет на вывод записей по порциям
2. Не могу, это мой руководитель :)
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647949
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647961
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

попробуй добавить в connectionString
Код: plaintext
fetch size=1000

Код: c#
1.
2.
3.
....
string connectionString = "User=SYSDBA;Password=masterkey;Database=s-market.fdb;DataSource=srv-250;Port = 3050; Dialect = 1; Charset = WIN1251; Role =; Connection lifetime = 30; Pooling = true;MinPoolSize = 0; MaxPoolSize = 50; Packet Size = 8192; ServerType = 0;fetch size=1000;";
....


по умолчанию там как раз 200
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647965
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

если что в FbConnectionStringBuilder это определено так

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
[Category("Advanced")]
[DisplayName("FetchSize")]
[Description("The maximum number of rows to be fetched in a single call to read into the internal row buffer.")]
[DefaultValue(FbConnectionString.DefaultValueFetchSize)]
public int FetchSize
{
    get { return GetInt32(FbConnectionString.DefaultKeyFetchSize, FbConnectionString.DefaultValueFetchSize); }
    set { SetValue(FbConnectionString.DefaultKeyFetchSize, value); }
}
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647970
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

впрочем если бы запрос был быстрым ты бы и не заметил паузы. Просто оригинальный запрос долго извлекает 200 записей, а твой второй тестовый запрос быстро.
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647973
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

меня с самого начала резанули слова Gallemar, что "таких параметров нет", и ссылка на какой-то пример на сайте.
Мне как-то надо было искать параметры транзакций в этом .net, я его исходники смотрел, там параметров хренова туча.
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39647990
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

я бы на твоём месте не этот параметр крутил, а оптимизировал запрос, потому что для нормально написанного запроса ты этой паузы не заметишь.
По самому запросу:
1. все левые джойны собери в конце запросы, т.е. ниже внутренних
2. помедитируй над заменой in

Короче сделай сначала чтобы в IBE запрос пулей отрабатывал, а потом только в свой код его пиши. Возможно и fetchsize трогать не придётся
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648000
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Денис, большое спасибо за помощь.
p.s. передал нашим программистам, что они лохи и делфисты их вчистую уделали :)
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648019
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvСимонов Денис,

меня с самого начала резанули слова Gallemar, что "таких параметров нет", и ссылка на какой-то пример на сайте.
Мне как-то надо было искать параметры транзакций в этом .net, я его исходники смотрел, там параметров хренова туча.
Я смотрел свойства FbConnection и FbDataReader, fetch size там не увидел, в исходники не пришло в голову лазить
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648023
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПо самому запросу:
1. все левые джойны собери в конце запросы, т.е. ниже внутренних
2. помедитируй над заменой in

Переделал, получил
План
PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT))
PLAN JOIN (JOIN (JOIN (PRK INDEX (PRICEKIND_IDX2), PR INDEX (DISCCARD_IDX_PRICEKIND), OST INDEX (PK_OSTDAILY)), CARDS INDEX (PK_CARDSCLA)), MES INDEX (PK_MESURIMENT))

------ Информация о производительности ------
Время подготовки запроса = 32ms
Время выполнения запроса = 1s 359ms
Среднее время на получение одной записи = 1,70 ms
Current memory = 20 959 080
Max memory = 28 795 752
Memory buffers = 1 024
Reads from disk to cache = 10 150
Writes from cache to disk = 26
Чтений из кэша = 470 488
против
План
PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT))
PLAN JOIN (JOIN (JOIN (PRK INDEX (PRICEKIND_IDX2), PR INDEX (DISCCARD_IDX_PRICEKIND), OST INDEX (PK_OSTDAILY)), CARDS INDEX (PK_CARDSCLA)), MES INDEX (PK_MESURIMENT))

------ Информация о производительности ------
Время подготовки запроса = 32ms
Время выполнения запроса = 1s 359ms
Среднее время на получение одной записи = 1,70 ms
Current memory = 20 959 080
Max memory = 28 795 752
Memory buffers = 1 024
Reads from disk to cache = 10 150
Writes from cache to disk = 26
Чтений из кэша = 470 488

А вот от in я не избавлюсь, увы
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648026
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс
План
PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT))
PLAN JOIN (JOIN (JOIN (PRK INDEX (PRICEKIND_IDX2), PR INDEX (DISCCARD_IDX_PRICEKIND), OST INDEX (PK_OSTDAILY)), CARDS INDEX (PK_CARDSCLA)), MES INDEX (PK_MESURIMENT))

------ Информация о производительности ------
Время подготовки запроса = 32ms
Время выполнения запроса = 1s 359ms
Среднее время на получение одной записи = 1,70 ms
Current memory = 20 959 080
Max memory = 28 795 752
Memory buffers = 1 024
Reads from disk to cache = 10 150
Writes from cache to disk = 26
Чтений из кэша = 470 488


против
План
PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT))
PLAN JOIN (JOIN (JOIN (JOIN (OST INDEX (PK_OSTDAILY), CARDS INDEX (PK_CARDSCLA)), PR INDEX (PK_DISCCARD)), PRK INDEX (PK_PRICEKIND)), MES INDEX (PK_MESURIMENT))

------ Информация о производительности ------
Время подготовки запроса = 31ms
Время выполнения запроса = 8s 969ms
Среднее время на получение одной записи = 11,21 ms
Current memory = 21 722 104
Max memory = 28 795 752
Memory buffers = 1 024
Reads from disk to cache = 142 144
Writes from cache to disk = 0
Чтений из кэша = 3 110 100
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648033
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО, классный пример ДЕ на оптимизацию.
Хотя надо ещё запросы сравнить, не выкинул
ли он оттуда чего лишнего.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648042
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамИМХО, классный пример ДЕ на оптимизацию.
Хотя надо ещё запросы сравнить, не выкинул
ли он оттуда чего лишнего.

Было

select OST.ARTICUL, CARDS.NAME, OST.QUANTITY, PR.PRICE_RUB
from OSTDAILY OST
left join CARDSCLA CARDS on OST.ARTICUL = CARDS.ARTICUL
join DISCCARD PR on PR.ARTICUL = OST.ARTICUL
join PRICEKIND PRK on PRK.ID_PRICEKIND = PR.PRICE_KIND
left join MESURIMENT MES on CARDS.MESURIMENT = MES.ID_MESURIMENT
where OST.PLACE_INDEX in (select CLIENT_INDEX
from TH_CLASSBYCLIENT
where TH_CLASSIF = 69) and
OST.OST_DATE = 'today'
and
FILIALINDEX_PRICEKIND = 69 and
KIND = 0 rows 800

Statement Plan
--------------
PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT))
PLAN JOIN (JOIN (JOIN (JOIN (OST INDEX (PK_OSTDAILY), CARDS INDEX (PK_CARDSCLA)), PR INDEX (PK_DISCCARD)), PRK INDEX (PK_PRICEKIND)), MES INDEX (PK_MESURIMENT))


стало
select OST.ARTICUL, CARDS.NAME, OST.QUANTITY, PR.PRICE_RUB
from OSTDAILY OST
join DISCCARD PR on PR.ARTICUL = OST.ARTICUL
join PRICEKIND PRK on PRK.ID_PRICEKIND = PR.PRICE_KIND
left join CARDSCLA CARDS on OST.ARTICUL = CARDS.ARTICUL
left join MESURIMENT MES on CARDS.MESURIMENT = MES.ID_MESURIMENT
where OST.PLACE_INDEX in (select CLIENT_INDEX
from TH_CLASSBYCLIENT
where TH_CLASSIF = 69) and
OST.OST_DATE = 'today'
and
FILIALINDEX_PRICEKIND = 69 and
KIND = 0 rows 800

Statement Plan
--------------
PLAN (TH_CLASSBYCLIENT INDEX (PK_TH_CLASSBYCLIENT))
PLAN JOIN (JOIN (JOIN (PRK INDEX (PRICEKIND_IDX2), PR INDEX (DISCCARD_IDX_PRICEKIND), OST INDEX (PK_OSTDAILY)), CARDS INDEX (PK_CARDSCLA)), MES INDEX (PK_MESURIMENT))


FB 2.5.3
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648067
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЯ смотрел свойства FbConnection и FbDataReader, fetch size там не увидел, в исходники не пришло в голову лазить

а вот мне пришло. Потратил целых 2 минуты.

Гаджимурадов Рустам ИМХО, классный пример ДЕ на оптимизацию.

он знает. С перестановкой LEFT JOIN это старый косяк оптимизатора. Только вчера этот вопрос возникал. В запросах то ладно, их и переделать быстро можно, а вот когда делаешь JOIN с вьюхой в которой есть LEFT JOIN будет больно.
Первоначально его планировали исправить к выходу 3.0, но то ли не успели, то ли не получилось. Сам ДЕ говорит что исправить не тривиально.
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648086
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> С перестановкой LEFT JOIN это старый косяк оптимизатора.

Я знаю, но в 8 раз - это уметь надо.

> Сам ДЕ говорит что исправить не тривиально.

Ну на нет и суда нет, дело хозяйское.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648098
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисGallemarЯ смотрел свойства FbConnection и FbDataReader, fetch size там не увидел, в исходники не пришло в голову лазить

а вот мне пришло. Потратил целых 2 минуты.

Они на SF?
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648102
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

я качал отсюда https://www.firebirdsql.org/en/additional-downloads/
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648122
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисGallemar,

я качал отсюда https://www.firebirdsql.org/en/additional-downloads/
Понятно,я просто NuGet ставил, так что дальше не лазил
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648203
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarПонятно,я просто NuGet ставил, так что дальше не лазил
документации нет, как узнать про "спецпараметры" и прочее? Только глянуть в исходники.

Вообще стыдобА, конечно, чувак за столько лет не сподобился минимальную доку написать, ограничился 6ю убогими примерами.
...
Рейтинг: 0 / 0
Вопрос по запросу через Firebird ADO.NET Data Provider
    #39648219
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvдокументации нет, как узнать про "спецпараметры" и прочее? Только глянуть в исходники.

Не обязательно. Я просто искал не там:
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по запросу через Firebird ADO.NET Data Provider
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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