Oracle Global Temporary Table/PHP взаимодействия вопрос


0

Я никогда не использовал Глобальные временные таблицы, однако у меня есть некоторые вопросы, как они будут работать в среде php.

Как распределяются данные: Предполагая постоянные подключения к oracle через php с помощью oci8. Связаны ли данные с идентификатором базы данных? это делается на основе демонов Apache httpd? Или каждый индивидуальный запрос уникален?

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

3

Глобальная временная таблица - это просто логическое определение структуры таблицы (имена, имена столбцов, типы данных столбцов и т. Д.). Когда сеанс ссылается на него, вставляя данные, сегмент данных создается во временном табличном пространстве для хранения только данных этого сеанса. Поэтому разные сеансы могут ссылаться на одно и то же определение логической таблицы, поскольку каждый из них имеет свой выделенный сегмент данных, который можно легко очистить при фиксации или когда сеанс отключается, не затрагивая другие сеансы.

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

Полезной альтернативой GTT является предложение подзапроса факторинга («WITH»), в котором вы можете создавать множественные отношения, которые могут ссылаться на те, которые ранее были объявлены в этом операторе SQL. Они могут быть материализованы как сегмент данных во временном табличном пространстве либо автоматически Oracle, когда они превышают определенное использование памяти, либо вручную, используя подсказку оптимизатора MATERIALIZE.


1

Если я правильно помню, данные в глобальных временных таблицах доступны только с одного активного сеанса и только для этого активного сеанса (я имею в виду session = connection). Таким образом, вы можете видеть только данные, которые были вставлены ранее в активный сеанс. Поэтому я верю, что эти данные очищаются после закрытия сессии. Независимо от того, какой язык вы используете.

По крайней мере, я так думаю. : D

Как написано здесь: http://www.oracle-base.com/articles/8i/TemporaryTables.php

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

Данные во временных таблицах автоматически удаляются в конце сеанса базы данных, даже если они заканчиваются ненормально.

Извините за мой плохой английский.