Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 36 additions & 19 deletions 12-05.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
# Домашнее задание к занятию «Индексы»
# Домашнее задание к занятию «Индексы» Яковлев Д.А

### Инструкция по выполнению домашнего задания

1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw).
2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`.
3. Выполните домашнее задание и заполните у себя локально этот файл README.md:
- впишите вверху название занятия и ваши фамилию и имя;
- в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка;
- для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md);
- при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md).
4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`).
5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github.
6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете.

Желаем успехов в выполнении домашнего задания.

### Задание 1

Напишите запрос к учебной базе данных, который вернёт процентное отношение общего размера всех индексов к общему размеру всех таблиц.

Решение:

```sql
SELECT ROUND((SUM(index_length) / (SUM(data_length) + SUM(index_length))) * 100, 2) AS '% общего размера индексов к общему ращмеру всех таблиц', SUM(index_length) AS 'Общий размер всех индексов', SUM(data_length)+SUM(index_length) AS 'Общий размер всех таблиц'
FROM information_schema.tables
WHERE information_schema.tables.table_schema = 'sakila';

```

![alt text](https://github.com/NorthernWarrior88/sys-pattern-homework/blob/patch-1/%D0%91%D0%B5%D0%B7%20%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8.png)


### Задание 2

Выполните explain analyze следующего запроса:
Expand All @@ -30,11 +29,29 @@ where date(p.payment_date) = '2005-07-30' and p.payment_date = r.rental_date and
- перечислите узкие места;
- оптимизируйте запрос: внесите корректировки по использованию операторов, при необходимости добавьте индексы.

## Дополнительные задания (со звёздочкой*)
Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале.
Решение:

### Задание 3*
До оптимизации:

Самостоятельно изучите, какие типы индексов используются в PostgreSQL. Перечислите те индексы, которые используются в PostgreSQL, а в MySQL — нет.
![alt text](https://github.com/NorthernWarrior88/sys-pattern-homework/blob/main/3.png)

После анализа исходного запроса было выявлено, что основным узким местом является подключение избыточных таблиц, таких как inventory, rental и film. Эти таблицы не несут полезной нагрузки для расчёта суммы платежей клиентов за определённую дату, так как их данные не используются в итоговых вычислениях. Их исключение из запроса позволит сократить время выполнения и снизить нагрузку на систему.

Кроме того, использование оператора DISTINCT требует выполнения сортировки и удаления дубликатов, что может быть ресурсоёмким, особенно при работе с большими объёмами данных. Также стоит учитывать, что оконные функции, хотя и мощные, могут быть затратными по времени и ресурсам при обработке крупных наборов данных.

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



Код после оптимизации:

```sql
EXPLAIN ANALYZE
SELECT concat(c.last_name, ' ', c.first_name) AS customers, SUM(p.amount)
FROM customer c
JOIN rental r ON c.customer_id = r.customer_id
JOIN payment p ON r.rental_date = p.payment_date WHERE date(p.payment_date) = '2005-07-30'
GROUP BY c.customer_id;
```
![alt text](https://github.com/NorthernWarrior88/sys-pattern-homework/blob/main/4.png)

*Приведите ответ в свободной форме.*
63 changes: 41 additions & 22 deletions 12-06.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,6 @@
# Домашнее задание к занятию «Репликация и масштабирование. Часть 1»
# Домашнее задание к занятию «Репликация и масштабирование. Часть 1» ЯКОВЛЕВ Д.А

### Инструкция по выполнению домашнего задания

1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw).
2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`.
3. Выполните домашнее задание и заполните у себя локально этот файл README.md:
- впишите вверху название занятия и ваши фамилию и имя;
- в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка;
- для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md);
- при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md).
4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`).
5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github.
6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете.

Желаем успехов в выполнении домашнего задания.

---

### Задание 1

Expand All @@ -24,6 +9,40 @@
*Ответить в свободной форме.*

---
Решение:

Master-Slave:

Роли: Один master (запись), один или несколько slave (чтение).

Репликация: Однонаправленная (master → slave).

Отказоустойчивость: Низкая (master — единая точка отказа).

Сложность: Простота настройки.

Использование: Масштабирование чтения, резервное копирование.

Master-Master:

Роли: Все серверы — master (запись и чтение).

Репликация: Двунаправленная (master ↔ master).

Отказоустойчивость: Высокая (если один master падает, другой работает).

Сложность: Высокая (нужно решать конфликты данных).

Использование: Высокая доступность, распределённые системы.

Главное отличие:

Master-Slave — для простого масштабирования чтения.

Master-Master — для высокой доступности и распределённой записи.




### Задание 2

Expand All @@ -33,13 +52,13 @@

---

## Дополнительные задания (со звёздочкой*)
Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале.
Решение:

---
Состояние сервера(SLAVE)

### Задание 3*
![alt text](https://github.com/NorthernWarrior88/sys-pattern-homework/blob/main/DB-06(1).png )
![alt text](https://github.com/NorthernWarrior88/sys-pattern-homework/blob/main/DB-06(2).png)

Выполните конфигурацию master-master репликации. Произведите проверку.
Мною было создано на мастере 2 БД SAKILA и NETOLOGY, на скриншоте процесс создания второй БД и проверка репликации на слейве.

*Приложите скриншоты конфигурации, выполнения работы: состояния и режимы работы серверов.*
![alt text](https://github.com/NorthernWarrior88/sys-pattern-homework/blob/main/DB-06(3).png)
Loading