powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Скорость fetcha в 1.5 и 3
22 сообщений из 22, страница 1 из 1
Скорость fetcha в 1.5 и 3
    #39548541
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решается задача портирования с FB 1.5.5.4926 на FB 3.0.2.32703. Периодически возникают вопросы по скорости работы запросов. Как правило всё решается убиранием "+0" или добавлением в разные места. Т.е. запрос, работающий на FB 1.5 быстро с "+0", на FB 3 тормозит, убираем - работает хорошо. Ну и наоборот, где работало без "добавок" на FB 3 надо дописывать "+0".

И тут вопрос быстродействия возник у запроса с простой выборкой данных, почти без какой-либо логики. Работает он на FB 3 в три раза дольше, чем на FB 1.5. Привожу текст:

SELECT G.KOD, G.PARENT FROM GOODS G where (G.PARENT is not null)

Результат 11594 записей.

FIREBIRD 1.5
PLAN (G NATURAL)
Время подготовки запроса = 0ms
Время выполнения запроса = 47ms
Среднее время на получение одной записи = 0,00 ms
Current memory = 27 649 480
Max memory = 28 506 036
Memory buffers = 3 000
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 34 302

FIREBIRD 3
PLAN (G NATURAL)
Select Expression
-> Filter
-> Table "C_GOODS" as "G" Full Scan
Время подготовки запроса = 0ms
Время выполнения запроса = 156ms
Среднее время на получение одной записи = 0,01 ms
Current memory = 28 822 256
Max memory = 29 052 592
Memory buffers = 3 000
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 21 387

Что тут можно подпилить в запросе - не понимаю. Оба сервера Classic, работают на одном компьютере на разных портах. Подключение через LocalHost. Базы после Restore. Тесты в IBExpert.

Может кто подскажет какие идеи?

Единственная версия того, почему есть разница в скорости выборки, это то, что данная таблица занимает по данным статистики в FB 3 больше чем в FB 1.5 (в FB 3 её размер 9.633 МБайт а в FB 1.5 размер 3.645 МБайт). Хотя таблица одна и та же, разбухла после B/R с FB 1.5. на FB 3.
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39548612
Roman Simakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте супер для сравнения и самый последний снапшот тройки.
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39548614
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory....Работает он на FB 3 в три раза дольше, чем на FB 1.5......
.....
PLAN (G NATURAL)
..... данная таблица занимает по данным статистики в FB 3 больше чем в FB 1.5 (в FB 3 её размер 9.633 МБайт а в FB 1.5 размер 3.645 МБайт). ....
Лишнее убрал.

Энтропия.
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39548619
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это ggreggory FIREBIRD 1.5
...
Чтений из кэша = 34 302

FIREBIRD 3
...
Чтений из кэша = 21 387совершенно не соответствует вот этому
ggreggoryданная таблица занимает по данным статистики в FB 3 больше чем в FB 1.5 (в FB 3 её размер 9.633 МБайт а в FB 1.5 размер 3.645 МБайт)Дабы не гадать, показывай ДДЛ таблицы и ту самую статистику. Для начала.
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39548623
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggoryРаботает он на FB 3 в три раза дольше, чем на FB 1.5.
Время выполнения запроса = 47ms
Время выполнения запроса = 156ms
фигней вы занимаетесь. Этот запрос у вас выполняется сотни тысяч раз? Создает mutex wait 10% и выше?
ggreggoryданная таблица занимает по данным статистики в FB 3 больше чем в FB 1.5 (в FB 3 её размер 9.633 МБайт а в FB 1.5 размер 3.645 МБайт)
например?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Скорость fetcha в 1.5 и 3
    #39954198
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С проблемой разобрался. Причина была в наличии COMPUTED BY полей. Кажется (могу ошибаться), FB 3 сохраняет их вместе с остальными данными в базе. Из-за этого та же самая таблица после переноса с FB 1.5 на FB 3 стала занимать больше места. После удаления COMPUTED BY полей статистика выровнялась.

Спасибо за участие!
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954203
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory
Причина была в наличии COMPUTED BY полей. Кажется (могу ошибаться), FB 3 сохраняет их вместе с остальными данными в базе
Не сохраняет.

ggreggory
После удаления COMPUTED BY полей статистика выровнялась.
Хотелось бы увидеть воспроизводимый пример. Ибо причины остались не выясненными.

PS не через 3 года, есс-но
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954216
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

computed by столбцы вычисляются только если они упоминаются в запросе. Не упоминаются - не вычисляются.
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954224
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И сейчас опять выяснится, что у них в вычисляемом поле подзапрос с блобом на выходе...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954231
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На скорую руку сверстал пример. Примерно тот, что был тогда.

Внизу ниже структура базы данных, процедура для её заполнения. Во вложении картинка статистики.

CREATE TABLE LOOKUPTABLE (
ID INTEGER NOT NULL,
BIGSTRING VARCHAR(24000)
);

CREATE TABLE GOODS (
KOD INTEGER NOT NULL,
PARENT INTEGER,
BIGSTRING COMPUTED BY ((select bigstring from lookuptable where lookuptable.id = goods.parent))
);

ALTER TABLE GOODS ADD CONSTRAINT PK_GOODS PRIMARY KEY (KOD);
ALTER TABLE LOOKUPTABLE ADD CONSTRAINT PK_LOOKUPTABLE PRIMARY KEY (ID);

SET TERM ^;

CREATE PROCEDURE FILL
AS
declare variable i integer = 0;
declare variable s varchar(24000) = '';
begin
while (i < 24000) do
begin
s = s || 'x';
i = i + 1;
end
i = 0;
while (i < 10000) do
begin
insert into lookuptable(id, bigstring) values (:i, :s);
insert into goods(kod, parent) values(:i, :i);
i = i + 1;
end
end^

SET TERM ;^

execute procedure fill;

commit;
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954240
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

че-то я не пойму, в чем смысл сравнивать сервера, если размер таблицы отличается в 8 раз. Причем, меньшая таблица на 1.5 это 47 миллисекунд, а большая таблица на 3.0 это 156 миллисекунд. Охренеть какая разница, и какое время прямо существенное.
Кроме того, неясно, замер времени был сделан для чего - фетча начального десятка записей, влезающего в грид, или fetchall?
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954249
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv

че-то я не пойму, в чем смысл сравнивать сервера, если размер таблицы отличается в 8 раз.


Структура и количество записей одинаковое. А вот с какого перепуга record length = 387 для GOODS вдруг стал - это действительно интересно.
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954264
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начиная не то с 2.5 не то с 3.0, computed-поля ресторятся как обычные, а после заливки данных превращаются в computed. Из-за этого у таблицы получается два формата. И отресторенные записи получаются залиты в первом формате, который с фейковым длинным полем. Которое естественно NULL, но из-за оверхеда RLE-сжатия приносит лишние 375 байт (24000 / 64) на каждую запись.
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954274
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr
...computed-поля ресторятся как обычные, а после заливки данных превращаются в computed...


Проверил. Подтверждаю. Если таблица заполняется "с нуля", проблемы нет. Если таблица ресторится, то "пухнет".
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954287
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

В перспективе с этим можно что-нибудь сделать?
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954292
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,

когда сжатие записей будут улучшать, это запланировано, но видимо уже не в 4.0
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954297
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Да я даже не про это, а про технологическую необходимость создания двух версий.
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954302
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было сделано для исправления какого-то бага.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954307
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F,

там видимо какая-то проблема с восстановимостью бекапа правилась.

З.Ы. Несмотря на кажущуюся привлекательность подхода вычисляемые поля — ИХМО зло
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954357
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Было сделано для исправления какого-то бага.

Спасибо, кэп, но по-факту, получается, что вышло как-то не аккуратненько. (с))
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954363
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad F
Спасибо, кэп, но по-факту, получается, что вышло как-то не аккуратненько. (с))

не спорю. Вот только с 2007 года никто на это не обращал внимания...
...
Рейтинг: 0 / 0
Скорость fetcha в 1.5 и 3
    #39954436
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

Дык, разработчики ветками забросали, так что не каждый чукча-следопыт следы распознает, однако.))
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Скорость fetcha в 1.5 и 3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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