|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Добрый день. Разрабатываю приложение, которое использует Firebird в конфигурации Embedded (платформа - Linux, версия FB - 2.1.5). База данных расположена на отдельном диске (без файловой системы - чисто на блочном устройстве). Есть несколько таблиц со структурой: Код: plsql 1. 2.
Для каждой создан индекс: Код: plsql 1.
Выполняю запрос: Код: plsql 1.
В итоге, при размере таблицы примерно в 700 000 записей первый такой запрос к таблице выполняется от 6 до 17 секунд. Последующие запросы отрабатывают быстрее (подозреваю, вследствие кэширования FB). И далее, чем больше записей, тем больше время выполнения запроса. Макс. время выполнения запроса видел - 65 секунд (!!!!). Прочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов: Код: plsql 1.
И да, это помогает. После перестройки индексов запросы выполняется очень быстро. НО есть две проблемы. 1) Если я завершаю свое приложение и отключаюсь от базы, то при последующем запуске и подключении нужно опять делать перестройку всех индексов - а это приводит к тому, что перестройка всех индексов занимает более 225 сек, что очень плохо. Почему Firebird не сохраняет высчитанные значение в файл базы данных, например ? 2) После перестройки индексов, все запросы из таблицы работают очень быстро, однако, со временем, при изменении таблицы, вновь растет время выполнения запросов. Есть ли какие-либо рекомендации, с какой частотой необходимо перестраивать индексы, чтобы быстро отрабатывались запросы к БД ? Надеюсь, кто-то сталкивался с таким и поможет найти решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:37 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizard1) Если я завершаю свое приложение и отключаюсь от базы, то при последующем запуске и подключении нужно опять делать перестройку всех индексов - а это приводит к тому, что перестройка всех индексов занимает более 225 сек, что очень плохо. Почему Firebird не сохраняет высчитанные значение в файл базы данных, например ? Коммит забыл сделать? NightWizard2) После перестройки индексов, все запросы из таблицы работают очень быстро, однако, со временем, при изменении таблицы, вновь растет время выполнения запросов. Есть ли какие-либо рекомендации, с какой частотой необходимо перестраивать индексы, чтобы быстро отрабатывались запросы к БД ? Перестраиваю индексы раз в сутки ночью. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:42 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
феерия просто Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:43 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardВ итоге, при размере таблицы примерно в 700 000 записей первый такой запрос к таблице выполняется от 6 до 17 секунд. Ты план этого запроса смотрел? PS: дальше идущий бред пропустил. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:44 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
__Avenger__NightWizard1) Если я завершаю свое приложение и отключаюсь от базы, то при последующем запуске и подключении нужно опять делать перестройку всех индексов - а это приводит к тому, что перестройка всех индексов занимает более 225 сек, что очень плохо. Почему Firebird не сохраняет высчитанные значение в файл базы данных, например ? Коммит забыл сделать? NightWizard2) После перестройки индексов, все запросы из таблицы работают очень быстро, однако, со временем, при изменении таблицы, вновь растет время выполнения запросов. Есть ли какие-либо рекомендации, с какой частотой необходимо перестраивать индексы, чтобы быстро отрабатывались запросы к БД ? Перестраиваю индексы раз в сутки ночью. При перестройки коммит для трнзакции делается. Я тоже хотел один раз в сутки делать, но база наполняется быстро довольно (в каждую такую табличку примерно 10 записей в 20 секунд добавляется - и сутками работает все). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:47 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardПочему Firebird не сохраняет высчитанные значение в файл базы данных, например ? Сохраняет, куда он денется. По крайней мере в файл. NightWizardПосле перестройки индексов, все запросы из таблицы работают очень быстро перестройки индексов - и кэширования данных, как самим сервером, так и операционкой NightWizardоднако, со временем, при изменении таблицы, вновь растет время выполнения запросов. Система работает - данные вытесняются из кэша. На момент запроса кэш полу-пустой и его надо заного считать с диска. В общем вам лучше в самом деле попробовать посмотреть статистику по вашим запросам, возможно удобнее в отдельно-стоящем сервере и IDE типа IBExpert. Не только планы запросов, но и их длительность и количество чтений с диска и из кэша. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:53 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardбаза наполняется быстро довольно (в каждую такую табличку примерно 10 записей в 20 секунд добавляется - и сутками работает все). Одна запись в две секунды. Мизерная нагрузка. Только полный дебилизм разработчика может заставить это тормозить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:55 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovNightWizardВ итоге, при размере таблицы примерно в 700 000 записей первый такой запрос к таблице выполняется от 6 до 17 секунд. Ты план этого запроса смотрел? PS: дальше идущий бред пропустил. Тут все ок: Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:56 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящийфеерия простои сборник мифов "древнего файрберда". NightWizardРазрабатываю приложение, которое использует Firebird в конфигурации Embedded (платформа - Linux, версия FB - 2.1.5)странно разрабатывать на снятой с техподдержки версии. NightWizardПрочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов:вот прямо так необходимо ? NightWizardпримерно 10 записей в 20 секунд добавляетсяNightWizardпри размере таблицы примерно в 700 000 записейРазмеры микроскопические и прирост тоже. Где план и статистика исполнения запроса? Сдается мне натуралом оно шпарит и диск САТА. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:58 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizard Код: plsql 1.
А зачем Int64, при аличии родного timestamp ? http://firebirdsql.su/doku.php?id=tipy_dannyx Ну, предполагая, что у вас третий диалект включён, а то и float получите... http://wm-help.net/lib/b/book/4054355128/189 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 14:58 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТолько полный дебилизм разработчика может заставить это тормозить. зависание OIT с распуханием индексов неактуальными записями? отключение сборки мусора навечно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:00 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochNightWizard Код: plsql 1.
А зачем Int64, при аличии родного timestamp ? http://firebirdsql.su/doku.php?id=tipy_dannyx Ну, предполагая, что у вас третий диалект включён, а то и float получите... http://wm-help.net/lib/b/book/4054355128/189 Диалект 3. Timestamp не подходит, так как точность до миллисекунд нужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:00 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardТут все ок: PLAN (TABLE1 ORDER IDX_TABLE1 INDEX (IDX_TABLE1)) Что об этом индексе говорит "gstat -i"? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:02 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardДиалект 3. Timestamp не подходит, так как точность до миллисекунд нужна. Точность timestamp - одна десятая миллисекунды. Чисто для информации. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:03 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:09 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch, Да, тут недоглядел. Но я пробовал менять и на timestamp - от этого быстрее оно не заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:11 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovNightWizardТут все ок: PLAN (TABLE1 ORDER IDX_TABLE1 INDEX (IDX_TABLE1)) Что об этом индексе говорит "gstat -i"? Блин, на сервере, где это тестировал gstat'а нет, как и увы gbak'а. Разберусь с этим вопросом. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:14 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardТут все ок: Код: plsql 1.
я бы не был столь оптимистичен вполне возможно что SORT был бы лучше чем ORDER ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:14 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizard, проверьте, что у вас не залипла Oldest Interesting Transaction http://www.firebirdsql.org/manual/gstat-example-header.html и что достаточно часто проходит сборка мусора ( sweep interval ) иначе у вас индексы должны распухать старыми записями и в пределе будет всё более похоже на чтение таблицы без индексов вообще ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:15 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Hello, Arioch! You wrote on 18 апреля 2016 г. 15:17:41: Arioch> проверьте, что у вас не залипла у него gfix-а нету, как и gstat-а Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:18 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
А вот интересно, предположим залипание OIT как поведет себя embedded сервер, когда он OIT "подвинет" - при выключении приложения ( и соотв. смерти транзакции ), или при следующем запуске? nbackup на embedded натравить едва ли получится... стало быть проверить залипание OIT в процессе работы embedded-сервера можно только "изнутри приложения", внешние утилиты просто не получат доступ к файлу БД ? или gstat всё же можно натравить по NFS/SMB на файл БД, открытой на другой машине встроенным сервером? Хотя бы заголовок БД считать, если не индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:21 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, ну значит или прoверять через API изнутри программы, или жёстко отстреливать программу на лету не давая записать в файл исправленный OIT (и все остальные кэши, ага) и потом копировать полуживой файл БД для вскрытия ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:23 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizard gstat'а нет, как и увы gbak'а Весело вам - живете как на пороховой бочке. P.S. Путь джедая-камикадзе - особенно труден. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:23 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
gfix как раз есть. Счас посмотрю, подумаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:23 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
DarkMaster, а толку с gbak'a на embedded 2.1 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:24 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch, Я так понял, что есть тестовый нормальный сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:26 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ariochкак поведет себя embedded сервер, когда он OIT "подвинет" - при выключении приложения ( и соотв. смерти транзакции ), или при следующем запуске? Ни то ни другое. Подвинуть может только sweep, а он стартует только при старте транзакции. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:26 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
DarkMasterЯ так понял, что есть тестовый нормальный сервер. Но к нему нет нормального DBA, что и превращает данный топик в очередное УГ. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:30 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochDarkMaster, а толку с gbak'a на embedded 2.1 ? Дык тут либо Service API, либо disconnect в приложении + gbak + connect приложения. В любом случае - must have. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:31 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardПрочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов Телега впереди лошади. 1) перед массовым и *монопольным* добавлением/изменением записей *бывает удобно* (чисто для скорости и только для неё, никаих необходимо и близко не стоит) отключить индексы. После этого, действительно, индексы *необходимо* включать - но вовсе не "после массовой вставки", а примитивно "после выключения индексов" (на монопольную операцию, если решили так делать). 2) после массового удаления/изменения записей (сравнимого по кол-ву с общим размером таблицы) образуется непропорционально много мусора. Его желательно - н не необходимо - почистить недожидаясь автоматической регулрно авто-сборки. Но индексы для этого трогать ЕМНИП не нужно, select count(*) from table1 вполне справится. Можно, конечно, и пересчётом индексов того-же добиться.... Это предполагая, что вы не отключали обычную сборку мусора по умолчанию ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:32 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
DarkMasterArioch, Я так понял, что есть тестовый нормальный сервер. ...на котором "котлдеты не подгорают" Если погорают - то конечн нафиг встройку, подключаться ibexpert'ом и смотреть всё интересное прямо в GUI ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:33 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochкак поведет себя embedded сервер, когда он OIT "подвинет" - при выключении приложения ( и соотв. смерти транзакции ), или при следующем запуске? Ни то ни другое. Подвинуть может только sweep, а он стартует только при старте транзакции. ...ага, вот оно, что происходит, скорее всего NightWizardто при последующем запуске и подключении нужно опять делать перестройку всех индексов - а это приводит к тому, что перестройка всех индексов занимает более 225 сек, что очень плохо ...ну а потом уже и индексы перестраиваются, после уборки ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:36 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
имхо, топег - фейк. аффтар - выбегалло. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:38 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochNightWizardПрочитал в документации, что после массового удаления/добавления записей необходимо вручную инициировать пересчет индексов Телега впереди лошади. 1) перед массовым и *монопольным* добавлением/изменением записей *бывает удобно* (чисто для скорости и только для неё, никаих необходимо и близко не стоит) отключить индексы. После этого, действительно, индексы *необходимо* включать - но вовсе не "после массовой вставки", а примитивно "после выключения индексов" (на монопольную операцию, если решили так делать). 2) после массового удаления/изменения записей (сравнимого по кол-ву с общим размером таблицы) образуется непропорционально много мусора. Его желательно - н не необходимо - почистить недожидаясь автоматической регулрно авто-сборки. Но индексы для этого трогать ЕМНИП не нужно, select count(*) from table1 вполне справится. Можно, конечно, и пересчётом индексов того-же добиться.... Это предполагая, что вы не отключали обычную сборку мусора по умолчанию Сборку мусора не отключал. Если не делать ALTER INDEX idx_Table1 ACTIVE, то даже при старте приложения (а это ведь и старт Embedded сервера по сути) медленно выполняются запросы - а какой мусор может быть у только что запущенного сервиса ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:39 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochкак поведет себя embedded сервер, когда он OIT "подвинет" - при выключении приложения ( и соотв. смерти транзакции ), или при следующем запуске? Ни то ни другое. Подвинуть может только sweep, а он стартует только при старте транзакции. но так даже лучше запустили программу, убедились что все быстро, остановили программу, скопировали файл БД на полноценный сервер как эталон "всё хорошо". запустили программу еще раз, погоняли час-два-три до тормозов, остановили и скопировали файл БД как эталон "всё плохо" потом искать разницу ( !! не подключаясь к ним сервером, а исключительно read-only утилитами типа GStat, ibexpert database inside, IBSurgeon DBInfo http://ib-aid.com/en/ibsurgeon-free-tools/ !! ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:40 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardкакой мусор может быть у только что запущенного сервиса ? Мусор - он в БД хранится и к процессам отношения не имеет. Особенность версионников. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:40 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochDimitry Sibiryakovпропущено... Ни то ни другое. Подвинуть может только sweep, а он стартует только при старте транзакции. но так даже лучше запустили программу, убедились что все быстро, остановили программу, скопировали файл БД на полноценный сервер как эталон "всё хорошо". запустили программу еще раз, погоняли час-два-три до тормозов, остановили и скопировали файл БД как эталон "всё плохо" потом искать разницу ( !! не подключаясь к ним сервером, а исключительно read-only утилитами типа GStat, ibexpert database inside, IBSurgeon DBInfo http://ib-aid.com/en/ibsurgeon-free-tools/ !! ) тормоза спустя две недели после работы софта начинаются примерно... Это осложняет ситуацию. Ладно, попробую как-нибудь сдампить "плохую" базу и ее посммтреть, видимо по-простому отделаться не выйдет (( ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:44 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Nightwizard> Ладно, попробую как-нибудь сдампить "плохую" базу у поциента mySQL... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:47 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardтормоза спустя две недели после работы софта начинаются примерно...Сколько там еще скелетов в шкафу? потом еще окажется что "сервер" это ноут на проце "атом" или распбери пи какой... NightWizardвидимо по-простому отделаться не выйдетДа, придется ознакомиться с документацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 15:57 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
вот кстати... если отключение сборки делалось не через настройку БД, а чере зсаму программу, то и смотреть это уже надо будет не только в заголовке БД, но и в исходниках А за сборку мусорных версий или несборку отвечает флаг no_garbage_collect, который может использоваться и в обычном коннекте в библиотеках прямого доступа (т. е. в приложениях, например для ускорения выборок в некоторых случаях). http://ibase.ru/ibmyths/ http://www.firebirdsql.org/manual/gfix-housekeeping.html ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:03 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardвидимо по-простому отделаться не выйдет Почему ? NightWizardтормоза спустя две недели после работы софта начинаются примерно. раз в неделю, в ночь с субботы на воскресене - перезапускайте вашего демона, 300 секунд перзапуск? не так и много. Другой вопрос, что ещё может исподволь накапливаться, спрятав одну проблему вместо исследования и решения - не подложите ли кому-нибудь грабли, на которые через несколько лет кто-то наступит? Впрочем, судя по отсутсвию резервного копирования - грабли в вашем случае никого не пугают ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:07 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ariochесли отключение сборки делалось не через настройку БД Никакой настройкой БД сборку мусора не отключить. В принципе. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:08 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardтормоза спустя две недели после работы софта начинаются примерно NightWizardв каждую такую табличку примерно 10 записей в 20 секунд добавляется - и сутками работает все Предположим, что очередные наблюдения во все таблицы заносятся одной транзакцией (которая, будем надеяться, потом закрывается без retaining). А не по отдельной транзакции на каждую новую строку каждой новой таблицы. 14*24*3600*(10/20) = 604800 NightWizardВ итоге, при размере таблицы примерно в 700 000 записей Хммм.... Ariochпосле массового удаления/изменения записей ( сравнимого по кол-ву с общим размером таблицы) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:17 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:18 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochIf you set the sweep interval to zero then automatic sweeping will be disabled. Какое слово из этого ты прочёл как "сборка мусора"? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:20 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:25 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
....эта статья, к сожалению, ничего не говорит про BLOB'ы и их handles ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:26 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Hello, Arioch! сборка мусора == garbage collection Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:28 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, автор 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:32 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch, отдохни уже. ты устал. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:33 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, Вас корёжит от официальной документации FB - а устал я. Ну-ну. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:41 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Отчет 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 .. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:42 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizard, Это - "хорошая" или "плохая" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:44 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch, ты в архитектуре сервера профан. на что и намекает, очень тактично кстати, DS. читай статьи, про то, что там внутри. что такое свип, зачем оно вообще надо и т.д. чтоб не особо напрягать, разверну мысль DS вширь: автосвип ты можешь отключить манипуляциями gfix, а сборку мусора - нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:48 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, Я тебе цитаты привел из официальной документаци, в которой свип считается если не синонимом, то необходимой частью сборки мусора. Нет свипа - нет (полной) сборки мусора. А неполная сборка мусора - это беременность наполовину. В исходниках сервера, вполне возможно, используется своя терминология противоречащая официальной документации, почему бы и нет. Но поскольку мы не в devel@, а на форуме для ширнармасс, то терминология документации подходит лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:54 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochNightWizard, Это - "хорошая" или "плохая" ? "плохая", с адскими тормозами ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:54 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
МимопроходящийArioch, ты в архитектуре сервера профан. на что и намекает, очень тактично кстати, DS. читай статьи, про то, что там внутри. что такое свип, зачем оно вообще надо и т.д. чтоб не особо напрягать, разверну мысль DS вширь: автосвип ты можешь отключить манипуляциями gfix, а сборку мусора - нет. А можно ссылочки на статьи "по системной части" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:55 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Особенно по архитектуре Embedded. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:56 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, автор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 ты там напиши - как это на документацию повлияет? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 16:59 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Hello, Arioch! You wrote on 18 апреля 2016 г. 17:03:05: Arioch> Я тебе цитаты привелшел бы ты.. в бухгалтерию! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:03 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardОсобенно по архитектуре Embedded. Embedded в данном слуае почти полностью совпадает с Classic Разницы две 1: нет защиты памяти сервера от ошибок в приложении. Если приложение - особенно после "двух недель" работы - начнёт неожиданно портить свою - и встроенного сервера - память, то может испортить файл БД. 2: нет внешнего интерфейса. При работающем приложении внешние программы типа gbak/gfix не могут надёжно читать нужную им информацию из БД - поточу что файл отстаёт от кэша в памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:03 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
МимопроходящийHello, Arioch! You wrote on 18 апреля 2016 г. 17:03:05: Arioch> Я тебе цитаты привелшел бы ты.. в бухгалтерию! AriochВас корёжит от официальной документации FB ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:04 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizard, http://ibase.ru/transactions/ Тaкже http://ibase.ru/performance/ "Описание методов доступа к данным, используемых ядром Firebird" ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:09 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch, благодарю ! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:11 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardPage size 4096 "Уже смешно." (с) NightWizardPage buffers 0 И сколько их там настроено в firebird.conf? NightWizardDepth: 3 ЧиТД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:16 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий, вот, кстати http://ibase.ru/garbage/ Самый известный момент сборки мусора – это sweep .... Если бы мусор собирался только при помощи sweep ... Вообще сборка мусора бывает следующих видов: 1) sweep, автоматический или ручной 2) кооперативная явная.... 3) кооперативная фоновая.... Но у бурятских д'Артаньянов есть особая единственно-правильная версия FB, в которой sweep не убирает мусор и вообще ничего не делает ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:18 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovNightWizardPage size 4096 "Уже смешно." (с) NightWizardPage buffers 0 И сколько их там настроено в firebird.conf? NightWizardDepth: 3 ЧиТД. Это ведь к размеру кэша все относится ? DefaultDbCachePages менял в сторону увеличения, улучшений не было. Размер страницы правда не трогал пока ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:19 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizard, первое также относится к "атому" чтения/записи на диск и выделения места аналогично размеру кластера в FAT/NTFS ваша встройка на каком диске работает ? если там какая-нибудь флэшка, то весьма возможно, чтраница перезаписи у неё не 4 кб, а 16 иили 64 - https://en.wikipedia.org/wiki/Write_amplification ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:23 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch, хватит спорит о том чего не понимаешь. Sweep включает в себя сборку мусора. Поэтом противоречий в http://ibase.ru/garbage/ не вижу. Но свип это не только сборка мусора. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:27 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Код: plsql 1.
Сколько записей выдает этот запрос и сколько времени он выполняется ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:28 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Симонов ДенисПоэтом противоречий в http://ibase.ru/garbage/ не вижу а ее там и нет вся документация утверждает, что сборка мусора состоит из нескольких компонентов, одним из которых явлется sweep ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:29 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardDefaultDbCachePages менял в сторону увеличения, улучшений не было. Что, с умолчательных 75 поднял аж до 128?.. У тебя в одном только индексе почти 2 тысячи страниц. Так что учитывая отсутствие файлового кэша ОСи эта штука жить нормально не может. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:31 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ariochвся документация утверждает, что сборка мусора состоит из нескольких компонентов, одним из которых явлется sweep Документация этого не утверждает. Она утверждает, что sweep решает одну-единственную задачу, и побочным эффектом его является сборка мусора. Он, собственно говоря, мусор убирать не обязан, это всего лишь повышает его эффективность. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:36 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Так что учитывая отсутствие файлового кэша ОСи ??? Dimitry Sibiryakovс умолчательных 75 Ох... Почти не пользовался embedded и как-то его перевод с супера на классик не отслеживал.... http://www.firebirdsql.org/manual/gfix-buffers.html http://www.firebirdsql.org/manual/gstat-example-header.html ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:40 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovрешает одну-единственную задачу - а именно сборку мусора вполне определенного типа. В общем, если не нравится документация - никто не мешает её переписать и ввести другие термины, лучше, точнее удобнее, привычнее, приятнее, you name it. Но пока они в документации такие, как я процитировал. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:43 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch??? Насколько я помню, файловый кэш не работает на RAW разделах, где аффтар держит базу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:43 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Логично, для того они и придуманы..... Тогда - да, жуткое бутылочное горло. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:45 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ariochа именно сборку мусора вполне определенного типа. Не угадал. Он двигает застрявшие счётчики транзакций. Всё. Это его единственно назначение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:51 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
m7m, а какой смысл это узнавать. У него совсем другой запрос Код: sql 1.
и план получается с навигацией по индексу, но не самый оптимальный Код: plaintext
было бы быстрее если план был бы таким Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 17:54 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
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 Вот ваша пользовательская документация - она возможно и не угадала. Но это вопрос к документации, а не к пользователям ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:00 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ariochа я вообще не гадаю. я читаю и цитирую вашу документацию Если тебе хочется чтобы "the remnants of rolled back transactions" были мусором - это твои проблемы. В реальности движка это всего лишь счётчик в заголовке и бит в TIP. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:03 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЕсли тебе хочется не мне, а официальной документации FB, кторую я тут - ежинственный из всех - цитирую. Dimitry SibiryakovВ реальности движка это всего лишь счётчик в заголовке и бит в TIP Вполне возможно. 19073211 PS. И заблокировав sweep мы тем самым блокируем счётчик OIT и блокируем сборку rollback-мусора между OIT и Next Transaction, так ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:08 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochИ заблокировав sweep мы тем самым блокируем счётчик OIT и блокируем сборку rollback-мусора между OIT и Next Transaction, так ? Хороший вопрос. Не факт. Проверка живости транзакции выполняется при любом чтении. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:15 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Тогда почему sweep необходим ? Либо автоматический свип, либо ручной, либо замена БД на другой новый файл через B&R - почему нужна? Документация однозначно уверяет, что rollback-garbage перестает собираться при заблокированном sweep. У меня нет причин ей не доверять. Но я вполне допускаю, что документация могла устареть и свип больше не необходм. Но ещё раз - вопрос в данном случае не к пользователю, а к документации. А по текущей документации получается, что ваша с МП и СД позиция выглядит - если без шелухи - примерно так: "если сервер принципиально не очищает половину мусора, то очистка мусора все равно работает, просто она наполовину беременная". Также как разработчик ДВС мог бы утверждать, что бензин для работы движка полезен, но не необходим. Ведь с его точки зрения изнутри - всё и без топлива хорошо. Искра идёт, коленвал крутится (стартёром) - значит движок и без топлива работает. Так и тут - с вашей точки зрения "изнутри движка", если половина мусора не собирается, то это не значит что сборка мусора не работает. Ведь "вал крутится". А с точки зрения "снаружи" важно другое. Убирается мусор или нет. И если мусор НЕ убирается, то как именно называлась кнопка, которой сборку забокировали, уже менее важно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:27 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
упёртый на своей волне Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:35 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochТогда почему sweep необходим ? Повторяю медленно: чтобы подвинуть счётчики транзакций. Точка. Других назначений у него нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:41 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch, не каждый rollback требует sweep, а только тот что не превращён сервером в commit. И ещё ни СД, ни DS, ни МП ничего такого не утверждали. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:42 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Симонов Денисm7m, а какой смысл это узнавать. У него совсем другой запрос Код: sql 1.
и план получается с навигацией по индексу, но не самый оптимальный Код: plaintext
было бы быстрее если план был бы таким Код: plaintext
вот почти для этого и надо чтобы узнать а стоит ли менять в запросе план с ORDER на SORT зы. я видел какой у него запрос хотя я может и не прав в своем "желании" ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:49 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
m7m, ну попробовать приписать +0 в ORDER BY конечно можно, хотя не факт что будет лучше ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 18:55 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochИ заблокировав sweep мы тем самым блокируем счётчик OIT и блокируем сборку rollback-мусора между OIT и Next Transaction, так ?Нет ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 19:05 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochДокументация однозначно уверяет, что rollback-garbage перестает собираться при заблокированном sweep.OMG Где ты это прочитал ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 19:05 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochА по текущей документации получается, что ваша с МП и СД позиция выглядит - если без шелухи - примерно так: "если сервер принципиально не очищает половину мусора, то очистка мусора все равно работает, просто она наполовину беременная". Также как разработчик ДВС мог бы утверждать, что бензин для работы движка полезен, но не необходим. Ведь с его точки зрения изнутри - всё и без топлива хорошо. Искра идёт, коленвал крутится (стартёром) - значит движок и без топлива работает. Так и тут - с вашей точки зрения "изнутри движка", если половина мусора не собирается, то это не значит что сборка мусора не работает. Ведь "вал крутится". А с точки зрения "снаружи" важно другое. Убирается мусор или нет. И если мусор НЕ убирается, то как именно называлась кнопка, которой сборку забокировали, уже менее важно.Поздравляю тебя, Шарик, ты - балбес.(c) неправильное сравнение, лучше сравнить с глушителем и его отсутствием. Автору топика, архиох-а слушать надо ОЧЕНЬ критически, у него свое понимание доки, альтернативное. по сабжу базу перенести(утилитой dd или b/r gbak-ом) на нормальный том с ext4 и не парить мосх (разрешить ОСи кэшировать файл базы). увеличить размер страницы до как минимум 8, а лучше 16 кб. размер кэша страниц разогнать побольше, при мнопольном доступе можно до десятков-сотен тысяч (если коннектов много то несколько тысяч) память под сортировку увеличить мегабайт эдак соточку хотя бы что за железо? ССД под базу само собой рекомендуется (разумеется серверный, с требуемым ресурсом под перезапись). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 20:46 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Пока решил: 1) Увеличить размер страницы (на сервере SSD оказался) и кэша 2) Отключить sweep и делать его вручную через Service API по расписанию (надо еще придумать по какому). Правда тестовую базу я сломал таки, придется сделать "фейковую" 2х недельную. Симонов Денисm7m, ну попробовать приписать +0 в ORDER BY конечно можно, хотя не факт что будет лучше А почему это должно помочь ? я аналогичное видел в FAQ по FB где объяснялась как делать запрос БЕЗ использования индекса. Типа дескать на маленьком наборе записей это быстрее. А мне то как раз нужно, чтоб использовался индекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 20:48 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyчто за железо? ССД под базу само собой рекомендуется (разумеется серверный, с требуемым ресурсом под перезапись). У ТС Embedded так что про крутое железо скорее всего можно забыть ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 20:50 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizard...... Симонов Денисm7m, ну попробовать приписать +0 в ORDER BY конечно можно, хотя не факт что будет лучше А почему это должно помочь ? я аналогичное видел в FAQ по FB где объяснялась как делать запрос БЕЗ использования индекса. Типа дескать на маленьком наборе записей это быстрее. А мне то как раз нужно, чтоб использовался индекс. Он используется "дважды" при выборке по условию и при навигации Однозначно надо чтобы индекс использовался при выборке по условию А вот польза его использование при навигации для меня не очевидна зы. Подробнее и точнее может объяснить тот кто знает механику лучше меня ззы. Попробуй это времени много не займет ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 21:08 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Кстати, может ли влиять как-то на производительность запросов тот факт, что используется асинхронный режим записи в базу ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 21:09 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardПока решил (-‸ლ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 21:20 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
m7m, навигация по индексу должна быть дешевле в этом запросе, потому что есть ограничение на количество строк FIRST 1 , а это значит что достаточно произвести частичное сканирование индекса, и для первого ключа указывающего на существующую запись выдать её и прекратить сканирование. Но это будет эффективней для плана Код: plaintext
Это работало в 1.5, но было сломано в 2.x. Поэтому сейчас другой план, будет ли он эффективней без навигации по индексу сказать не берусь, но однозначно проигрывает плану в 1.5. Починить явной подстановкой плана или +0 это нельзя. Визуально то план может и будет тем же, но работать будет не так. Ибо этот план не раскрывает множество подробностей, видимых в EXPLAIN форме. В 3.0 это починили. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2016, 22:21 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Симонов Денисm7m, навигация по индексу должна быть дешевле в этом запросе, потому что есть ограничение на количество строк FIRST 1 , а это значит что достаточно произвести частичное сканирование индекса, и для первого ключа указывающего на существующую запись выдать её и прекратить сканирование. Но это будет эффективней для плана Код: plaintext
Это работало в 1.5, но было сломано в 2.x. Поэтому сейчас другой план, будет ли он эффективней без навигации по индексу сказать не берусь, но однозначно проигрывает плану в 1.5. Починить явной подстановкой плана или +0 это нельзя. Визуально то план может и будет тем же, но работать будет не так. Ибо этот план не раскрывает множество подробностей, видимых в EXPLAIN форме. В 3.0 это починили. Спасибо Денис, однако спрашивал не я зы.по опыту я знаю какая разница во времени выполнения у запросов немного другого вида (id - PK, doc - FK) Код: sql 1. 2. 3.
и Код: sql 1. 2. 3.
даже когда вытаскивается сотня записей из большой таблицы (не в пользу первого) ну по крайней мере на моих данных и моих задачах вот поэтому у меня и сомнения ззы. я вижу что у автора FIRST и используется один и тот-же индекс и поэтому предлагаю(а не настаиваю) попробовать ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 07:26 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Тему можно считать закрытой. Проблема оказалась в конфигурации тестового сервера. С БД все норм. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 10:57 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
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 не нужен и не относится никак к сборке мусора - то зачем он вообще? атавизм? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 13:21 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyАвтору топика, архиох-а слушать надо ОЧЕНЬ критически, у него свое понимание доки, альтернативное. У меня - прямое и букальное понимание доки со сслыками и цитатами. У толпы д'Артаньянов же только иррациональной стремление доку обходить за километр и не трогать её вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 13:23 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
NightWizardПроблема оказалась в конфигурации тестового сервера. Что было не так и как исправил? Через год-два придут сюда люди из гугла со сходной проблемой и им будет полезно увидеть решение в явном виде ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 13:30 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
по-моему, буйный Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 13:30 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochУ толпы д'Артаньянов же только иррациональной стремление доку обходить за километр и не трогать её вообще.-Дорогой, будь внимательней, в новостях передали, что какой-то сумасшедший едет по встречке на скоростном шоссе! -Сумасшедший??? да их тут тысячи!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 13:55 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ч.Т.Д. читать документацию вы истерически боитесь и чтобы избежать разговора по существу начинаете кривляться "шумною толпою" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:16 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochИ да, я повторяю вопрос: если sweep не нужен и не относится никак к сборке мусора - то зачем он вообще? Сколько раз надо повторить что его назначение - подвинуть счётчики транзакции прежде чем до тебя это дойдёт?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:18 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, это самоцель такая, двигать счётчики чтобы была движуха? хорошо, разжёвываю очевидное: зачем это нужно, если по вашим словам это никак не влияет на чистку мусора ? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:21 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ariochзачем это нужно, если по вашим словам это никак не влияет на чистку мусора ? Для внутренней кухни движка, тебе не интересной. В частности - вычисление размера активной маски транзакций. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:27 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochNightWizardПроблема оказалась в конфигурации тестового сервера. Что было не так и как исправил? Через год-два придут сюда люди из гугла со сходной проблемой и им будет полезно увидеть решение в явном виде Сдампил базу к себе на локальную машину - тут все ок, запросы отлично проходят. На сервере что не так, еще предстоит выяснить, но я cклоняюсь к тому, что дело в том, что корневой раздел там в ramfs, в т. ч. и /tmp нужный для FB + местj на этом RAM-диске ограничено. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:43 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Hello, Nightwizard! You wrote on 19 апреля 2016 г. 14:50:00: Nightwizard> Сдампил базу к себе на локальную машинунаши люди, в булочную, на машине не ездят! (с) применительно к эксплуатации FB, термин "дампить базу" выглядит чужеродно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:52 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochСлово never выделено вами.Я спросил - где ты это прочитал. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:55 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящийпо-моему, буйный+много ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2016, 14:55 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
вот только оставь вас на несколько дней. такого понапишут. Хорошо, что без спичек, а то бы спалили все. 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/ ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 12:53 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ariochчитать документацию вы истерически боитесь ну ты бы хотя бы раз ссылку дал. Выкопал ты эти фразы вот отсюда http://www.firebirdsql.org/manual/gfix-housekeeping.html что есть мануал по гфиксу, написанный Norman Dunbar. В его оправдание могу лишь сказать, что тематика сборки мусора, состояния транзакций, и sweep - сложная как для понимания, так и для объяснения. Я вроде бы лет за 10 нашел способ, как это объяснить максимально просто. Максимально подробно и корректно про потроха версионности - в презентациях Влада, которые были на семинаре в Москве в 2014 году (семинар был платный, поэтому материалы есть только у тех, кто оплачивал). Но я считаю, что для популярного объяснения этот материал сложен, и начинать надо с чего попроще (с моих статей у меня на сайте). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 12:59 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdvВыкопал ты эти фразы вот отсюда http://www.firebirdsql.org/manual/gfix-housekeeping.html что есть мануал по гфиксу, написанный Norman Dunbar.Гм... это кто-то вычитывал ? Ибо там ошибка на ошибке... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 13:05 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdvНо я считаю, что для популярного объяснения этот материал сложен, и начинать надо с чего попроще (с моих статей у меня на сайте). Лучше техническим языком, без упрощений. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 14:20 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
fb userЛучше техническим языком, без упрощений. я когда делал IBAnalyst и разбирался с вариантами взаимосвязи OIT, OST, OAT, Next http://www.ibase.ru/summary/ у меня на это ушло примерно месяц. И через 2 недели я половину забыл. В общем, "технический" язык нужен только если собираешься модифицировать исходники Firebird. В остальных случаях нужно объяснять "на пальцах". Для начала нужно уяснить, что солнце восходит на востоке, и заходит на западе. Дальше можно изучать вращение планет вокруг солнца, эллиптические орбиты, прецессию, формулы гравитационного взаимодействия, и прочую муть. Если интересно, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 14:41 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdv- про какую "документацию" ты все время твердишь? которую цитирую. все ссылки в треде приведены kdv подозреваю, что написано для упрощения Вполне вероятно. В документации сказано, что если отключить свип - то мусор не будет собираться и БД начнет распухать несобранным мусором. д'Артаньяны говорят, что это чушь, и что они могут собрать любой мусор даже без свипа. В общем-то без написнаия тестов дальше говорить не имеет смысла. Как я уже сказал, с точки зрения разрабочика ДВС для работы двигателя бензин не нужен, достаточно исправного стартера и заряженного аккумулятора - и всё будет прекрасно крутиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 17:45 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdvну ты бы хотя бы раз ссылку дал я не то что "хотя бы раз" - я много раз ссылки приводил. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 17:46 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Ariochвсе ссылки в треде приведены ты выбрал неверный способ аргументации. Говоришь, "вот ваша документация", но там по gstat и gfix писал Norman Dunbar. Лично я не читал, что он писал, и видимо, hvlad тоже в ах.е. :-) Значит, надо делать ревизию, тыкать носом, исправлять. Но это не высечено в камне. Лично у меня приоритетом (для написания статей) являются знания группы разработчиков. AriochВ документации сказано, что если отключить свип - то мусор не будет собираться и БД начнет распухать несобранным мусором. чушь написана, и я надеюсь, что ты сам это понимаешь. Хотя бы из того, что тут написал я. Отключение автосвипа (АВТО-свипа, а не свипа, и не сборки мусора - ручной свип "отключить" невозможно, а сборку мусора можно отключить только для конкретного коннекта, опцией isc_dpb_no_garbage_collect) на сборку мусора вообще не влияет, никак и никогда. AriochВ общем-то без написнаия тестов дальше говорить не имеет смысла. ну каких еще, нафиг, тестов? Последние тесты, которые я проводил - убедиться, что авто-свип у ФБ срабатывает по OST-OIT, а у ИБ - по OAT-OIT. И то этот тест был замороченный, его не всякий додумается, как делать. Arioch с точки зрения разрабочика ДВС для работы двигателя бензин не нужен вот тут - ошибка. без понимания версионности и сборки мусора (и автосвипа) невозможно сделать нормальную систему, которая не будет "периодически тормозить". И это видно что из этого топика, что из массы других вопросов здесь на форуме и к нам в техподдержку, и по анализу существующих БД. Разработчики этого не понимают, и клали болт, с соответствующими результатами. И выясняется, что даже ты, который тут на форуме бог знает сколько, тоже до конца не в курсе :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 18:09 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdvвот тут - ошибка. без понимания версионности и сборки мусора (и автосвипа) невозможно сделать нормальную систему, которая не будет "периодически тормозить". Это верно только для тех систем, в которых для отсутствия "периодических тормозов" необходимо наличие понимания версионности и сборки мусора (и автосвипа). Для всех остальных систем есть бесконечное пространство вариантов. Вы же написали так, будто это верно для всех систем. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 19:54 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
fb userВы же написали так, будто это верно для всех систем. на firebird или interbase? да, верно для всех систем. Не надо из меня идиота строить, что я специфику FB/IB транслирую на все остальные СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 20:22 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
fb user, Ё, кто это? Уберите его отсюда, пожалуйста. Говорили про иб-фб, вдруг нет, он влез про "все субд". Мы тут где? В разделе Firebird. Где мы не тут? Не в разделе Сравнение СУБД. Или я сейчас вдруг переключусь, и про особенности разработки для Оракла или MS SQL начну вещать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 20:26 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdv, Ну лично я фразу "для всех систем" понял как "для всех информационних систем (программ), которые используют ФБ", но причины периодических тормозов которых не связаны с автосвипом. В таком прочтении фраза вполне себе "мирная". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 20:33 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdvfb user, Ё, кто это?NickDee, вестимо. Не узнал ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 20:50 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
miwaonlineно причины периодических тормозов которых не связаны с автосвипом. я тебе клянусь, что там, где автосвип включен, периодические тормоза связаны с ним. А там где он выключен (sweep interval = 0), разрабы кладут болт на длительные транзакции, и там уже тормоза из-за накопления версий. Так или иначе, тормоза связаны с непониманием версионности, совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 23:00 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
miwaonlineНу лично я фразу "для всех систем" понял как "для всех информационних систем (программ), которые используют ФБ", но причины периодических тормозов которых не связаны с автосвипом. В таком прочтении фраза вполне себе "мирная". Я контекст не расширял. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 23:12 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
fb userЯ контекст не расширял. гм. тогда какое еще "бесконечное пространство вариантов" тут возможно? fb user Для всех остальных систем есть бесконечное пространство вариантов. для версионника нет никакого "бесконечного пространства". предлагаю подтвердить это утверждение хоть какими-то аргументами. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2016, 23:19 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdvfb userЯ контекст не расширял. гм. тогда какое еще "бесконечное пространство вариантов" тут возможно? Все нормально работающие (без периодических тормозов) системы на FB, для которых нет необходимости в такой штуке как "понимание версионности и сборки мусора (и автосвипа)". Вы написали что такие системы невозможны: 19090071 . Хотя если вы писали это из контекста "мы тут говорим только про тормоза из-за мусора", что скорей всего так и есть, тогда я не прав и извиняюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 00:22 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
теоретег. сраный. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 11:17 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdvГоворишь, "вот ваша документация", но там по gstat и gfix писал Norman Dunbar. "кто все эти люди?" Хоть Norman Dunbar, хоть Cимонов Денис, хоть Вася Пупкин - файл лежит на официальном сайте в каталоге документации, так? Значит его туда кто-то положил. И это был не я. kdvЗначит, надо делать ревизию, тыкать носом, исправлять. Тыкать носом может только человек, способный эту документацию написать. Например hvlad мог бы тыкнуть носом, или Сибиряков мог бы, но не тыкнули. Так что имеем то, что имеем. Я тыкать носом не могу, для меня документация - первоисточник. kdvну каких еще, нафиг, тестов? Вот таких: 19073621 kdvкоторая не будет "периодически тормозить" kdvРазработчики этого не понимают, и клали болт Дело в том, что в этом конкретном топике были не "периодические" тормоза, а вполне себе монотонно возрастающие. То есть *периодический* автосвип тут явно был не при чем. А вот накопление мусора засоряющeго индексы и вынуждающего все чаще и чаще проверять версии записей только чтобы их отбросить - могли. Вот тебе, кстати, ещё две цитаты: 1) sweep вообще не собирает мусор, вообще никогда и никак - 19073506 2) sweep собирает весь мусор, весь и всегда - http://ibase.ru/garbage/ И вот я должен разобраться кто из вас... ммм... ошибся, да ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 14:58 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Он двигает застрявшие счётчики транзакций. Всё. Это его единственно назначение. Arioch1) sweep вообще не собирает мусор, вообще никогда и никак - 19073506 Перестань приписывать мне свои глупости, пожалуйста. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 15:03 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, не каждый rollback требует sweep, а только тот что не превращён сервером в commit. И ещё ни СД, ни DS, ни МП ничего такого не утверждали. Я правильно понимаю, что единственный "rollback автоматически превращаемый в commit" - это rollback который по той или иной причине вообще не создавал версий ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 15:05 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovОн двигает застрявшие счётчики транзакций. Всё Слово "всё" мне конечно привиделось. Dimitry SibiryakovЭто его единственно назначение. Слово "единственное" - тоже. И ты, кстати, очень удобненько забыл процитировать остальную часть сообщения. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 15:07 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochЯ правильно понимаю Неправильно понимаешь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 15:08 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, а ещё когда ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 15:08 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
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, сделать роллбэк. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 15:35 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
AriochИ ты, кстати, очень удобненько забыл процитировать остальную часть сообщения. Нет, это ты очень удобненько вырвал ответ из контекста. Ответ на вопрос "в чём назначение ХХХ" сильно отличается от ответа на вопрос "что делает ХХХ". Назначение sweep - подвинуть счётчики транзакций. Всё. Сборка мусора не является его назначением, а всего лишь побочным эффектом. Точка. sweep не обязан собирать мусор, но делает это по своим личным причинам. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 15:49 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
Arioch, предваряя ужасный вопрос "а как же версии от rollback может убрать обычная сборка мусора?", заранее отвечаю: при сборке мусора (которая возникает как минимум во время чтения) проверяется id транзакции, создавшей версию. И сравнивается с OST. И проверяется состояние этой транзакции. Если версия не последняя, и никому не нужна - убираем. Если версия создана транзакцией в состоянии rollback - убираем однозначно. В этот момент превратить rollback в commit и подвинуть OIT невозможно, потому что нет уверенности, что мы видим все версии, созданные этой транзакцией rollback. Они могут быть еще где угодно. А вот свип - может, т.к. он собирает мусор во всей базе. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 15:49 |
|
Перестройка индексов в Firebird
|
|||
---|---|---|---|
#18+
kdvВ этот момент превратить rollback в commit и подвинуть OIT невозможно, потому что нет уверенности, что мы видим все версии, созданные этой транзакцией rollback. Они могут быть еще где угодно. А вот свип - может, т.к. он собирает мусор во всей базе. Подытоживая: если ходящий раз в неделю поезд Владивосток-Москва останавливается в Мухосранске, будет ошибкой а) Называть его "поездом до Мухосранска"; б) Считать, что остальные шесть дней в неделю до Мухосранска никак не добраться. В случае свипа и сборки мусора чайники обычно делают обе эти ошибки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2016, 16:34 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1562211]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
136ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 506ms |
0 / 0 |