powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Перестройка индексов в Firebird
142 сообщений из 142, показаны все 6 страниц
Перестройка индексов в Firebird
    #39218177
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Разрабатываю приложение, которое использует Firebird в конфигурации Embedded (платформа - Linux, версия FB - 2.1.5). База данных расположена на отдельном диске (без файловой системы - чисто на блочном устройстве).

Есть несколько таблиц со структурой:
Код: plsql
1.
2.
CREATE TABLE Table1(id numeric(18,0), i_timestamp numeric(18,0),
	i_offset numeric(18,0), PRIMARY KEY (id));



Для каждой создан индекс:

Код: plsql
1.
CREATE ASC INDEX idx_Table1 ON Table1 (i_timestamp);



Выполняю запрос:
Код: plsql
1.
SELECT FIRST 1 ID, I_TIMESTAMP, I_OFFSET FROM Table1 WHERE I_TIMESTAMP >= <значение> ORDER BY I_TIMESTAMP ASC;



В итоге, при размере таблицы примерно в 700 000 записей первый такой запрос к таблице выполняется от 6 до 17 секунд. Последующие запросы отрабатывают быстрее (подозреваю, вследствие кэширования FB). И далее, чем больше записей, тем больше время выполнения запроса. Макс. время выполнения запроса видел - 65 секунд (!!!!).

Прочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов:

Код: plsql
1.
ALTER INDEX idx_Table1 ACTIVE;



И да, это помогает. После перестройки индексов запросы выполняется очень быстро. НО есть две проблемы.

1) Если я завершаю свое приложение и отключаюсь от базы, то при последующем запуске и подключении нужно опять делать перестройку всех индексов - а это приводит к тому, что перестройка всех индексов занимает более 225 сек, что очень плохо. Почему Firebird не сохраняет высчитанные значение в файл базы данных, например ?

2) После перестройки индексов, все запросы из таблицы работают очень быстро, однако, со временем, при изменении таблицы, вновь растет время выполнения запросов. Есть ли какие-либо рекомендации, с какой частотой необходимо перестраивать индексы, чтобы быстро отрабатывались запросы к БД ?

Надеюсь, кто-то сталкивался с таким и поможет найти решение.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218186
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizard1) Если я завершаю свое приложение и отключаюсь от базы, то при последующем запуске и подключении нужно опять делать перестройку всех индексов - а это приводит к тому, что перестройка всех индексов занимает более 225 сек, что очень плохо. Почему Firebird не сохраняет высчитанные значение в файл базы данных, например ?

Коммит забыл сделать?

NightWizard2) После перестройки индексов, все запросы из таблицы работают очень быстро, однако, со временем, при изменении таблицы, вновь растет время выполнения запросов. Есть ли какие-либо рекомендации, с какой частотой необходимо перестраивать индексы, чтобы быстро отрабатывались запросы к БД ?

Перестраиваю индексы раз в сутки ночью.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218189
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
феерия просто
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218191
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardВ итоге, при размере таблицы примерно в 700 000 записей первый такой
запрос к таблице выполняется от 6 до 17 секунд.
Ты план этого запроса смотрел?

PS: дальше идущий бред пропустил.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218195
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Avenger__NightWizard1) Если я завершаю свое приложение и отключаюсь от базы, то при последующем запуске и подключении нужно опять делать перестройку всех индексов - а это приводит к тому, что перестройка всех индексов занимает более 225 сек, что очень плохо. Почему Firebird не сохраняет высчитанные значение в файл базы данных, например ?

Коммит забыл сделать?

NightWizard2) После перестройки индексов, все запросы из таблицы работают очень быстро, однако, со временем, при изменении таблицы, вновь растет время выполнения запросов. Есть ли какие-либо рекомендации, с какой частотой необходимо перестраивать индексы, чтобы быстро отрабатывались запросы к БД ?

Перестраиваю индексы раз в сутки ночью.

При перестройки коммит для трнзакции делается.

Я тоже хотел один раз в сутки делать, но база наполняется быстро довольно (в каждую такую табличку примерно 10 записей в 20 секунд добавляется - и сутками работает все).
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218204
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardПочему Firebird не сохраняет высчитанные значение в файл базы данных, например ?

Сохраняет, куда он денется. По крайней мере в файл.

NightWizardПосле перестройки индексов, все запросы из таблицы работают очень быстро

перестройки индексов - и кэширования данных, как самим сервером, так и операционкой

NightWizardоднако, со временем, при изменении таблицы, вновь растет время выполнения запросов.

Система работает - данные вытесняются из кэша. На момент запроса кэш полу-пустой и его надо заного считать с диска.

В общем вам лучше в самом деле попробовать посмотреть статистику по вашим запросам, возможно удобнее в отдельно-стоящем сервере и IDE типа IBExpert. Не только планы запросов, но и их длительность и количество чтений с диска и из кэша.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218207
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardбаза наполняется быстро довольно (в каждую такую табличку примерно 10
записей в 20 секунд добавляется - и сутками работает все).
Одна запись в две секунды. Мизерная нагрузка. Только полный дебилизм разработчика может
заставить это тормозить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218209
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovNightWizardВ итоге, при размере таблицы примерно в 700 000 записей первый такой
запрос к таблице выполняется от 6 до 17 секунд.
Ты план этого запроса смотрел?

PS: дальше идущий бред пропустил.


Тут все ок:

Код: plsql
1.
PLAN (TABLE1 ORDER IDX_TABLE1 INDEX (IDX_TABLE1))
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218212
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийфеерия простои сборник мифов "древнего файрберда".

NightWizardРазрабатываю приложение, которое использует Firebird в конфигурации Embedded (платформа - Linux, версия FB - 2.1.5)странно разрабатывать на снятой с техподдержки версии.

NightWizardПрочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов:вот прямо так необходимо ?

NightWizardпримерно 10 записей в 20 секунд добавляетсяNightWizardпри размере таблицы примерно в 700 000 записейРазмеры микроскопические и прирост тоже.

Где план и статистика исполнения запроса?
Сдается мне натуралом оно шпарит и диск САТА.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218214
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizard
Код: plsql
1.
i_timestamp numeric(18,0)



А зачем Int64, при аличии родного timestamp ?

http://firebirdsql.su/doku.php?id=tipy_dannyx

Ну, предполагая, что у вас третий диалект включён, а то и float получите...

http://wm-help.net/lib/b/book/4054355128/189
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218219
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТолько полный дебилизм разработчика может
заставить это тормозить.

зависание OIT с распуханием индексов неактуальными записями?
отключение сборки мусора навечно ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218220
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochNightWizard
Код: plsql
1.
i_timestamp numeric(18,0)



А зачем Int64, при аличии родного timestamp ?

http://firebirdsql.su/doku.php?id=tipy_dannyx

Ну, предполагая, что у вас третий диалект включён, а то и float получите...

http://wm-help.net/lib/b/book/4054355128/189

Диалект 3. Timestamp не подходит, так как точность до миллисекунд нужна.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218222
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardТут все ок:

PLAN (TABLE1 ORDER IDX_TABLE1 INDEX (IDX_TABLE1))
Что об этом индексе говорит "gstat -i"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218223
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardДиалект 3. Timestamp не подходит, так как точность до миллисекунд нужна.

Точность timestamp - одна десятая миллисекунды. Чисто для информации.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218228
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardточность до миллисекунд нужна.

MILLISECOND NUMERIC(9,1) Миллисекунд, 0.0–999.9 (начиная с версии 2.1.2)
http://firebirdsql.su/doku.php?id=extract

The fractional part of the time used to be always “.0000”, giving an effective seconds precision. Since Firebird 2.0 the precision is 3 decimals, i.e. milliseconds.
http://www.firebirdsql.org/refdocs/langrefupd21-now.html

Fractions of Seconds: If fractions of seconds are stored in date and time data types, Firebird stores them to ten-thousandths of a second. If a lower granularity is preferred, the fraction can be specified explicitly as thousandths, hundredths or tenths of a second in Dialect 3 databases of ODS 11 or higher.
http://www.firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-datatypes-datetime.html
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218233
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch,

Да, тут недоглядел. Но я пробовал менять и на timestamp - от этого быстрее оно не заработало.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218243
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovNightWizardТут все ок:

PLAN (TABLE1 ORDER IDX_TABLE1 INDEX (IDX_TABLE1))
Что об этом индексе говорит "gstat -i"?


Блин, на сервере, где это тестировал gstat'а нет, как и увы gbak'а. Разберусь с этим вопросом.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218245
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardТут все ок:

Код: plsql
1.
PLAN (TABLE1 ORDER IDX_TABLE1 INDEX (IDX_TABLE1))



я бы не был столь оптимистичен
вполне возможно что
SORT был бы лучше чем ORDER
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218248
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizard,

проверьте, что у вас не залипла Oldest Interesting Transaction
http://www.firebirdsql.org/manual/gstat-example-header.html

и что достаточно часто проходит сборка мусора ( sweep interval )

иначе у вас индексы должны распухать старыми записями и в пределе будет всё более похоже на чтение таблицы без индексов вообще
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218255
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Arioch!
You wrote on 18 апреля 2016 г. 15:17:41:

Arioch> проверьте, что у вас не залипла
у него gfix-а нету, как и gstat-а
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218260
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот интересно, предположим залипание OIT

как поведет себя embedded сервер, когда он OIT "подвинет" - при выключении приложения ( и соотв. смерти транзакции ), или при следующем запуске?

nbackup на embedded натравить едва ли получится...

стало быть проверить залипание OIT в процессе работы embedded-сервера можно только "изнутри приложения", внешние утилиты просто не получат доступ к файлу БД ?

или gstat всё же можно натравить по NFS/SMB на файл БД, открытой на другой машине встроенным сервером?
Хотя бы заголовок БД считать, если не индексы?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218264
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну значит или прoверять через API изнутри программы, или жёстко отстреливать программу на лету не давая записать в файл исправленный OIT (и все остальные кэши, ага) и потом копировать полуживой файл БД для вскрытия
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218266
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizard gstat'а нет, как и увы gbak'а

Весело вам - живете как на пороховой бочке.

P.S. Путь джедая-камикадзе - особенно труден.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218267
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gfix как раз есть.
Счас посмотрю, подумаю.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218269
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

а толку с gbak'a на embedded 2.1 ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218273
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

Я так понял, что есть тестовый нормальный сервер.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218274
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochкак поведет себя embedded сервер, когда он OIT "подвинет" - при выключении
приложения ( и соотв. смерти транзакции ), или при следующем запуске?
Ни то ни другое. Подвинуть может только sweep, а он стартует только при старте транзакции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218278
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterЯ так понял, что есть тестовый нормальный сервер.

Но к нему нет нормального DBA, что и превращает данный топик в очередное УГ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218280
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochDarkMaster,

а толку с gbak'a на embedded 2.1 ?

Дык тут либо Service API, либо disconnect в приложении + gbak + connect приложения. В любом случае - must have.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218284
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardПрочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов

Телега впереди лошади.

1) перед массовым и *монопольным* добавлением/изменением записей *бывает удобно* (чисто для скорости и только для неё, никаих необходимо и близко не стоит) отключить индексы. После этого, действительно, индексы *необходимо* включать - но вовсе не "после массовой вставки", а примитивно "после выключения индексов" (на монопольную операцию, если решили так делать).

2) после массового удаления/изменения записей (сравнимого по кол-ву с общим размером таблицы) образуется непропорционально много мусора. Его желательно - н не необходимо - почистить недожидаясь автоматической регулрно авто-сборки. Но индексы для этого трогать ЕМНИП не нужно, select count(*) from table1 вполне справится. Можно, конечно, и пересчётом индексов того-же добиться.... Это предполагая, что вы не отключали обычную сборку мусора по умолчанию
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218288
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterArioch,

Я так понял, что есть тестовый нормальный сервер.

...на котором "котлдеты не подгорают"

Если погорают - то конечн нафиг встройку, подключаться ibexpert'ом и смотреть всё интересное прямо в GUI
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218291
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAriochкак поведет себя embedded сервер, когда он OIT "подвинет" - при выключении
приложения ( и соотв. смерти транзакции ), или при следующем запуске?
Ни то ни другое. Подвинуть может только sweep, а он стартует только при старте транзакции.

...ага, вот оно, что происходит, скорее всего

NightWizardто при последующем запуске и подключении нужно опять делать перестройку всех индексов - а это приводит к тому, что перестройка всех индексов занимает более 225 сек, что очень плохо

...ну а потом уже и индексы перестраиваются, после уборки
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218294
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, топег - фейк.
аффтар - выбегалло.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218295
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochNightWizardПрочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов

Телега впереди лошади.

1) перед массовым и *монопольным* добавлением/изменением записей *бывает удобно* (чисто для скорости и только для неё, никаих необходимо и близко не стоит) отключить индексы. После этого, действительно, индексы *необходимо* включать - но вовсе не "после массовой вставки", а примитивно "после выключения индексов" (на монопольную операцию, если решили так делать).

2) после массового удаления/изменения записей (сравнимого по кол-ву с общим размером таблицы) образуется непропорционально много мусора. Его желательно - н не необходимо - почистить недожидаясь автоматической регулрно авто-сборки. Но индексы для этого трогать ЕМНИП не нужно, select count(*) from table1 вполне справится. Можно, конечно, и пересчётом индексов того-же добиться.... Это предполагая, что вы не отключали обычную сборку мусора по умолчанию

Сборку мусора не отключал. Если не делать ALTER INDEX idx_Table1 ACTIVE, то даже при старте приложения (а это ведь и старт Embedded сервера по сути) медленно выполняются запросы - а какой мусор может быть у только что запущенного сервиса ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218296
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovAriochкак поведет себя embedded сервер, когда он OIT "подвинет" - при выключении
приложения ( и соотв. смерти транзакции ), или при следующем запуске?
Ни то ни другое. Подвинуть может только sweep, а он стартует только при старте транзакции.

но так даже лучше


запустили программу, убедились что все быстро, остановили программу, скопировали файл БД на полноценный сервер как эталон "всё хорошо".
запустили программу еще раз, погоняли час-два-три до тормозов, остановили и скопировали файл БД как эталон "всё плохо"

потом искать разницу ( !! не подключаясь к ним сервером, а исключительно read-only утилитами типа GStat, ibexpert database inside, IBSurgeon DBInfo http://ib-aid.com/en/ibsurgeon-free-tools/ !! )
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218297
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardкакой мусор может быть у только что запущенного сервиса ?

Мусор - он в БД хранится и к процессам отношения не имеет. Особенность версионников.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218303
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochDimitry Sibiryakovпропущено...

Ни то ни другое. Подвинуть может только sweep, а он стартует только при старте транзакции.

но так даже лучше


запустили программу, убедились что все быстро, остановили программу, скопировали файл БД на полноценный сервер как эталон "всё хорошо".
запустили программу еще раз, погоняли час-два-три до тормозов, остановили и скопировали файл БД как эталон "всё плохо"

потом искать разницу ( !! не подключаясь к ним сервером, а исключительно read-only утилитами типа GStat, ibexpert database inside, IBSurgeon DBInfo http://ib-aid.com/en/ibsurgeon-free-tools/ !! )

тормоза спустя две недели после работы софта начинаются примерно... Это осложняет ситуацию. Ладно, попробую как-нибудь сдампить "плохую" базу и ее посммтреть, видимо по-простому отделаться не выйдет ((
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218306
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nightwizard> Ладно, попробую как-нибудь сдампить "плохую" базу
у поциента mySQL...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218320
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardтормоза спустя две недели после работы софта начинаются примерно...Сколько там еще скелетов в шкафу? потом еще окажется что "сервер" это ноут на проце "атом" или распбери пи какой...
NightWizardвидимо по-простому отделаться не выйдетДа, придется ознакомиться с документацией.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218329
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот кстати...

если отключение сборки делалось не через настройку БД, а чере зсаму программу, то и смотреть это уже надо будет не только в заголовке БД, но и в исходниках

А за сборку мусорных версий или несборку отвечает флаг no_garbage_collect, который может использоваться и в обычном коннекте в библиотеках прямого доступа (т. е. в приложениях, например для ускорения выборок в некоторых случаях).
http://ibase.ru/ibmyths/


http://www.firebirdsql.org/manual/gfix-housekeeping.html
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218334
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardвидимо по-простому отделаться не выйдет

Почему ?

NightWizardтормоза спустя две недели после работы софта начинаются примерно.

раз в неделю, в ночь с субботы на воскресене - перезапускайте вашего демона, 300 секунд перзапуск? не так и много.

Другой вопрос, что ещё может исподволь накапливаться, спрятав одну проблему вместо исследования и решения - не подложите ли кому-нибудь грабли, на которые через несколько лет кто-то наступит?

Впрочем, судя по отсутсвию резервного копирования - грабли в вашем случае никого не пугают
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218337
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochесли отключение сборки делалось не через настройку БД
Никакой настройкой БД сборку мусора не отключить. В принципе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218348
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardтормоза спустя две недели после работы софта начинаются примерно
NightWizardв каждую такую табличку примерно 10 записей в 20 секунд добавляется - и сутками работает все

Предположим, что очередные наблюдения во все таблицы заносятся одной транзакцией (которая, будем надеяться, потом закрывается без retaining). А не по отдельной транзакции на каждую новую строку каждой новой таблицы.

14*24*3600*(10/20) = 604800

NightWizardВ итоге, при размере таблицы примерно в 700 000 записей

Хммм....

Ariochпосле массового удаления/изменения записей ( сравнимого по кол-ву с общим размером таблицы)
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218352
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Arioch http://www.firebirdsql.org/manual/gfix-housekeeping.html

Disabling Automatic Sweeping

If you set the sweep interval to zero then automatic sweeping will be disabled. This implies that there will be no automatic housekeeping done so your database performance will not suffer as a result of the processing requirements of the automatic sweep.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218353
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochIf you set the sweep interval to zero then automatic sweeping will be
disabled.
Какое слово из этого ты прочёл как "сборка мусора"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218361
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

авторThe sweep facility runs through the database and gets rid of old rows in tables that are out of date.
авторFirebird will automatically sweep through the database and remove the remnants of rolled back transactions
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218362
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
....эта статья, к сожалению, ничего не говорит про BLOB'ы и их handles
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218364
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Arioch!

сборка мусора == garbage collection
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218372
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

автор Garbage , for want of a better name, is the detritus that Firebird leaves around in the database after a rollback has been carried out.

авторManual Garbage Collection

If automatic sweeping has been turned off, or only runs rarely because of the sweep interval setting, the DBA can manually force a sweep to be performed. The command to carry out this task is:

linux> gfix -sweep my_employee
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218373
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch, отдохни уже. ты устал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218384
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Вас корёжит от официальной документации FB - а устал я.

Ну-ну.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218385
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отчет gstat:

Database header page information:
Flags 0
Checksum 12345
Generation 1753855
Page size 4096
ODS version 11.1
Oldest transaction 1753703
Oldest active 1753704
Oldest snapshot 1753704
Next transaction 1753705
Bumped transaction 1
Sequence number 0
Next attachment ID 88
Implementation ID 24
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Apr 6, 2016 18:58:41
Attributes

Variable header data:
*END*
...
TABLE1 (140)

Index IDX_TABLE1 (1)
Depth: 3, leaf buckets: 1874, nodes: 744214
Average data length: 4.27, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 0
20 - 39% = 0
40 - 59% = 1
60 - 79% = 0
80 - 99% = 1873

Index RDB$PRIMARY19 (0)
Depth: 3, leaf buckets: 2207, nodes: 744214
Average data length: 6.06, total dup: 0, max dup: 0
Fill distribution:
0 - 19% = 1
20 - 39% = 0
40 - 59% = 0
60 - 79% = 0
80 - 99% = 2206

..
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218392
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizard,

Это - "хорошая" или "плохая" ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218400
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch, ты в архитектуре сервера профан.
на что и намекает, очень тактично кстати, DS.
читай статьи, про то, что там внутри.
что такое свип, зачем оно вообще надо и т.д.

чтоб не особо напрягать, разверну мысль DS вширь:
автосвип ты можешь отключить манипуляциями gfix, а сборку мусора - нет.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218413
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

Я тебе цитаты привел из официальной документаци, в которой свип считается если не синонимом, то необходимой частью сборки мусора. Нет свипа - нет (полной) сборки мусора. А неполная сборка мусора - это беременность наполовину.

В исходниках сервера, вполне возможно, используется своя терминология противоречащая официальной документации, почему бы и нет.

Но поскольку мы не в devel@, а на форуме для ширнармасс, то терминология документации подходит лучше.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218414
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochNightWizard,

Это - "хорошая" или "плохая" ?

"плохая", с адскими тормозами
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218417
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МимопроходящийArioch, ты в архитектуре сервера профан.
на что и намекает, очень тактично кстати, DS.
читай статьи, про то, что там внутри.
что такое свип, зачем оно вообще надо и т.д.

чтоб не особо напрягать, разверну мысль DS вширь:
автосвип ты можешь отключить манипуляциями gfix, а сборку мусора - нет.



А можно ссылочки на статьи "по системной части" ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218419
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Особенно по архитектуре Embedded.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218421
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

авторWhenever a subsequent transaction reaches garbage from a committed transaction, that garbage is automatically cleared out.

Таким образом, нравится тебе документаия или нет, но в документации Garbage Collection разбита на две части.

Часть GC, которая занимается rollback-мусором, несколько раз подряд названа sweeping.
Часть GC, которая занимается commit-мусором, один раз названа Garbage CLEARING, а по большому счёту своего отдельного термина не удостоилась.

Вне зависимости от того, что - отдельно от пользовательской документации - написано в исходниках.
Да хоть #define TRUE FALSE ты там напиши - как это на документацию повлияет?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218428
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Arioch!
You wrote on 18 апреля 2016 г. 17:03:05:

Arioch> Я тебе цитаты привелшел бы ты..
в бухгалтерию!

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218430
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardОсобенно по архитектуре Embedded.

Embedded в данном слуае почти полностью совпадает с Classic

Разницы две

1: нет защиты памяти сервера от ошибок в приложении. Если приложение - особенно после "двух недель" работы - начнёт неожиданно портить свою - и встроенного сервера - память, то может испортить файл БД.

2: нет внешнего интерфейса. При работающем приложении внешние программы типа gbak/gfix не могут надёжно читать нужную им информацию из БД - поточу что файл отстаёт от кэша в памяти.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218431
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийHello, Arioch!
You wrote on 18 апреля 2016 г. 17:03:05:

Arioch> Я тебе цитаты привелшел бы ты..
в бухгалтерию!

AriochВас корёжит от официальной документации FB
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218438
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizard,

http://ibase.ru/transactions/

Тaкже http://ibase.ru/performance/
"Описание методов доступа к данным, используемых ядром Firebird"
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218440
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch, благодарю !
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218446
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardPage size 4096
"Уже смешно." (с)

NightWizardPage buffers 0
И сколько их там настроено в firebird.conf?

NightWizardDepth: 3
ЧиТД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218448
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

вот, кстати

http://ibase.ru/garbage/ Самый известный момент сборки мусора – это sweep

....

Если бы мусор собирался только при помощи sweep

...

Вообще сборка мусора бывает следующих видов:
1) sweep, автоматический или ручной
2) кооперативная явная....
3) кооперативная фоновая....


Но у бурятских д'Артаньянов есть особая единственно-правильная версия FB, в которой sweep не убирает мусор и вообще ничего не делает
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218452
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovNightWizardPage size 4096
"Уже смешно." (с)

NightWizardPage buffers 0
И сколько их там настроено в firebird.conf?

NightWizardDepth: 3
ЧиТД.



Это ведь к размеру кэша все относится ?

DefaultDbCachePages менял в сторону увеличения, улучшений не было.

Размер страницы правда не трогал пока
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218454
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizard,

первое также относится к "атому" чтения/записи на диск и выделения места

аналогично размеру кластера в FAT/NTFS

ваша встройка на каком диске работает ? если там какая-нибудь флэшка, то весьма возможно, чтраница перезаписи у неё не 4 кб, а 16 иили 64 - https://en.wikipedia.org/wiki/Write_amplification
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218459
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

хватит спорит о том чего не понимаешь. Sweep включает в себя сборку мусора. Поэтом противоречий в http://ibase.ru/garbage/ не вижу. Но свип это не только сборка мусора.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218461
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
SELECT count(*) WHERE I_TIMESTAMP >= <значение> 


Сколько записей выдает этот запрос
и сколько времени он выполняется
???
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218462
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисПоэтом противоречий в http://ibase.ru/garbage/ не вижу

а ее там и нет

вся документация утверждает, что сборка мусора состоит из нескольких компонентов, одним из которых явлется sweep
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218465
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardDefaultDbCachePages менял в сторону увеличения, улучшений не было.

Что, с умолчательных 75 поднял аж до 128?..

У тебя в одном только индексе почти 2 тысячи страниц. Так что учитывая отсутствие
файлового кэша ОСи эта штука жить нормально не может.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218473
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochвся документация утверждает, что сборка мусора состоит из нескольких
компонентов, одним из которых явлется sweep
Документация этого не утверждает. Она утверждает, что sweep решает одну-единственную
задачу, и побочным эффектом его является сборка мусора. Он, собственно говоря, мусор
убирать не обязан, это всего лишь повышает его эффективность.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218480
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov Так что учитывая отсутствие
файлового кэша ОСи

???

Dimitry Sibiryakovс умолчательных 75

Ох... Почти не пользовался embedded и как-то его перевод с супера на классик не отслеживал....

http://www.firebirdsql.org/manual/gfix-buffers.html
http://www.firebirdsql.org/manual/gstat-example-header.html
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218483
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovрешает одну-единственную задачу - а именно сборку мусора вполне определенного типа.

В общем, если не нравится документация - никто не мешает её переписать и ввести другие термины, лучше, точнее удобнее, привычнее, приятнее, you name it.

Но пока они в документации такие, как я процитировал.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218484
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch???
Насколько я помню, файловый кэш не работает на RAW разделах, где аффтар держит базу.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218485
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Логично, для того они и придуманы.....

Тогда - да, жуткое бутылочное горло.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218493
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа именно сборку мусора вполне определенного типа.
Не угадал. Он двигает застрявшие счётчики транзакций. Всё. Это его единственно назначение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218495
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

а какой смысл это узнавать. У него совсем другой запрос
Код: sql
1.
SELECT FIRST 1 ID, I_TIMESTAMP, I_OFFSET FROM Table1 WHERE I_TIMESTAMP >= :dt ORDER BY I_TIMESTAMP ASC;



и план получается с навигацией по индексу, но не самый оптимальный
Код: plaintext
PLAN (TABLE1 ORDER IDX_TABLE1 INDEX (IDX_TABLE1))

было бы быстрее если план был бы таким
Код: plaintext
PLAN (TABLE1 ORDER IDX_TABLE1)
но 2.x это не умеет
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218500
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а я вообще не гадаю.
я читаю и цитирую вашу документацию

Fb Manual Rolled back garbage is never automatically cleared out.

Firebird will automatically sweep through the database and remove the remnants of rolled back transactions and this has two effects

Вот ваша пользовательская документация - она возможно и не угадала. Но это вопрос к документации, а не к пользователям
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218503
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа я вообще не гадаю.
я читаю и цитирую вашу документацию
Если тебе хочется чтобы "the remnants of rolled back transactions" были мусором - это твои
проблемы. В реальности движка это всего лишь счётчик в заголовке и бит в TIP.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218507
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕсли тебе хочется

не мне, а официальной документации FB, кторую я тут - ежинственный из всех - цитирую.

Dimitry SibiryakovВ реальности движка это всего лишь счётчик в заголовке и бит в TIP

Вполне возможно. 19073211

PS. И заблокировав sweep мы тем самым блокируем счётчик OIT и блокируем сборку rollback-мусора между OIT и Next Transaction, так ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218510
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochИ заблокировав sweep мы тем самым блокируем счётчик OIT и блокируем сборку
rollback-мусора между OIT и Next Transaction, так ?
Хороший вопрос. Не факт. Проверка живости транзакции выполняется при любом чтении.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218518
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Тогда почему sweep необходим ?
Либо автоматический свип, либо ручной, либо замена БД на другой новый файл через B&R - почему нужна?

Документация однозначно уверяет, что rollback-garbage перестает собираться при заблокированном sweep.
У меня нет причин ей не доверять.
Но я вполне допускаю, что документация могла устареть и свип больше не необходм. Но ещё раз - вопрос в данном случае не к пользователю, а к документации.

А по текущей документации получается, что ваша с МП и СД позиция выглядит - если без шелухи - примерно так: "если сервер принципиально не очищает половину мусора, то очистка мусора все равно работает, просто она наполовину беременная". Также как разработчик ДВС мог бы утверждать, что бензин для работы движка полезен, но не необходим. Ведь с его точки зрения изнутри - всё и без топлива хорошо. Искра идёт, коленвал крутится (стартёром) - значит движок и без топлива работает. Так и тут - с вашей точки зрения "изнутри движка", если половина мусора не собирается, то это не значит что сборка мусора не работает. Ведь "вал крутится". А с точки зрения "снаружи" важно другое. Убирается мусор или нет. И если мусор НЕ убирается, то как именно называлась кнопка, которой сборку забокировали, уже менее важно.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218525
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упёртый
на своей волне
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218527
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochТогда почему sweep необходим ?
Повторяю медленно: чтобы подвинуть счётчики транзакций. Точка. Других назначений у него нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218529
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

не каждый rollback требует sweep, а только тот что не превращён сервером в commit. И ещё ни СД, ни DS, ни МП ничего такого не утверждали.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218533
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисm7m,

а какой смысл это узнавать. У него совсем другой запрос
Код: sql
1.
SELECT FIRST 1 ID, I_TIMESTAMP, I_OFFSET FROM Table1 WHERE I_TIMESTAMP >= :dt ORDER BY I_TIMESTAMP ASC;



и план получается с навигацией по индексу, но не самый оптимальный
Код: plaintext
PLAN (TABLE1 ORDER IDX_TABLE1 INDEX (IDX_TABLE1))

было бы быстрее если план был бы таким
Код: plaintext
PLAN (TABLE1 ORDER IDX_TABLE1)
но 2.x это не умеет

вот почти для этого и надо

чтобы узнать а стоит ли менять в запросе план с ORDER на SORT

зы. я видел какой у него запрос
хотя я может и не прав в своем "желании"
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218536
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

ну попробовать приписать +0 в ORDER BY конечно можно, хотя не факт что будет лучше
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218541
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochИ заблокировав sweep мы тем самым блокируем счётчик OIT и блокируем сборку rollback-мусора между OIT и Next Transaction, так ?Нет
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218542
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochДокументация однозначно уверяет, что rollback-garbage перестает собираться при заблокированном sweep.OMG
Где ты это прочитал ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218606
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochА по текущей документации получается, что ваша с МП и СД позиция выглядит - если без шелухи - примерно так: "если сервер принципиально не очищает половину мусора, то очистка мусора все равно работает, просто она наполовину беременная". Также как разработчик ДВС мог бы утверждать, что бензин для работы движка полезен, но не необходим. Ведь с его точки зрения изнутри - всё и без топлива хорошо. Искра идёт, коленвал крутится (стартёром) - значит движок и без топлива работает. Так и тут - с вашей точки зрения "изнутри движка", если половина мусора не собирается, то это не значит что сборка мусора не работает. Ведь "вал крутится". А с точки зрения "снаружи" важно другое. Убирается мусор или нет. И если мусор НЕ убирается, то как именно называлась кнопка, которой сборку забокировали, уже менее важно.Поздравляю тебя, Шарик, ты - балбес.(c)

неправильное сравнение, лучше сравнить с глушителем и его отсутствием.

Автору топика, архиох-а слушать надо ОЧЕНЬ критически, у него свое понимание доки, альтернативное.

по сабжу базу перенести(утилитой dd или b/r gbak-ом) на нормальный том с ext4 и не парить мосх (разрешить ОСи кэшировать файл базы).
увеличить размер страницы до как минимум 8, а лучше 16 кб.
размер кэша страниц разогнать побольше, при мнопольном доступе можно до десятков-сотен тысяч (если коннектов много то несколько тысяч)
память под сортировку увеличить мегабайт эдак соточку хотя бы

что за железо? ССД под базу само собой рекомендуется (разумеется серверный, с требуемым ресурсом под перезапись).
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218608
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока решил:
1) Увеличить размер страницы (на сервере SSD оказался) и кэша
2) Отключить sweep и делать его вручную через Service API по расписанию (надо еще придумать по какому).

Правда тестовую базу я сломал таки, придется сделать "фейковую" 2х недельную.

Симонов Денисm7m,

ну попробовать приписать +0 в ORDER BY конечно можно, хотя не факт что будет лучше

А почему это должно помочь ? я аналогичное видел в FAQ по FB где объяснялась как делать запрос БЕЗ использования индекса. Типа дескать на маленьком наборе записей это быстрее. А мне то как раз нужно, чтоб использовался индекс.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218609
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyчто за железо? ССД под базу само собой рекомендуется (разумеется серверный, с требуемым ресурсом под перезапись).

У ТС Embedded так что про крутое железо скорее всего можно забыть
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218615
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizard......
Симонов Денисm7m,

ну попробовать приписать +0 в ORDER BY конечно можно, хотя не факт что будет лучше

А почему это должно помочь ? я аналогичное видел в FAQ по FB где объяснялась как делать запрос БЕЗ использования индекса. Типа дескать на маленьком наборе записей это быстрее. А мне то как раз нужно, чтоб использовался индекс.

Он используется "дважды" при выборке по условию и при навигации

Однозначно надо чтобы индекс использовался при выборке по условию
А вот польза его использование при навигации для меня не очевидна

зы. Подробнее и точнее может объяснить тот кто знает механику лучше меня
ззы. Попробуй это времени много не займет
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218616
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, может ли влиять как-то на производительность запросов тот факт, что используется асинхронный режим записи в базу ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218625
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardПока решил
(-‸ლ)
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218642
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

навигация по индексу должна быть дешевле в этом запросе, потому что есть ограничение на количество строк FIRST 1 , а это значит что достаточно произвести частичное сканирование индекса, и для первого ключа указывающего на существующую запись выдать её и прекратить сканирование. Но это будет эффективней для плана
Код: plaintext
PLAN (TABLE1 ORDER IDX_TABLE1)

Это работало в 1.5, но было сломано в 2.x. Поэтому сейчас другой план, будет ли он эффективней без навигации по индексу сказать не берусь, но однозначно проигрывает плану в 1.5. Починить явной подстановкой плана или +0 это нельзя. Визуально то план может и будет тем же, но работать будет не так. Ибо этот план не раскрывает множество подробностей, видимых в EXPLAIN форме. В 3.0 это починили.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218692
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисm7m,

навигация по индексу должна быть дешевле в этом запросе, потому что есть ограничение на количество строк FIRST 1 , а это значит что достаточно произвести частичное сканирование индекса, и для первого ключа указывающего на существующую запись выдать её и прекратить сканирование. Но это будет эффективней для плана
Код: plaintext
PLAN (TABLE1 ORDER IDX_TABLE1)

Это работало в 1.5, но было сломано в 2.x. Поэтому сейчас другой план, будет ли он эффективней без навигации по индексу сказать не берусь, но однозначно проигрывает плану в 1.5. Починить явной подстановкой плана или +0 это нельзя. Визуально то план может и будет тем же, но работать будет не так. Ибо этот план не раскрывает множество подробностей, видимых в EXPLAIN форме. В 3.0 это починили.
Спасибо Денис, однако спрашивал не я
зы.по опыту я знаю какая разница во времени выполнения у запросов немного другого вида
(id - PK, doc - FK)
Код: sql
1.
2.
3.
  select * from tbl
  where doc= :doc
  order by id

и
Код: sql
1.
2.
3.
  select * from tbl
  where doc= :doc
  order by id+0


даже когда вытаскивается сотня записей из большой таблицы
(не в пользу первого)
ну по крайней мере на моих данных и моих задачах
вот поэтому у меня и сомнения
ззы. я вижу что у автора FIRST и используется один и тот-же индекс
и поэтому предлагаю(а не настаиваю) попробовать
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39218865
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тему можно считать закрытой. Проблема оказалась в конфигурации тестового сервера. С БД все норм.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219057
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladAriochДокументация однозначно уверяет, что rollback-garbage перестает собираться при заблокированном sweep.OMG
Где ты это прочитал ?

Rolled back garbage is never automatically cleared out.

This means that on a database with a lot of rolled back transactions, there could be a large build up of old copies of the rows that were updated and then rolled back.

Firebird will automatically sweep through the database and remove the remnants of rolled back transactions and this has two effects:

Слово never выделено вами.
Других кроме sweep способов удаления roll-back мусора - не указано

И да, я повторяю вопрос: если sweep не нужен и не относится никак к сборке мусора - то зачем он вообще? атавизм?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219061
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyАвтору топика, архиох-а слушать надо ОЧЕНЬ критически, у него свое понимание доки, альтернативное.


У меня - прямое и букальное понимание доки со сслыками и цитатами. У толпы д'Артаньянов же только иррациональной стремление доку обходить за километр и не трогать её вообще.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219080
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NightWizardПроблема оказалась в конфигурации тестового сервера.

Что было не так и как исправил?

Через год-два придут сюда люди из гугла со сходной проблемой и им будет полезно увидеть решение в явном виде
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219081
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по-моему, буйный
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219123
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochУ толпы д'Артаньянов же только иррациональной стремление доку обходить за километр и не трогать её вообще.-Дорогой, будь внимательней, в новостях передали, что какой-то сумасшедший едет по встречке на скоростном шоссе!
-Сумасшедший??? да их тут тысячи!!!
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219169
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ч.Т.Д.

читать документацию вы истерически боитесь и чтобы избежать разговора по существу начинаете кривляться "шумною толпою"
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219174
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochИ да, я повторяю вопрос: если sweep не нужен и не относится никак к сборке
мусора - то зачем он вообще?
Сколько раз надо повторить что его назначение - подвинуть счётчики транзакции прежде чем
до тебя это дойдёт?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219178
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

это самоцель такая, двигать счётчики чтобы была движуха?

хорошо, разжёвываю очевидное: зачем это нужно, если по вашим словам это никак не влияет на чистку мусора ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219190
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochзачем это нужно, если по вашим словам это никак не влияет на чистку мусора ?

Для внутренней кухни движка, тебе не интересной. В частности - вычисление размера активной
маски транзакций.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219225
NightWizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AriochNightWizardПроблема оказалась в конфигурации тестового сервера.

Что было не так и как исправил?

Через год-два придут сюда люди из гугла со сходной проблемой и им будет полезно увидеть решение в явном виде

Сдампил базу к себе на локальную машину - тут все ок, запросы отлично проходят. На сервере что не так, еще предстоит выяснить, но я cклоняюсь к тому, что дело в том, что корневой раздел там в ramfs, в т. ч. и /tmp нужный для FB + местj на этом RAM-диске ограничено.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219240
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Nightwizard!
You wrote on 19 апреля 2016 г. 14:50:00:

Nightwizard> Сдампил базу к себе на локальную машинунаши люди, в булочную, на машине не ездят! (с)
применительно к эксплуатации FB, термин "дампить базу" выглядит чужеродно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219245
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochСлово never выделено вами.Я спросил - где ты это прочитал.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39219246
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийпо-моему, буйный+много
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221117
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот только оставь вас на несколько дней. такого понапишут. Хорошо, что без спичек, а то бы спалили все.

NightWizardПрочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов
где вы такую хрень прочитали? я подозреваю, что вы прочитали, что после массового удаления/добавления записей необходимо вручную инициировать ПЕРЕСЧЕТ СТАТИСТИКИ ИНДЕКСОВ, т.е.
Set statistics index <indexname>

перестраивать индекс здесь нет никакой необходимости.

Теперь Arioch:
- про какую "документацию" ты все время твердишь?
- у меня в статьях написано, что sweep это ПРИНУДИТЕЛЬНАЯ сборка мусора по всей базе с попыткой подвинуть OIT. Обычная сборка мусора, которая возникает при чтении и update, никак не может подвинуть OIT, и затрагивает только читаемые/обновляемые версии. Только этим обычная сборка мусора отличается от sweep. Сам процесс сборки мусора один и тот же.
AriochДругих кроме sweep способов удаления roll-back мусора - не указано
я не знаю, в какой это "документации" так написано, но подозреваю, что написано для упрощения. Потому что, на самом деле:
- версии, созданные транзакцией, которая в состоянии rollback, являются однозначным мусором.
- версии, созданные committed транзакциями, неизвестно, мусор или нет (зависит от OAT и OST)
- OIT, напомню, является индикатором, что когда-то транзакция =OIT была завершена по rollback
- мусор что от rollback, что от committed - будет убран сборкой мусора одинаково, если будет обнаружен при чтении/update.
- сборка мусора не двигает OIT. Это делает sweep. Sweep пытается убрать мусор во всей БД, плюс подвинуть OIT вверх.
- автосвип настроен на OST-OIT = 20000. Т.е. когда rollback был сделан >=20 тысяч транзакций назад. OST является маркером актуальности версий. Т.е. версии с номером <OST являются мусором.

Все это так или иначе написано в моих статьях:
http://www.ibase.ru/mga/
http://www.ibase.ru/garbage/
http://www.ibase.ru/sweep/
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221127
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochчитать документацию вы истерически боитесь
ну ты бы хотя бы раз ссылку дал. Выкопал ты эти фразы вот отсюда
http://www.firebirdsql.org/manual/gfix-housekeeping.html
что есть мануал по гфиксу, написанный Norman Dunbar.

В его оправдание могу лишь сказать, что тематика сборки мусора, состояния транзакций, и sweep - сложная как для понимания, так и для объяснения. Я вроде бы лет за 10 нашел способ, как это объяснить максимально просто.
Максимально подробно и корректно про потроха версионности - в презентациях Влада, которые были на семинаре в Москве в 2014 году (семинар был платный, поэтому материалы есть только у тех, кто оплачивал). Но я считаю, что для популярного объяснения этот материал сложен, и начинать надо с чего попроще (с моих статей у меня на сайте).
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221138
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВыкопал ты эти фразы вот отсюда
http://www.firebirdsql.org/manual/gfix-housekeeping.html
что есть мануал по гфиксу, написанный Norman Dunbar.Гм... это кто-то вычитывал ? Ибо там ошибка на ошибке...
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221258
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvНо я считаю, что для популярного объяснения этот материал сложен, и начинать надо с чего попроще (с моих статей у меня на сайте).
Лучше техническим языком, без упрощений.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221292
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb userЛучше техническим языком, без упрощений.
я когда делал IBAnalyst и разбирался с вариантами взаимосвязи OIT, OST, OAT, Next
http://www.ibase.ru/summary/
у меня на это ушло примерно месяц. И через 2 недели я половину забыл. В общем, "технический" язык нужен только если собираешься модифицировать исходники Firebird. В остальных случаях нужно объяснять "на пальцах".
Для начала нужно уяснить, что солнце восходит на востоке, и заходит на западе. Дальше можно изучать вращение планет вокруг солнца, эллиптические орбиты, прецессию, формулы гравитационного взаимодействия, и прочую муть. Если интересно, конечно.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221600
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv- про какую "документацию" ты все время твердишь?

которую цитирую.
все ссылки в треде приведены

kdv подозреваю, что написано для упрощения

Вполне вероятно.

В документации сказано, что если отключить свип - то мусор не будет собираться и БД начнет распухать несобранным мусором.
д'Артаньяны говорят, что это чушь, и что они могут собрать любой мусор даже без свипа.

В общем-то без написнаия тестов дальше говорить не имеет смысла.

Как я уже сказал, с точки зрения разрабочика ДВС для работы двигателя бензин не нужен, достаточно исправного стартера и заряженного аккумулятора - и всё будет прекрасно крутиться.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221602
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvну ты бы хотя бы раз ссылку дал

я не то что "хотя бы раз" - я много раз ссылки приводил.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221635
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochвсе ссылки в треде приведены
ты выбрал неверный способ аргументации. Говоришь, "вот ваша документация", но там по gstat и gfix писал Norman Dunbar. Лично я не читал, что он писал, и видимо, hvlad тоже в ах.е. :-)
Значит, надо делать ревизию, тыкать носом, исправлять. Но это не высечено в камне. Лично у меня приоритетом (для написания статей) являются знания группы разработчиков.

AriochВ документации сказано, что если отключить свип - то мусор не будет собираться и БД начнет распухать несобранным мусором.
чушь написана, и я надеюсь, что ты сам это понимаешь. Хотя бы из того, что тут написал я. Отключение автосвипа (АВТО-свипа, а не свипа, и не сборки мусора - ручной свип "отключить" невозможно, а сборку мусора можно отключить только для конкретного коннекта, опцией isc_dpb_no_garbage_collect) на сборку мусора вообще не влияет, никак и никогда.
AriochВ общем-то без написнаия тестов дальше говорить не имеет смысла.
ну каких еще, нафиг, тестов? Последние тесты, которые я проводил - убедиться, что авто-свип у ФБ срабатывает по OST-OIT, а у ИБ - по OAT-OIT. И то этот тест был замороченный, его не всякий додумается, как делать.
Arioch с точки зрения разрабочика ДВС для работы двигателя бензин не нужен
вот тут - ошибка. без понимания версионности и сборки мусора (и автосвипа) невозможно сделать нормальную систему, которая не будет "периодически тормозить". И это видно что из этого топика, что из массы других вопросов здесь на форуме и к нам в техподдержку, и по анализу существующих БД.
Разработчики этого не понимают, и клали болт, с соответствующими результатами. И выясняется, что даже ты, который тут на форуме бог знает сколько, тоже до конца не в курсе :-)
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221754
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvвот тут - ошибка. без понимания версионности и сборки мусора (и автосвипа) невозможно сделать нормальную систему, которая не будет "периодически тормозить".
Это верно только для тех систем, в которых для отсутствия "периодических тормозов" необходимо наличие понимания версионности и сборки мусора (и автосвипа). Для всех остальных систем есть бесконечное пространство вариантов.
Вы же написали так, будто это верно для всех систем.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221776
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb userВы же написали так, будто это верно для всех систем.
на firebird или interbase? да, верно для всех систем. Не надо из меня идиота строить, что я специфику FB/IB транслирую на все остальные СУБД.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221780
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb user,

Ё, кто это? Уберите его отсюда, пожалуйста. Говорили про иб-фб, вдруг нет, он влез про "все субд". Мы тут где? В разделе Firebird. Где мы не тут? Не в разделе Сравнение СУБД. Или я сейчас вдруг переключусь, и про особенности разработки для Оракла или MS SQL начну вещать?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221786
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Ну лично я фразу "для всех систем" понял как "для всех информационних систем (программ), которые используют ФБ", но причины периодических тормозов которых не связаны с автосвипом. В таком прочтении фраза вполне себе "мирная".
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221803
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvfb user,

Ё, кто это?NickDee, вестимо. Не узнал ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221903
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miwaonlineно причины периодических тормозов которых не связаны с автосвипом.
я тебе клянусь, что там, где автосвип включен, периодические тормоза связаны с ним. А там где он выключен (sweep interval = 0), разрабы кладут болт на длительные транзакции, и там уже тормоза из-за накопления версий.
Так или иначе, тормоза связаны с непониманием версионности, совсем.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221908
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miwaonlineНу лично я фразу "для всех систем" понял как "для всех информационних систем (программ), которые используют ФБ", но причины периодических тормозов которых не связаны с автосвипом. В таком прочтении фраза вполне себе "мирная".
Я контекст не расширял.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221911
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fb userЯ контекст не расширял.
гм. тогда какое еще "бесконечное пространство вариантов" тут возможно?
fb user Для всех остальных систем есть бесконечное пространство вариантов.
для версионника нет никакого "бесконечного пространства". предлагаю подтвердить это утверждение хоть какими-то аргументами.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39221948
fb user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvfb userЯ контекст не расширял.
гм. тогда какое еще "бесконечное пространство вариантов" тут возможно?
Все нормально работающие (без периодических тормозов) системы на FB, для которых нет необходимости в такой штуке как "понимание версионности и сборки мусора (и автосвипа)".
Вы написали что такие системы невозможны: 19090071 .
Хотя если вы писали это из контекста "мы тут говорим только про тормоза из-за мусора", что скорей всего так и есть, тогда я не прав и извиняюсь.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222195
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
теоретег.
сраный.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222562
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvГоворишь, "вот ваша документация", но там по gstat и gfix писал Norman Dunbar.

"кто все эти люди?"

Хоть Norman Dunbar, хоть Cимонов Денис, хоть Вася Пупкин - файл лежит на официальном сайте в каталоге документации, так? Значит его туда кто-то положил. И это был не я.

kdvЗначит, надо делать ревизию, тыкать носом, исправлять.

Тыкать носом может только человек, способный эту документацию написать.
Например hvlad мог бы тыкнуть носом, или Сибиряков мог бы, но не тыкнули.
Так что имеем то, что имеем.

Я тыкать носом не могу, для меня документация - первоисточник.

kdvну каких еще, нафиг, тестов?

Вот таких: 19073621


kdvкоторая не будет "периодически тормозить"
kdvРазработчики этого не понимают, и клали болт

Дело в том, что в этом конкретном топике были не "периодические" тормоза, а вполне себе монотонно возрастающие. То есть *периодический* автосвип тут явно был не при чем.
А вот накопление мусора засоряющeго индексы и вынуждающего все чаще и чаще проверять версии записей только чтобы их отбросить - могли.

Вот тебе, кстати, ещё две цитаты:
1) sweep вообще не собирает мусор, вообще никогда и никак - 19073506
2) sweep собирает весь мусор, весь и всегда - http://ibase.ru/garbage/

И вот я должен разобраться кто из вас... ммм... ошибся, да ???
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222569
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov Он двигает застрявшие счётчики транзакций. Всё. Это его
единственно назначение.
Arioch1) sweep вообще не собирает мусор, вообще никогда и никак - 19073506

Перестань приписывать мне свои глупости, пожалуйста.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222574
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисArioch,

не каждый rollback требует sweep, а только тот что не превращён сервером в commit. И ещё ни СД, ни DS, ни МП ничего такого не утверждали.

Я правильно понимаю, что единственный "rollback автоматически превращаемый в commit" - это rollback который по той или иной причине вообще не создавал версий ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222576
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovОн двигает застрявшие счётчики транзакций. Всё

Слово "всё" мне конечно привиделось.

Dimitry SibiryakovЭто его единственно назначение.

Слово "единственное" - тоже.

И ты, кстати, очень удобненько забыл процитировать остальную часть сообщения.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222578
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochЯ правильно понимаю
Неправильно понимаешь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222581
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а ещё когда ?
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222593
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

http://ibase.ru/mga/
читаем COMMIT, ROLLBACK
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222605
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochНапример hvlad мог бы тыкнуть носом, или Сибиряков мог бы, но не тыкнули.
Так что имеем то, что имеем.
да, увы. они это просто не читали. Теперь прочитали. Будем править.

Ariochkdvну каких еще, нафиг, тестов?
Вот таких: 19073621
так проверяется-то элементарно. стартуем транзакцию, добавляем записи, жмем ресет или делаем явный rollback, стартуем еще несколько траназкций, чтобы убедиться, что OIT застряла, потом читаем записи, и проверяем наличие версий по gstat -r -t tablename.
Просто ты какую-то чешую пишешь.
"и заблокировав sweep мы тем самым блокируем счётчик OIT"
ты имеешь в виду, что OIT без свипа не подвинется? Ну да. И что? У меня есть статистика от базы, которая жила год, при этом OIT застряла в самом начале работы. И ничего страшного не случилось. OIT - это просто индикатор.
Застревание OIT можно получить просто стартовав транзакцию, ничего больше не делая, нажать reset.
Что, есть тут какие-то версии? Нет.

"блокируем сборку rollback-мусора между OIT и Next Transaction, так ?"
С чего вдруг? Сборка мусора как работала, так и работает. И она всегда идет между OIT и Next :-)

AriochВот тебе, кстати, ещё две цитаты:
1) sweep вообще не собирает мусор, вообще никогда и никак - 19073506
Сибиряков погорячился, потому что ты посчитал sweep каким-то особым типом сборки мусора. Sweep это и сборка мусора, и попытка подвинуть oit. OIT говорит о том, что есть транзакции rolled back, от которых МОГ остаться мусор. sweep вычитывает этот мусор, убирает его, и превращает rolled back в committed, таким образом "подвигая" OIT выше.
Но есть там мусор или нет - неизвестно, его может и не быть. Он мог быть давно убран другими транзакциями, которые НЕ умеют двигать OIT.
Допустим, OIT равно 50. свип должен убедиться, что либо нет мусора принадлежащего этой транзакции, либо этот мусор есть, и его надо убрать. Поэтому свип это И сборка мусора И продвижение OIT.

AriochЯ правильно понимаю, что единственный "rollback автоматически превращаемый в commit" - это rollback который по той или иной причине вообще не создавал версий ?
непонятно, что ты читаешь. в http://www.ibase.ru/mga/ в разделе "Commit, Rollback" написано, в каких случаях rollback превращается в коммит.
Добиться настоящего роллбэка не так-то просто. Его можно организовать
- обновив в одной транзакции около 100к записей или больше, сделать rollback
- стартануть транзакцию, нажать reset. при первом обращении к БД сервер обнаружит активную транзакцию, которая не может быть активной. И превратит ее из активной в rolled back
- стартовать транзакцию с параметром no_auto_undo, сделать роллбэк.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222620
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochИ ты, кстати, очень удобненько забыл процитировать остальную часть сообщения.

Нет, это ты очень удобненько вырвал ответ из контекста. Ответ на вопрос "в чём назначение
ХХХ" сильно отличается от ответа на вопрос "что делает ХХХ".

Назначение sweep - подвинуть счётчики транзакций. Всё.
Сборка мусора не является его назначением, а всего лишь побочным эффектом. Точка.
sweep не обязан собирать мусор, но делает это по своим личным причинам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222621
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

предваряя ужасный вопрос "а как же версии от rollback может убрать обычная сборка мусора?", заранее отвечаю:
при сборке мусора (которая возникает как минимум во время чтения) проверяется id транзакции, создавшей версию. И сравнивается с OST. И проверяется состояние этой транзакции. Если версия не последняя, и никому не нужна - убираем. Если версия создана транзакцией в состоянии rollback - убираем однозначно.
В этот момент превратить rollback в commit и подвинуть OIT невозможно, потому что нет уверенности, что мы видим все версии, созданные этой транзакцией rollback. Они могут быть еще где угодно. А вот свип - может, т.к. он собирает мусор во всей базе.
...
Рейтинг: 0 / 0
Перестройка индексов в Firebird
    #39222696
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvВ этот момент превратить rollback в commit и подвинуть OIT невозможно, потому
что нет уверенности, что мы видим все версии, созданные этой транзакцией rollback. Они
могут быть еще где угодно. А вот свип - может, т.к. он собирает мусор во всей базе.
Подытоживая: если ходящий раз в неделю поезд Владивосток-Москва останавливается в
Мухосранске, будет ошибкой
а) Называть его "поездом до Мухосранска";
б) Считать, что остальные шесть дней в неделю до Мухосранска никак не добраться.

В случае свипа и сборки мусора чайники обычно делают обе эти ошибки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
142 сообщений из 142, показаны все 6 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Перестройка индексов в Firebird
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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