powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
55 сообщений из 55, показаны все 3 страниц
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781136
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Возник вопрос - в БД существует самопальная временная таблица для сбрасывания в нее промежуточных id, и эта таблица участвуют в других более сложных sql-запросов для увеличения производительности.
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE TMP_TABLE (
    SESSION_ID  ID /* ID = INTEGER NOT NULL */,
    TMP_ID      ID /* ID = INTEGER NOT NULL */
) 
CREATE INDEX TMP_TABLE_IDX1 ON TMP_TABLE (SESSION_ID);


Есть ли смысл с т. зр. производительности вместо самопальной использовать временную таблицу от FB.
Код: sql
1.
2.
3.
4.
5.
CREATE GLOBAL TEMPORARY TABLE TMP_TABLE (
    SESSION_ID  ID /* ID = INTEGER NOT NULL */,
    TMP_ID      ID /* ID = INTEGER NOT NULL */
) ON COMMIT DELETE ROWS;
CREATE INDEX TMP_TABLE_IDX1 ON TMP_TABLE (SESSION_ID);



Очевидный минус в GLOBAL TEMPORARY TABLE от своей в том, что в свою я могу вставить нужные ID закоммитить передать SessionID и из любого места программы прочитать эти ID (также это удобно при отладке) и затем удалить за ненадобностью эти id из tmp_table. Но слышал, что мол GLOBAL TEMPORARY TABLE быстрее работает. На сколько быстрее?
Вообщем есть ли смысл использовать GLOBAL TEMPORARY TABLE вместо своих стандартных?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781155
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данные из GTT не могут "пересекать границы подключения".
Соответственно, если данные вставляются в одном подключении, а извлекаются в другом - использовать GTT вы не можете.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781157
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovДанные из GTT не могут "пересекать границы подключения".
Соответственно, если данные вставляются в одном подключении, а извлекаются в другом - использовать GTT вы не можете.
Да, это минус GTT (хотя наличие данных в разных подключениях мало когда нужно)
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781160
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тогда у GTT есть плюс в виде независимости данных в разных подключениях/транзакциях.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781191
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovНу тогда у GTT есть плюс в виде независимости данных в разных подключениях/транзакциях.
мнимый плюс, т.к. независимость данных достигается за счет поля "SESSION_ID" значение которого получается из генератора
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781196
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Это не баг, это фича".
Таблице наплевать откуда взялись данные.
Фактом остаётся то, что два разных коннекта могут положить в GTT разный набор данных, а затем извлечь его простым "select * from таблица".
Плюс это, минус или монопенисуально - уже на ваше усмотрение.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781201
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012независимость данных достигается за счет поля "SESSION_ID" значение
которого получается из генератора
И которое из GTT можно вообще убрать, сэкономив размер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781205
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012-
Да, это минус GTT (хотя наличие данных в разных подключениях мало когда нужно)
это не минус GTT, это их неотъемлемое свойство по определению
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781207
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7mfedorov2012-
Да, это минус GTT (хотя наличие данных в разных подключениях мало когда нужно)
это не минус GTT, это их неотъемлемое свойство по определению
Ок. А что касается скорости, действительно ли есть ощутимый прирост производительности или же особой разницы нет?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781218
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012m7mпропущено...

это не минус GTT, это их неотъемлемое свойство по определению
Ок. А что касается скорости, действительно ли есть ощутимый прирост производительности или же особой разницы нет?
Не знаю, для меня это было вторичным,
первичным же было "упрощение" некоторых алгоритмов

ps/ Совсем субъективно (без всяких измерений и обоснований):
там где использовались псевдо-временные таблицы разницу не ощутил,
впрочем и не ожидал её ощутить, ибо объемы данных совсем не те.

Там где не использовались, но переделали с использование временных таблиц
разница ощутима
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781232
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012m7mпропущено...

это не минус GTT, это их неотъемлемое свойство по определению
Ок. А что касается скорости, действительно ли есть ощутимый прирост производительности или же особой разницы нет?

GTT не плодят мусор. живут в отдельных файлах
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781278
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pastorживут в отдельных файлах
в каких? FB где-то временно создает свои файл под GTT?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781280
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012 FB где-то временно создает свои файл под GTT?
где-то создает.
doc\sql.extentions\README.global_templorary_tables.txt

p.s. ты задолбал уже на эту тему, честное слово :-) Сколько раз уже тебе тыкать нужно?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781283
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvp.s. ты задолбал уже на эту тему, честное слово :-) Сколько раз уже тебе тыкать нужно?
в README.global_temporary_tables.txt ни слово про имя файла
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781285
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задлянафига вам знать имена временных файлов:README.global_temporary_tables.txtData and index pages of all of the GTTs instances are placed in separate temporary files?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781296
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
Скажите, пожалуйста, производим вставку данных в таблицу, но транзакцию не commit'ем - как ведет себя FB: все равно пишет данные на диск в mydb.fdb или же пока нет коммита хранит в ОЗУ (параметры транзакции read_committed, rec_version, nowait )?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781297
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таблица имеется ввиду обычная (не GTT)
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781300
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Скажите, пожалуйста, производим вставку данных в таблицу, но транзакцию не commit'ем - как ведет себя FBЗадайте вопрос самому себе: что должен делать сервер, в распоряжении которого остался последний мегабайт ОЗУ, если ему вставили гигабайт данных?

P.S. Ответ на вопрос: "А как это работает?" находится там, где вы упорно не желаете читать.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781302
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorovесли ему вставили гигабайт данных?
Спасибо, правильно ли я Вас понял, что сервер не скидывает данные в БД и хранит их в ОЗУ пока не вызвали commit у активной транзакции или же пока ОЗУ не начнет заканчиваться?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781305
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Спасибо, правильно ли я Вас понял, что сервер не скидывает данные в БД и хранит их в ОЗУ пока не вызвали commit у активной транзакции или же пока ОЗУ не начнет заканчиваться?Если из А следует Б, то это ещё не означает, что из Б следует А.
Политику кэширования определяют многие факторы.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781311
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovПолитику кэширования определяют многие факторы.
Загадки какие-то, можно ли хотя бы сказать что в большинстве случаев поведение FB будет таким:
сервер не скидывает данные в БД и хранит их в ОЗУ пока не вызвали commit у активной транзакции или же пока ОЗУ не начнет заканчиваться?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781312
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Загадки какие-то, можно ли хотя бы сказать что в большинстве случаев поведение FB будет такимНет, не можно: пишите две реализации, тестовый сценарий и проверяете всё, что вас интересует на типичных данных вашего приложения.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781548
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С большим интересом выслушаю мнение и других участников
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781552
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

выигрыш может быть на сборке мусора.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781567
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012pastorживут в отдельных файлах
в каких? FB где-то временно создает свои файл под GTT?

в каталоге TEMP

Если каталог TEMP лежит на отдельном физическом диске от файла БД, то получим возможный прирост производительности. Плюсом к отсутствию мусора в основном файле БД.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781598
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pastor, а не будет ли минусом в производительности, что GTT работает через файлы, а обычные таблицы через ОЗУ?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781603
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

хватит чушь нести
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781620
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему чушь то?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781634
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Почему чушь то?
Источник информации о том, что "GTT работает через файлы, а обычные таблицы через ОЗУ" есть?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781635
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

потому что данные обычных таблиц тоже живут в файле, только в файле БД. Про ОЗУ это исключительно твоя фантазия.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781692
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012pastor, а не будет ли минусом в производительности, что GTT работает через файлы, а обычные таблицы через ОЗУ?

всеми слабыми своими силами удерживаю себя от троллинга.

GTT файлы в точности такие же как и файлы БД, только они
1. временные, в т.ч. с точки зрения ОС
2. лежат в каталоге для временных файлов

во всем остальном они работают через тот же самый нерезиновый страничный кэш, с теми же самыми стратегиями использования памяти.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781744
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pastorGTT файлы в точности такие же как и файлы БД, только они
1. временные, в т.ч. с точки зрения ОС
2. лежат в каталоге для временных файлов

во всем остальном они работают через тот же самый нерезиновый страничный кэш, с теми же самыми стратегиями использования памяти.
Всем спасибо за советы, решено отказаться от GTT т.к. явных преимуществ в производительности не видно, но огромный минус это отладка sql-запросов с использованием GTT особенно когда GTT заполняется на клиенте
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781745
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вместо GTT решено использовать свою временную таблицу (стандартную)
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781758
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

решил изобрести велосипед. Ждём вопросов почему база распухла и откуда берутся тормоза.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781768
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012Всем спасибо за советы, решено отказаться от GTT т.к. явных преимуществ в производительности не видно, но огромный минус это отладка sql-запросов с использованием GTT особенно когда GTT заполняется на клиенте

"Нравится" мне категоричность выводов
Ну вставил-бы "по моему мнению" или "в моем случае"
и претензий не было-бы никаких
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781836
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfedorov2012,

решил изобрести велосипед. Ждём вопросов почему база распухла и откуда берутся тормоза.
кстати до этого база работала на FB 2.0 все ок - не распухла (tmp_table всегода оказывалась пустой) да и распухать неоткуда т.к. моя временная таблица используется на select без коммита транзакции, поэтому даже если возникнет дисконект все равно мусора не возникнет
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781838
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m, естественно все что здесь мною пишется это чисто мои мысли
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781843
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012решено отказаться от GTT т.к. явных преимуществ в производительности не виднобред какой-то. Как же не видно, если при наличии ОЗУ ОСь не будет их материализовать на диске, а для стационарных таблиц это будет сделано обязательно, а при sinc режиме еще и всенепременнейше сию минуту. дисковое ИО это не аргумент?
fedorov2012отладка sql-запросов с использованием GTTна время отладки делается стандартная таблица в тестовой БД, после отладки в рабочую БД идет ГТТ.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781852
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012моя временная таблица используется на select без коммита транзакции, поэтому даже если возникнет дисконект все равно мусора не возникнет

что такое мусор по твоему? Я тебе про версии записей говорил, а не про ненужные записи.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781885
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan_PisarevskyКак же не видно, если при наличии ОЗУ ОСь не будет их материализовать на диске, а для стационарных таблиц это будет сделано обязательно
1. GTT работает через временные файлы
2. FB не дура, сбрасывать данные она будет в большинстве случаев, если идет комиит транзакции или ОЗУ заканчивается
3. Сделан емкий тест - разницы в производительности не замечено.


Ivan_Pisarevskyна время отладки делается стандартная таблица в тестовой БД, после отладки в рабочую БД идет ГТТ.
ага, а если это стек вызовом хранимых процедур ссылающиеся на tmp_table - все перекомпилировать на новую таблицу стандартную tmp_table2 - ну и зачем такой огород - ради чего, если нет очевидных плюсов GTT
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781892
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисчто такое мусор по твоему? Я тебе про версии записей говорил, а не про ненужные записи.
версий записей не возникает т.к.
1) транзакция не коммититься
2) при первом же select'e tmp_table все подчищается
3) select вызывается сразу же после вставки промежуточных id'шников в tmp_table т.к.после её заполнения она сразу же используется в select'ах
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781897
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012моя временная таблица используется на select без коммита транзакциив сессии идёт вставка, в твою таблицу, а затем селект? и это делается в одной транзакции? а другие данные обрабатываются в другой транзакции? получается, что данные между разными транзакциями ты перекидываешь на клиенте?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781915
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,


>> 1) транзакция не коммититься

А что же делается ROLLBACK? Впрочем это не имеет значения.

>> 2) при первом же select'e tmp_table все подчищается

так у тебя же фильтрация идёт по сессиям. Значит почиститься она теоретически может только в своей сессии и то при следующем выполнении.

>> 3) select вызывается сразу же после вставки промежуточных id'шников в tmp_table т.к. после её заполнения она сразу же используется в select'ах

сборка мусора может начаться только после завершения текущей транзакции. Т.е. твой select будет делать сборку мусора только в новой транзакции
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38781916
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov20123. Сделан емкий тест - разницы в производительности не замечено.Ты DELETE не забыл убрать из своего ёмкого теста ?
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782050
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roadsterfedorov2012моя временная таблица используется на select без коммита транзакциив сессии идёт вставка, в твою таблицу, а затем селект? и это делается в одной транзакции?
Да! Временная таблица нужна для оптимизации скорости выборки когда join'иться куча таблиц - например, пользователь отмечает нужные записи галочкой и формирует отчет - выборка сделается только по этим записям
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782063
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисfedorov2012,
А что же делается ROLLBACK?

естественно, данные мне нужны для выборки (например сформировать отчет0

Симонов Денистак у тебя же фильтрация идёт по сессиям. Значит почиститься она теоретически может только в своей сессии и то при следующем выполнении.

работа каждой сессии завершается вызовом select'a запроса в котором и участвует наш tmp_table.

Симонов Дениссборка мусора может начаться только после завершения текущей транзакции. Т.е. твой select будет делать сборку мусора только в новой транзакции
Даже если и так, это операция мгновенная на тех объемах (10-500 записей) которые вставляются в tmp_table. Но повторюсь сборка мусора выполниться в этом же select'e, схема такая:
1. myTran //create and start
2. Fill tmp_table
3. select * from tmp_table tmp, mytable1 t1, mytable2 t2...
where t1.id=tmp.tmp_id and t2.id2=t1.id2 and...
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782068
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladfedorov20123. Сделан емкий тест - разницы в производительности не замечено.Ты DELETE не забыл убрать из своего ёмкого теста ?
не забыл и delete не обязателен т.к. commit'a нет
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782105
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012,

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

Вот если бы у тебя Fill tmp_table выполнялся в одной транзакции. А select в другой тогда выполнялась бы. Но для этого необходимо чтобы транзакция которая для Fill tmp_table завершилась. А поскольку у тебя она завершается откатом данные ты не увидишь.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782133
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисВот если бы у тебя Fill tmp_table выполнялся в одной транзакции. А select в другой тогда выполнялась бы. Но для этого необходимо чтобы транзакция которая для Fill tmp_table завершилась. А поскольку у тебя она завершается откатом данные ты не увидишь.
Все нормально работает, мусор не накапливается - делаю простой пример
1. стартуем транзакцию
2. заполняем tmp_table
3. выполняем select sql-запрос с участием tmp_table для формирования отчета.
4. закрываем транзакцию с откатом.
5. Смотрим статистику базы через IBExpert левых версий 0.
ч.т.д.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782204
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012делаю простой пример
Ты делаешь слишком простой пример. Undo log не переполняется и при откате транзакции она
сама удаляет всё, что изменила в базе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782250
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovТы делаешь слишком простой пример. Undo log не переполняется и при откате транзакции она
сама удаляет всё, что изменила в базе.

Я привел алгоритм, который используется у меня в проекте.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782251
fedorov2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как говорится - зачем платить больше, если не видно разницы
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782368
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012делаю простой примерГде он ? Полный его текст, плз: DDL, DML + результаты по трейсу.

По сабжу:
DDL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
recreate table tmp(id int primary key, x int, y int, z int);
commit;
create index tmp_x on tmp(x);
create index tmp_y on tmp(y);
create index tmp_z on tmp(z);
commit;
recreate global temporary table gtt(id int primary key, x int, y int, z int) on commit delete rows;
commit;
create index gtt_x on gtt(x);
create index gtt_y on gtt(y);
create index gtt_z on gtt(z);
commit;
DML-1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set term ^;
execute block as
  declare n int = 500000;
  declare i int = 0;
begin
  while(i<n) do
      insert into tmp values( :i, rand()*10, rand()*100, rand()*1000 )
      returning :i+1 into i;
end
^
set term ;^
rollback;
DML-2
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
set term ^;
execute block as
  declare n int = 500000;
  declare i int = 0;
begin
  while(i<n) do
      insert into gtt values( :i, rand()*10, rand()*100, rand()*1000 )
      returning :i+1 into i;
end
^
set term ;^
rollback;
Result-1:
Код: 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.
2014-10-21T01:49:19.5090 (14037:0x7f3fb28069e0) EXECUTE_STATEMENT_FINISH
        oltp25 (ATT_1694, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:924
                (TRA_158013, CONCURRENCY | WAIT | READ_WRITE)

Statement 39:
-------------------------------------------------------------------------------
execute block as
  declare n int = 500000;
  declare i int = 0;
begin
  while(i<n) do
      insert into tmp values( :i, rand()*10, rand()*100, rand()*1000 )
      returning :i+1 into i;
end

0 records fetched
  23473 ms, 6187 read(s), 5269 write(s), 19024610 fetch(es), 5511466 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
TMP                                                              500000               500000 

2014-10-21T01:49:19.5100 (14037:0x7f3fb28069e0) ROLLBACK_TRANSACTION
        oltp25 (ATT_1694, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:924
                (TRA_158013, CONCURRENCY | WAIT | READ_WRITE)
      0 ms, 1 read(s), 2 write(s), 1 fetch(es), 1 mark(s)
Result-2
Код: 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.
2014-10-21T01:47:29.7440 (14037:0x7f3fb28069e0) EXECUTE_STATEMENT_FINISH
        oltp25 (ATT_1694, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:924
                (TRA_158012, CONCURRENCY | WAIT | READ_WRITE)

Statement 38:
-------------------------------------------------------------------------------
execute block as
  declare n int = 500000;
  declare i int = 0;
begin
  while(i<n) do
      insert into gtt values( :i, rand()*10, rand()*100, rand()*1000 )
      returning :i+1 into i;
end

0 records fetched
  14265 ms, 5 read(s), 6360 write(s), 7537530 fetch(es), 2529897 mark(s)

Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge
***************************************************************************************************************
RDB$INDICES                                      16
GTT                                                              500000

2014-10-21T01:47:29.7460 (14037:0x7f3fb28069e0) ROLLBACK_TRANSACTION
        oltp25 (ATT_1694, SYSDBA:NONE, NONE, TCPv4:192.168.43.96)
        C:\MIX\firebird\fb25\bin\isql.exe:924
                (TRA_158012, CONCURRENCY | WAIT | READ_WRITE)
      2 ms, 257 read(s), 3 write(s), 7577 fetch(es), 5685 mark(s)


ЗЫ.
fw = OFF, cache = 4096, 2.5.3 SC
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782383
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Способ вполне себе нормальный. Де-факто у ТС получается GTT ON COMMIT DELETE ROWS. Но для FB 2.5 идеологически и архитектурно правильней использовать именно GTT.
Минус данной реализации - отсутствие длинной читающей транзакции для выборок, где используется данная таблица. Если это отчет, то минус отпадает.
...
Рейтинг: 0 / 0
Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
    #38782476
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedorov2012работа каждой сессии завершается вызовом select'aа, понятно...
...
Рейтинг: 0 / 0
55 сообщений из 55, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Преимущество временной таблицы от Firebird'a (Global Temporary Tables) перед собственной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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