Для запуска анализа плана необходимо отправить POST-запрос на /explain с телом плана и дополнительными
параметрами вызова в виде JSON-объекта.
Пример для вызова с помощью CURL:
curl -X POST https:///explain \
-H "Content-Type: application/json" \
-d @FILENAME
тут FILENAME – путь к файлу, содержащему параметры вызова в виде JSON-объекта
Формат ответа
Результат положительной обработки возвращается с кодом HTTP 302.
В заголовке Location возвращается URL страницы визуализации переданного плана, включающий его uuid:
/archive/explain/42453282d5fc9c05d637372d3851165d:0:2021-08-03
Параметры запроса
обязательные |
plan |
string |
план в формате text/JSON/YAML единой строкой |
необязательные |
name |
string |
имя плана в архиве |
private |
boolean |
план виден только в персональном архиве, default:false |
ассоциированный запрос |
query |
string |
текст cвязанного запроса |
params |
string |
$n-параметры единой строкой |
дерево планов |
group |
UUID(string) |
ID корневого плана группы |
parent |
UUID(string) |
ID плана-предка |
Примеры вызовов
простой план |
{
"plan" : "Index Scan using pg_class_oid_index on pg_class\n Index Cond: (oid = '1259'::oid)"
} |
именованный план |
{
"name" : "Plan-name",
"plan" : "Index Scan using pg_class_oid_index on pg_class\n Index Cond: (oid = '1259'::oid)"
} |
ассоциированный запрос |
{
"plan" : "Index Scan using pg_class_oid_index on pg_class\n Index Cond: (oid = '1259'::oid)",
"query" : "SELECT * FROM pg_class WHERE oid = 'pg_class'::regclass"
} |
параметризованный запрос |
{
"plan" : "Bitmap Heap Scan on pg_class (cost=503.84..1720.79 rows=4781 width=265)\n Recheck Cond:
(relnamespace ='99'::oid)\n Filter: (relowner = '10'::oid)\n -> Bitmap Index Scan on
pg_class_relname_nsp_index (cost=0.00..502.64 rows=4781 width=0)\n Index Cond: (relnamespace = '99'::oid)",
"query" : "SELECT * FROM pg_class WHERE relnamespace = $1 and relowner = $2",
"params" : "$1=100,$2=10"
} |
добавление в дерево |
{
"name" : "Plan-name1",
"plan" : "Index Scan using pg_class_oid_index on pg_class\n Index Cond: (oid = '1259'::oid)",
"query" : "SELECT * FROM pg_class",
} -> UUID:8cf81ae6-0ccf-fe5f-b0e7-529b5b1e4328 |
{
"name" : "Plan-name2",
"plan" : "Index Scan using pg_class_oid_index on pg_class\n Index Cond: (oid = '1259'::oid)",
"query" : "SELECT * FROM pg_class",
"group" : "8cf81ae6-0ccf-fe5f-b0e7-529b5b1e4328",
"parent": "8cf81ae6-0ccf-fe5f-b0e7-529b5b1e4328"
} -> UUID: 12345ae6-0ccf-fe5f-b0e7-529b5b1e4328" |
{
"name" : "Plan-name3",
"plan" : "Index Scan using pg_class_oid_index on pg_class\n Index Cond: (oid = '1259'::oid)",
"query" : "SELECT * FROM pg_class",
"group" : "8cf81ae6-0ccf-fe5f-b0e7-529b5b1e4328",
"parent": "12345ae6-0ccf-fe5f-b0e7-529b5b1e4328"
} -> UUID: 98765ae6-0ccf-fe5f-b0e7-529b5b1e4328" |