powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
25 сообщений из 189, страница 6 из 8
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403721
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ты можешь сформулировать пользу этих сообщений в логе. Я вот например не вижу никакой. Вот что мне с того факта что при шатдауне было модифицировано такое то количество страниц в такой то таблице, началось это тогда то, закончилось тогда то. Как это вообще планируется использовать?
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403725
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисты можешь сформулировать пользу этих сообщений в логе. Я вот например не вижу никакой. Вот что мне с того факта что при шатдауне было модифицировано такое то количество страниц в такой то таблице, началось это тогда то, закончилось тогда то.Если кто-то из Источников Света скажет, что базу Firebird после шатдауна всегда можно "упаковывать в чемодан", копировать куда-то и проч., несмотря на идущие ней откаты DML'ей - всё, вопрос закрываем.

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

Симонов ДенисКак это вообще планируется использовать?Я бы просто делал скриптом:
1) шатдаун базы:
Код: plaintext
1.
2.
3.
4.
5.
#run: supertee -n -t db_shutdown_$(date +'%Y%m%d_%H%M%S').log ./db_shutdown.sh
dbname=localhost/3330:t10e9
echo $(echo -n $(date +'%Y-%m-%d %H:%M:%S.%N')|cut -c1-24) starting shutdown. . .
gfix -shut full -force 0 $dbname -user sysdba -pas masterke
echo $(echo -n $(date +'%Y-%m-%d %H:%M:%S.%N')|cut -c1-24) finish shutdown.
gstat -h $dbname -user sysdba -pas masterke | grep -i attributes

- и далее в этом же скрипте:
2) tail -f firebird.log - и смотрел бы, ЧТО ТАМ появляется.

Если шатдаун пришелся именно на активные DML'и, то сообщение об откатах появится в логе сразу же .
Если это сообщение будет типа такого: "<timestamp> start rollback changes on table T1, ip=192.168.12.34, connect # 2345, statement: <тут первые 300...500 букаф этого стейтмента>" - то ждём дальше "симметричного" ему сообщения об окончании по коннекту 2345.
Базу можно считать действительно закрытой, только когда число сообщений с фразами "start rollback chanes" будет равно "finish tollback changes".

ЗЫ. Ты вроде пытался поиграться DML'ями с табличкой-"миллиардершей" ? У тебя, ЕМНИП, диска тогда не хватило. Рекомендую-таки найти 100 Гб хотя бы. Сразу увидишь, что это за зверюга :-)
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403729
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"600 сообщений в логе", "не страшно", "диск не переполнится". Проникся.


Таблоид> базу Firebird после шатдауна всегда можно "упаковывать в чемодан", копировать
Таблоид> куда-то и проч., несмотря на идущие ней откаты DML'ей - всё, вопрос закрываем.

При чём тут можно или нет и сообщения в логе?
Автоматом ты их всё равно не сможешь анализировать.
А если нужно тупо увидеть глазами "готово или нет",
то нужно см. результат (output и err) самого gfix-а.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403731
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Мну давно интересно

Т.е. интерес чисто теоретический и синтетический
(не говоря уже о том, что крайне редкий на практике).
Кстати, "закулисье" должно, наверное, воркэраундиться
шатдауном сервера (не проверял). Для надежности.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403733
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам"600 сообщений в логе", "не страшно", "диск не переполнится". Проникся.В смысле ? Что так "пробрало" ? :-)

Гаджимурадов РустамТаблоид> базу Firebird после шатдауна всегда можно "упаковывать в чемодан", копировать
Таблоид> куда-то и проч., несмотря на идущие ней откаты DML'ей - всё, вопрос закрываем.

При чём тут можно или нет и сообщения в логе?Если базу СТОПУДОВО МОЖНО копировать сразу после того, как gfix -shut вернул управление и я увидел в атрибутах гстата 'full shutdown' - то на сообщения о незавершенных откатах действительно можно покласть. Или я не прав ?

Гаджимурадов РустамАвтоматом ты их всё равно не сможешь анализировать. А если нужно тупо увидеть глазами "готово или нет", то нужно см. результат (output и err) самого gfix-а.Это почему же ? Сделать цикл с интервалом 2-3 сек, который будет подсчитывать число "открывающих" и "закрывающих" (N1, N2) мессаг в логе и вякнет "Готово, копируй!" при обнаружении N1 == N2 - что, нереально сложно что ле ?
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403735
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТаблоид> Мну давно интересно

Т.е. интерес чисто теоретический и синтетический
(не говоря уже о том, что крайне редкий на практике).Да как же "теоретический", когда я на нашем продуктиве видел ЭТО: gfix зашатдаунил базу, а lsof продолжал еще секунд 10 показывать, что её файл открыт. Раза два или три это было, но точно - видел.
И если бы перед этим не изгалялся с нагрузочным тестом на развал индексов (а дело было в 2010, когда у нас missing entries попёрли, не к ночи будь помянуты!) - никогда бы и не узнал об этом "эффекте".

Гаджимурадов РустамКстати, "закулисье" должно, наверное, воркэраундиться
шатдауном сервера То есть, тупо вводом /etc/init.d/firebird stop ?
Гаджимурадов Рустам(не проверял). Для надежности.В чём преграда, проверь! Если есть линух - запусти нагрузочный тест с DML'ями, окон 150-200. Дай ему помолотить полчаса-час и затем зашатдауни базу. И попробуй далее ввести:
Код: plaintext
1.
/etc/init.d/firebird stop
ps -e | grep firebird

Результат, скорее всего, слегка удивит.
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403737
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

1. зачем тебе её копировать ?
2. даже если копировать - есть nbackup
3. вот на это посмотреть Таблоидlsof продолжал еще секунд 10 показывать, что её файл открыт сложнее, чем писать какие-то парсеры каких-то логов ?

Ты опять устраиваешь бурю в стакане воды. Займись чем-нить реально полезным, полно же дел вокруг...
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403738
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Да как же "теоретический"

Да вот так. Во-первых, на практике такое если и встречается, то редко.
Во-вторых, ну молотит - тебе-то что? Перебьёшься 10 секунд.

> В чём преграда, проверь!

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

> Результат, скорее всего, слегка удивит.

Так если ты его уже проверил - просто напиши, что получилось.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403739
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> В смысле ? Что так "пробрало" ? :-)

600 любых сообщений в логе. Любых.

> Или я не прав ?

А ХЗ, не уверен. Допустим, не можешь. Дальше что?

> нереально сложно что ле ?

Я знаю, что у тебя энергии и времени немеряно,
но не проще ли тупо поставить паузу на минуту
и проверить этот самый lsof ?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403741
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad1. зачем тебе её копировать ?потому что несколько раз возникали ситуации, когда надо поиметь максимально актуальную копию продуктива, причём быстро (=> b/r не катит). Ночная копия - да, была, но косяк вылез именно на данных, вбитых сегодня.

hvlad2. даже если копировать - есть nbackupЭто я попозже стал делать. Хороший способ, но... там главное всё время быть рядом с экраном и следить, чтобы скрипт обязательно дошёл до строки с 'nbackup -N', а не то "снег башка упадёт" :-)

hvlad3. вот на это посмотреть Таблоидlsof продолжал еще секунд 10 показывать, что её файл открыт сложнее, чем писать какие-то парсеры каких-то логов ?парсер тем и хорош, что "смотрит" за меня и "глаз" у него не замыливается. Один раз помучился, отладил - дальше спи спокойно.

hvladТы опять устраиваешь бурю в стакане воды. Займись чем-нить реально полезным, полно же дел вокруг...я веду непримиримую борьбу за ликвидацию записи в файл базы после шатдауна!
Разве это не реально полезнейшая задача ?! :-)
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403742
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидя веду непримиримую борьбу за ликвидацию записи в файл базы после шатдауна!А при чём тут спам в логе ?
И разве тебе не сказали много раз, что откаты при шатдауне будут оптимизированны ?
Или тебе нравится бесконечно ковырять эту тему ?

ТаблоидРазве это не реально полезнейшая задача ?! :-)Я бы её даже в первый десяток актуальных не ставил...
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403743
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТаблоид> Да как же "теоретический"

Да вот так. Во-первых, на практике такое если и встречается, то редко.Редко, не спорю. Только мне последствия интересны, а не "частота встреч" :-)

Гаджимурадов РустамВо-вторых, ну молотит - тебе-то что? Перебьёшься 10 секунд.Кхе! это на нашем продакшене было 10 сек, и то - по памяти говорю, могу и ошибаться.
А если бы кто запустил что-то "могучеее", то и несколько минут могло бы быть. Посмотри выше - и 40 минут можно при желании "сбацать" :-)

Гаджимурадов РустамВо-вторых, никаких нагрузочных тестов на 150-200
окон длительностью полчаса-час ради такой фигни я в принципе
не стал бы запускать.То есть, ты ТОЧНО уверен, что запись в базу после шатдауна ничем не грозит базе, которую в этот же момент куда-то там "откладывают" в виде backup'а. Я правильно тебя понял ?

Гаджимурадов Рустам> Результат, скорее всего, слегка удивит.

Так если ты его уже проверил - просто напиши, что получилось.Дык вот же , полтора года уже как.
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403746
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТаблоидя веду непримиримую борьбу за ликвидацию записи в файл базы после шатдауна!А при чём тут спам в логе ?Спам - это как раз нынешние errno=104/110.

hvladИ разве тебе не сказали много раз, что откаты при шатдауне будут оптимизированны ?
Или тебе нравится бесконечно ковырять эту тему ?Я прекрасно понимаю, что если они и будут оптимизированы, то еще не скоро. И потому спросил: до того, как состоится эта оптимизация, - нельзя ли сделать вот эту фичу ? Насколько это сложно вообще: добавить вывод в лог таких сообщений ?

hvladТаблоидРазве это не реально полезнейшая задача ?! :-)Я бы её даже в первый десяток актуальных не ставил...Да пускай себе торчит в разряде миноров, раз это от Царя Гороха так. Но хотя бы вывод в лог ФБ добавь(те), ну ?..
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403747
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТаблоидЕсли базу СТОПУДОВО МОЖНО копировать сразу после того, как gfix -shut вернул управление и я увидел в атрибутах гстата 'full shutdown' - то на сообщения о незавершенных откатах действительно можно покласть. Или я не прав ?А ХЗ, не уверен. Допустим, не можешь. Дальше что?Если НЕ могу покласть на такие сообщения ?? сам понимаешь: тогда они точно ДОЛЖНЫ быть в логе, а не только в трезвом мозгу ДБАя. Ибо если он забил на них и начал копировать базу, а дальше продакшен слетел и актуальной копией является "та самая", и она оказалась битой, то... телефон kdv на у него сайте вроде всегда висит

Гаджимурадов РустамЯ знаю, что у тебя энергии и времени немеряно, но не проще ли тупо поставить паузу на минуту и проверить этот самый lsof ?ну так я и делал именно это! Но разве ты не видишь, что тут "чел. фактор" ? Ну забыл бы я однажды про это, или кто другой вместо мну стал бы шатдаунить...
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403765
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Только мне последствия интересны, а не "частота встреч" :-)

Последствия чего? Ну выстрели себе в ногу -
тоже редко, тоже интересны последствия будут.

> Кхе! это на нашем продакшене было 10 сек, и то - по памяти говорю, могу и ошибаться.
> А если бы кто запустил что-то "могучеее", то и несколько минут могло бы быть.
> Посмотри выше - и 40 минут можно при желании "сбацать" :-)

При желании можно и буй шар проглотить, да.
Могучего можно пересчитать по пальцам, да и те
живут на репликаторах да на nbackup-ах и живую
БД посреди дня шатдаунить не собираются. А если
вдруг почему-то и соберутся - будут делать это
ручками, а не никакой не автоматикой/парсером.
И да, обождут 10 секунд, минуту, если надо - две.

> Я правильно тебя понял ?

Нет, неправильно. Я сказал то, что сказал.
Кому надо - подождёт. Кому чешется - тот ССЗБ.
Кстати, с оригиналом ничего и не будет, скорее
всего, в отличие от копии. Но зуб никто не даст.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403766
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> сам понимаешь: тогда они точно ДОЛЖНЫ быть в логе

Нет, не понимаю. В логе этому не место.
Повторюсь, если нужна развернутая
статистика (любая) - место ей в output
и err gfix-а, а не в логе сервера.

> Ибо если он забил на них и начал копировать базу

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

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

> Но разве ты не видишь, что тут "чел. фактор" ?

Нет, не вижу. Чем отличается человеческий фактор
"посмотрел lsof" или "посмотрел gfix output" от
"посмотрел лог" (при том, что лог не твой) ?
Как по мне, так второе и даже первое много
лучше и удобнее третьего, которое ты просишь.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403804
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамДело не только в том, что ты пытаешься
бурю в стакане замутить, как сказал Влад,
мало того - и буря-то толком не получается.Ладно. Раз все спокойны на этот счет, значит проблема действительно была только в моей голове.
Оставим эту тему, но надеюсь, что тот тикет когда-нить перейдёт в resolved.
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403821
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЕсли кто-то из Источников Света скажет, что базу Firebird после шатдауна всегда можно "упаковывать в чемодан", копировать куда-то и проч., несмотря на идущие ней откаты DML'ей - всё, вопрос закрываем.

Лучше бы тогда попросил что бы

Код: plaintext
gfix -shut full -force 0 $dbname -user sysdba -pas masterke

возвращало управление только по окончанию всех откатов. Уж куда проще для твоих скриптов.
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403827
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЛучше бы тогда попросил что бы

Код: plaintext
gfix -shut full -force 0 $dbname -user sysdba -pas masterke

возвращало управление только по окончанию всех откатов.
вообще-то, в свежих билдах так оно и должно быть. И я несколько удивлен, что это не так. Так что предлагаю Таблоиду вынести доказательства этого вопроса в отдельный топик. А то "кони, люди" в этой теме начинают утомлять.
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403831
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrСимонов ДенисЛучше бы тогда попросил что бы

Код: plaintext
gfix -shut full -force 0 $dbname -user sysdba -pas masterke

возвращало управление только по окончанию всех откатов.
вообще-то, в свежих билдах так оно и должно быть. И я несколько удивлен, что это не так. Так что предлагаю Таблоиду вынести доказательства этого вопроса в отдельный топик.Дык вот же, вчерась ещё. И ниже чуток, когда я дождался таки через 40 минут.
ЗЫ. А я - наоборот, сильно бы удивился, если gfix -shut стал бы синхронным и не вертал управление в ось до полного завершения откатов. Это наверняка было бы записано в моей любимой утренней газете , но там тишина пока что.
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403836
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

попрошу на кошках вменяемого размера пример, твой миллиард никто в здравом уме заливать не будет
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403859
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrпопрошу на кошках вменяемого размера пример, твой миллиард никто в здравом уме заливать не будетну так там не миллиард апдейтов было, а гораздо меньше. Просто ему тяжко было обновлять два индекса, КМК, вот он и застрял с откатами на такое время.

Кому интересно - залейте у себя 200-300 млн записей в такую же таблицу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SQL> show table t;
ID                              INTEGER Nullable
S01                             VARCHAR(8) Nullable
S02                             VARCHAR(8) Nullable
SQL> show index;
T_ID INDEX ON T(ID)
T_S01 INDEX ON T(S01)
T_S02 INDEX ON T(S02)
- это не 80 Гб будет, а всего лишь 20. Время заливки будет 1-2 часа, вряд ли больше.

Затем делаем следующее (с предварительно запущенным трейсом):

session #1
isql 192.168.99.44/3330:t10e9 -n | mtee /t isql_log.txt
12:34:43.311 Database: 192.168.99.44/3330:t10e9
12:34:43.311 SQL> set plan on; set stat on; update t set s01=s02, s02=s01;

12:36:12.592 PLAN (T NATURAL)

session #2
запускаем shell-скрипт, который в цикле будет запрашивать мон-таблицы, с интервалом 10 сек. Запрос этот приведен выше в этом топеге, впрочем - вот, еще раз:
askmon.sql
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
set autoddl off;
set list off;
set blob on;
set width mon_user 20;
set width remote_process 30;
set width sql_txt 50;
set width remote_ip 15;
set width rn 3;
commit;
    select
      current_time dts
      -- mon$attachments:
      ,cast(row_number()over(order by mon$attachment_id) as char(3)) rn
      ,a.mon$remote_address remote_IP
      ,a.mon$attachment_id attach_id
      ,a.mon$user mon_user
      ,a.mon$stat_id       stat_id
      ,a.mon$server_pid    server_PID
      ,a.mon$remote_pid    remote_PID
      -- mon$memory_usage:
      ,u.mon$memory_used used_memory
      ,u.mon$memory_allocated alloc_by_OS
      -- mon$io_stats:
      ,i.mon$page_reads reads
      ,i.mon$page_writes writes
      ,i.mon$page_fetches fetches
      ,i.mon$page_marks marks
      -- mon$record_stats:
      ,r.mon$record_seq_reads seq_reads
      ,r.mon$record_idx_reads idx_reads
      ,r.mon$record_inserts ins_cnt
      ,r.mon$record_updates upd_cnt
      ,r.mon$record_deletes del_cnt
      ,r.mon$record_backouts bk_outs
      ,r.mon$record_purges purges
      ,r.mon$record_expunges expunges
      -- aux info:
      ,right(a.mon$remote_process,30) remote_process
      -- mon$statements:
      --,left(cast(s.mon$sql_text as varchar(32760)),50) sql_txt
    from mon$attachments a
    --left join mon$statements s on a.mon$attachment_id = s.mon$attachment_id
    left join mon$memory_usage u on a.mon$stat_id=u.mon$stat_id
    left join mon$io_stats i on a.mon$stat_id=i.mon$stat_id
    left join mon$record_stats r on a.mon$stat_id=r.mon$stat_id
    where
    --a.mon$state=1 and
    a.mon$attachment_id<>current_connection
    --order by a.mon$attachment_id
;
askmon.sh
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
# askmon.sh
delay=10

fdb=t10e9
#/var/db/fb30/t3e8.fdb
fbport=3330
fbhome=/opt/fb30/bin
log=./logs/mon30_$(date +'%Y%m%d_%H%M%S').log
rm -f $log
while :
do
  echo -----------------------------------------------------------------------------------
  echo $(echo -n $(date +'%Y-%m-%d %H:%M:%S.%N')|cut -c1-24) - starting quering mon tables
  $fbhome/isql localhost/$fbport:$fdb -user sysdba -pas masterke -pag 999 -n -m -i askmon30.sql | sed -e "s/ \{1,\}$//" >>$log
  # -o askmon.log
  # cat askmon.tmp | sed -e "s/ \{1,\}$//" >>askmon.log
  ls -la $log
  echo $(echo -n $(date +'%Y-%m-%d %H:%M:%S.%N')|cut -c1-24) - done. Now take some sleep. . .
  #ls -la /tmp/core.*
  sleep $delay
done



Дальше даём поработать минут 10, больше не нужно.

session #3
шатдауним базу, с логированием моментов времени:
db_shutdown.sh
Код: plaintext
1.
2.
3.
4.
dbname=localhost/3330:t10e9
echo $(echo -n $(date +'%Y-%m-%d %H:%M:%S.%N')|cut -c1-24) starting shutdown. . .
gfix -shut full -force 0 $dbname -user sysdba -pas masterke
echo $(echo -n $(date +'%Y-%m-%d %H:%M:%S.%N')|cut -c1-24) finish shutdown.
gstat -h $dbname -user sysdba -pas masterke | grep -i attributes
Код: plaintext
1.
2.
2013-09-22 12:43:23.4028 starting shutdown. . .
2013-09-22  12:43:32 .0325 finish shutdown.
        Attributes              full shutdown

Итак, управление в ось из gfix -shut вернулось через 32-23 = 9 секунд.

А теперь смотрим в isql-окно. У мну в нём показано вот это:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Statement failed, SQLSTATE = HY000
database t10e9 shutdown
 12:48:56 .889 Current memory = 1154286256236196432
12:48:56.889 Delta memory = 1154286255133019200
12:48:56.889 Max memory = 19364495713684464
12:48:56.889 Elapsed time= 764.32 sec
12:48:56.889 Buffers = 4510032
12:48:56.889 Reads = 1154047425988526046
12:48:56.889 Writes -4216675458143171601
12:48:56.889 Fetches = 50392920015175064
12:48:56.889 SQL>

А еще смотрим в лог скрипта, запрашивавшего мон-таблицы, и обращаем внимание на моменты времени, когда он запускал isql и возвращался из него. Но только на те моменты, которые уже после шатдауна ( 12:43:32 ) были:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
2013-09-22 12:43:32.9232 - starting quering mon tables
-rw-r--r--. 1 root root 52164 Sep 22 12:43 ./logs/mon30_20130922_123440.log
2013-09-22 12:43:59.0390 - done. Now take some sleep. . .
-----------------------------------------------------------------------------------
2013-09-22 12:44:09.0683 - starting quering mon tables
-rw-r--r--. 1 root root 52416 Sep 22 12:44 ./logs/mon30_20130922_123440.log
2013-09-22 12:44:34.4666 - done. Now take some sleep. . .
-----------------------------------------------------------------------------------
2013-09-22 12:44:44.4707 - starting quering mon tables
-rw-r--r--. 1 root root 52668 Sep 22 12:45 ./logs/mon30_20130922_123440.log
2013-09-22 12:45:02.5571 - done. Now take some sleep. . .
-----------------------------------------------------------------------------------
2013-09-22 12:45:12.5611 - starting quering mon tables
-rw-r--r--. 1 root root 52920 Sep 22 12:45 ./logs/mon30_20130922_123440.log
2013-09-22 12:45:30.5999 - done. Now take some sleep. . .
-----------------------------------------------------------------------------------
2013-09-22 12:45:40.6045 - starting quering mon tables
-rw-r--r--. 1 root root 53172 Sep 22 12:46 ./logs/mon30_20130922_123440.log
2013-09-22 12:46:09.7788 - done. Now take some sleep. . .
(т.е. видим, что облом на тему 'database shutdown' isql получает почему-то не сразу, а через 15-20 секунд, а то и больше).

Ну, и наконец - данные трейса.
Вот старт DMl-стейтмента:
12:33:12
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
2013-09-22T 12:33:12 .1680 (29443:0x7f2e1f68ffb0) EXECUTE_STATEMENT_START
	t10e9 (ATT_550, SYSDBA:NONE, NONE, TCPv4:192.168.0.201)
	C:\1Install\fb30\isql.exe:12616
		(TRA_1044, CONCURRENCY | WAIT | READ_WRITE)

Statement 21:
-------------------------------------------------------------------------------
update t set s01=s02, s02=s01
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (T NATURAL)
(время отличается от isql'ного потому, что isql был запущен с виндовой машины, а она с этим сервером не синхронизирована)

Вот я gfix'ом сказал базе "спать!":
12:43:25
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
2013-09-22T12:43:25.2050 (29443:0x7f2e1f691fe0) TRACE_INIT
	SESSION_8  
	

2013-09-22T12:43:25.2050 (29443:0x7f2e1f691fe0) FAILED ATTACH_DATABASE
	t10e9 (ATT_0, SYSDBA, NONE, TCPv4:127.0.0.1)
	/opt/fb30/bin/gfix:12685

2013-09-22T12:43:25.2050 (29443:0x7f2e1f691fe0) ERROR AT JProvider::attachDatabase
	t10e9 (ATT_0, SYSDBA, NONE, TCPv4:127.0.0.1)
	/opt/fb30/bin/gfix:12685
335544528 : database t10e9 shutdown

2013-09-22T12:43:25.2050 (29443:0x7f2e1f691fe0) TRACE_FINI
	SESSION_8

А вот завершение DML-откатов:
12:45:56
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
2013-09-22T12:45:56.4850 (29443:0x7f2e1f68ffb0) FAILED EXECUTE_STATEMENT_FINISH
	t10e9 (ATT_550, SYSDBA:NONE, NONE, TCPv4:192.168.0.201)
	C:\1Install\fb30\isql.exe:12616
		(TRA_1044, CONCURRENCY | WAIT | READ_WRITE)

Statement 21:
-------------------------------------------------------------------------------
update t set s01=s02, s02=s01
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PLAN (T NATURAL)
0 records fetched
 764316 ms, 449133 read(s), 5051 write(s), 4766218 fetch(es), 1046385 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$INDICES                                       6                                                            
T                                  115812              115811                        115811                    


ИТОГО: gfix -shut вернул управление, но движок после этого еще 2.5 минуты продолжал запись откатов.

И еще раз повторю. Для воспроизведения сего не надо иметь таблицу в 1 млрд записей. Сделайте 200-300 млн, навесьте 2-3 индекса и запустите апдейт, включающий эти индексные поля. Дайте ему промолотить 10 минут.

ЗЫ. Делал на LI-T3.0.0.30661
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403864
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
PLAN (T NATURAL)
0 records fetched
 764316 ms, 449133 read(s), 5051 write(s), 4766218 fetch(es), 1046385 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$INDICES                                       6                                                            
T                                  115812              115811                        115811 
м-нда... (115811+115811) / 764 = ~300 апдейтов в секунду.
При pagesize = 16384, двух индексах и глубине каждого = 3.
Жесть, короче!..
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403866
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ну на 3.0 понятно. Туда некоторые вещи могли забыть портировать. Ты проверь на последнем 2.5
...
Рейтинг: 0 / 0
Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
    #38403869
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

я для кого просил делать это в отдельной теме?
...
Рейтинг: 0 / 0
25 сообщений из 189, страница 6 из 8
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Его Величество Миллиард (эксперименты с таблицей в 10E9 строк)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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