Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разные СУБД / Лаба 5 / БД лаб 5

.docx
Скачиваний:
0
Добавлен:
22.03.2024
Размер:
621.43 Кб
Скачать

Цель работы: познакомиться с основным функционалом и особенностями работы в PostgreSQL.

Ход работы

Задание 3:

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

SELECT type, sales_2023[1] AS январь

FROM Products

WHERE sales_2023 [1]> 40 and type = 'pc'

  1. Добавьте в предыдущий запрос поле с такими же показателями продаж за февраль и сравните результаты. Визуализируйте данные в виде столбчатой диаграммы.

SELECT type, sales_2023[1] AS январь, sales_2023[2] AS февраль

FROM Products

WHERE sales_2023 [1]> 40 and type = 'pc' and sales_2023 [2]> 25

  1. Сравните продажи за год трех любых моделей какого-либо товара: выведите по столбцам количество проданных моделей в каждом месяце. Используйте функцию unnest(), метод self-join и фильтр where. Визуализируйте результат в виде линейной или столбчатой диаграммы.

SELECT

unnest(A.sales_2023) AS model_1521,

unnest(B.sales_2023) AS model_1641,

unnest(C.sales_2023) AS model_1561

FROM

Products A

JOIN

Products B ON A.model = 1521 AND B.model = 1641

JOIN

Products C ON A.model = 1521 AND C.model = 1561;

Задание 4:

  1. Сделайте запрос к системному представлению pg_stat_database. Каждая строка этой таблицы выводит статистику, собранную для одной базы данных.

SELECT * FROM pg_stat_database;

  1. Ответьте на следующие вопросы:

  • Установите, сколько транзакций в базе productDB (или другой, по выбору) было подвергнуто откату.

С помощью системного представления pg_stat_database и xact_rollback - количество транзакций в этой базе данных, для которых был выполнен откат транзакции.

  • Определите процент транзакций, подвергнутых откату, от общего числа всех транзакций. Используйте формулу откат транзакций

xact_commit - количество зафиксированных транзакций в этой базе данных

(104*100)/ (104 +10179) = 1,01%

Изучите, нецелочисленное деление в Postgres.

  • Имелись ли в каких-либо базах данных взаимные блокировки транзакций и если да, то сколько?

  • Выведите статистику по количеству строк, вставленных в какую-либо базу данных, измененных строк и удаленных из нее строк.

tup_inserted - количество строк, вставленное запросами в этой базе данных;

tup_updated - количество строк, изменённое запросами в этой базе данных;

tup_deleted - количество строк, удалённое запросами в этой базе данных.

Задание 5:

  1. Сделайте запрос к системному представлению pg_stat_activity. Она показывает статистику по текущей активности в базе данных.

SELECT * FROM pg_stat_activity;

  1. Посчитайте, какие значения состояния серверного процесса представлено в отчете. Посчитайте, сколько клиентов разных состояний

имеется в текущих процессах.

SELECT state, COUNT(*) AS количество клиентов

FROM pg_stat_activity

GROUP BY state;

Вывод: в ходе лабораторной работы познакомились с основным функционалом и особенностями работы в PostgreSQL.