| Документация к Postgres Pro 9.5.12.1 | |||
|---|---|---|---|
| Пред. | Уровень выше | Приложение F. Дополнительно поставляемые модули | След. |
Модуль dump_stat предоставляет функции, позволяющие выгрузить и восстановить содержимое таблицы pg_statistic. При выполнении выгрузки/восстановления данных вы можете воспользоваться dump_stat для переноса существующей статистики на новый сервер, обойдясь без выполнения команды ANALYZE для всего кластера, что может значительно сократить время простоя для больших баз данных. Функция dump_statistic выдаёт операторы INSERT, которые затем можно применить к совместимой базе данных. Чтобы успешно восстановить статистические данные, вы должны установить это расширение и на исходном, и на целевом сервере, так как эти операторы будут задействовать функции, реализованные в dump_stat.
Заметьте, что определение таблицы pg_statistic может поменяться, в результате чего сгенерированный скрипт может оказаться несовместимым с будущими выпусками PostgreSQL.
Расширение dump_stat включено в состав Postgres Pro. Установив Postgres Pro, вы должны выполнить команду CREATE EXTENSION, чтобы подготовить dump_stat к работе, следующим образом:
CREATE EXTENSION dump_stat;
anyarray_to_text(array anyarray) returns textВозвращает данный массив в виде значения text.
dump_statistic() returns setof textФункция dump_statistic выгружает содержимое системного каталога pg_statistic. Она формирует INSERT для каждого кортежа в pg_statistic, кроме тех, что содержат статистические данные о таблицах в схемах information_schema и pg_catalog.
Оператор INSERT имеет следующий вид:
WITH upsert as (
UPDATE pg_catalog.pg_statistic SET имя_столбца = выражение [, ...]
WHERE starelid = t_relname::regclass
AND to_attname(t_relname, staattnum) = t_attname
AND to_atttype(t_relname, staattnum) = t_atttype
AND stainherit = t_stainherit
RETURNING *)
ins as (
SELECT выражение [, ...]
WHERE NOT EXISTS (SELECT * FROM upsert)
AND to_attnum(t_relname, t_attname) IS NOT NULL
AND to_atttype(t_relname, t_attname) = t_atttype)
INSERT INTO pg_catalog.pg_statistic SELECT * FROM ins;
Здесь выражение может быть следующим:
array_in(текст_массива, имя_типа::regtype::oid, -1)
значение::имя_типаЧтобы сохранить выданные операторы, направьте вывод psql в файл, используя стандартные возможности psql. Аргументы psql подробно рассматриваются в psql . Метакоманды, начинающиеся с обратной косой черты, не поддерживаются.
Например, чтобы сохранить статистику базы данных имя_базы в файле dump_stat.sql, выполните:
$ psql -XAtq -c "SELECT dump_statistic()" имя_базы > dump_stat.sql
dump_statistic(schema_name text) returns setof textdump_statistic выгружает содержимое системного каталога pg_statistic. Она формирует оператор INSERT для каждого кортежа в pg_statistic, относящегося к какой-либо таблице в схеме schema_name.
dump_statistic(schema_name text, table_name text) returns setof textdump_statistic выгружает содержимое системного каталога pg_statistic. Она формирует оператор INSERT для каждого кортежа в pg_statistic, относящегося к указанной таблице schema_name.table_name.
dump_statistic(relation regclass) returns setof textdump_statistic выгружает содержимое системного каталога pg_statistic. Она формирует оператор INSERT для каждого кортежа в pg_statistic, содержащего статистические данные отношения relation.
to_schema_qualified_operator(opid oid) returns textВыдаёт дополненное схемой имя оператора по его идентификатору opid. Например:
test=# SELECT to_schema_qualified_operator('+(int,int)'::regoperator);
to_schema_qualified_operator
------------------------------------------------
pg_catalog.+(pg_catalog.int4, pg_catalog.int4)
(1 row)to_schema_qualified_type(typid oid) returns textВыдаёт дополненное схемой имя типа по его идентификатору typid.
to_schema_qualified_relation(relid oid) returns textВыдаёт дополненное схемой имя отношения по его идентификатору relid.
anyarray_elemtype(arr anyarray) returns oidВозвращает тип элемента массива, заданного по oid. Например:
test=# SELECT anyarray_elemtype(array_in('{1,2,3}', 'int'::regtype, -1));
anyarray_elemtype
-------------------
23
(1 row)to_attname(relation regclass, colnum int2) returns textДля отношения с заданным именем relation и номера столбца colnum возвращает имя столбца в виде значения text.
to_attnum(relation regclass, col text) returns int2Для отношения с заданным именем relation и столбца с именем col возвращает номер столбца в виде значения int2.
to_atttype(relation regclass, col text) returns textДля отношения с заданным именем relation и столбца с именем col возвращает дополненное схемой имя типа столбца в виде значения text.
to_atttype(relation regclass, colnum int2) returns textДля отношения с заданным именем relation и столбца с номером colnum возвращает дополненное схемой имя типа столбца в виде значения text.
to_namespace(nsp text) returns oidto_namespace повторяет поведение приведения к типу regnamespace, которое отсутствует в PostgreSQL версии 9.4 (и предыдущих). Эта функция возвращает oid данной схемы.
get_namespace(relation oid) returns oidget_namespace возвращает схему заданного отношения в виде oid.
| Пред. | Начало | След. |
| dict_xsyn | Уровень выше | earthdistance |