|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Решается задача портирования с 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2017, 19:38 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Попробуйте супер для сравнения и самый последний снапшот тройки. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2017, 23:05 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
ggreggory....Работает он на FB 3 в три раза дольше, чем на FB 1.5...... ..... PLAN (G NATURAL) ..... данная таблица занимает по данным статистики в FB 3 больше чем в FB 1.5 (в FB 3 её размер 9.633 МБайт а в FB 1.5 размер 3.645 МБайт). .... Лишнее убрал. Энтропия. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2017, 23:14 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Вот это 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 МБайт)Дабы не гадать, показывай ДДЛ таблицы и ту самую статистику. Для начала. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2017, 23:22 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
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 МБайт) например? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2017, 23:31 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
С проблемой разобрался. Причина была в наличии COMPUTED BY полей. Кажется (могу ошибаться), FB 3 сохраняет их вместе с остальными данными в базе. Из-за этого та же самая таблица после переноса с FB 1.5 на FB 3 стала занимать больше места. После удаления COMPUTED BY полей статистика выровнялась. Спасибо за участие! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2020, 22:56 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
ggreggory Причина была в наличии COMPUTED BY полей. Кажется (могу ошибаться), FB 3 сохраняет их вместе с остальными данными в базе ggreggory После удаления COMPUTED BY полей статистика выровнялась. PS не через 3 года, есс-но ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2020, 23:03 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
ggreggory, computed by столбцы вычисляются только если они упоминаются в запросе. Не упоминаются - не вычисляются. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2020, 23:43 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
И сейчас опять выяснится, что у них в вычисляемом поле подзапрос с блобом на выходе... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 00:25 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
На скорую руку сверстал пример. Примерно тот, что был тогда. Внизу ниже структура базы данных, процедура для её заполнения. Во вложении картинка статистики. 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; ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 01:06 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
ggreggory, че-то я не пойму, в чем смысл сравнивать сервера, если размер таблицы отличается в 8 раз. Причем, меньшая таблица на 1.5 это 47 миллисекунд, а большая таблица на 3.0 это 156 миллисекунд. Охренеть какая разница, и какое время прямо существенное. Кроме того, неясно, замер времени был сделан для чего - фетча начального десятка записей, влезающего в грид, или fetchall? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 02:26 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
kdv че-то я не пойму, в чем смысл сравнивать сервера, если размер таблицы отличается в 8 раз. Структура и количество записей одинаковое. А вот с какого перепуга record length = 387 для GOODS вдруг стал - это действительно интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 04:26 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Начиная не то с 2.5 не то с 3.0, computed-поля ресторятся как обычные, а после заливки данных превращаются в computed. Из-за этого у таблицы получается два формата. И отресторенные записи получаются залиты в первом формате, который с фейковым длинным полем. Которое естественно NULL, но из-за оверхеда RLE-сжатия приносит лишние 375 байт (24000 / 64) на каждую запись. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 08:45 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
dimitr ...computed-поля ресторятся как обычные, а после заливки данных превращаются в computed... Проверил. Подтверждаю. Если таблица заполняется "с нуля", проблемы нет. Если таблица ресторится, то "пухнет". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 10:13 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
dimitr, В перспективе с этим можно что-нибудь сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 12:15 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Vlad F, когда сжатие записей будут улучшать, это запланировано, но видимо уже не в 4.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 12:34 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Симонов Денис, Да я даже не про это, а про технологическую необходимость создания двух версий. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 12:58 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Было сделано для исправления какого-то бага. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 13:12 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Vlad F, там видимо какая-то проблема с восстановимостью бекапа правилась. З.Ы. Несмотря на кажущуюся привлекательность подхода вычисляемые поля — ИХМО зло ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 13:19 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Было сделано для исправления какого-то бага. Спасибо, кэп, но по-факту, получается, что вышло как-то не аккуратненько. (с)) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 16:55 |
|
Скорость fetcha в 1.5 и 3
|
|||
---|---|---|---|
#18+
Vlad F Спасибо, кэп, но по-факту, получается, что вышло как-то не аккуратненько. (с)) не спорю. Вот только с 2007 года никто на это не обращал внимания... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2020, 17:21 |
|
|
start [/forum/moderation_log.php?user_name=FeelYou]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
1ms |
others: | 443ms |
total: | 635ms |
0 / 0 |