digital-garden/_inbox/Pipelining.md

19 lines
2.3 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
aliases:
tags:
- зрелость/🌱
date:
- - 2024-05-23
zero-link:
2024-09-01 20:44:54 +03:00
- "[[../garden/ru/meta/zero/00 Разработка]]"
2024-06-13 21:01:37 +03:00
parents:
2024-09-01 20:44:54 +03:00
linked:
2024-06-13 21:01:37 +03:00
---
![](Pasted%20image%2020240523131619.png)
Здесь нарисованы квадратики, соответствующим каким-то отдельным фазам. Они нарисованы совершенно не в масштабе, любая сетевая деятельность занимает больше времени, чем любая деятельность на процессоре. Т.е. если мы делаем соединения на один запрос, мы теряем огромное количество времени вначале на установление соединения, в конце на его закрытие, если необходима еще какая-то авторизация доступа, в БД, к примеру, потеряем еще больше времени. Мы за то же самое время астрономическое, если бы у нас соединение было постоянным, могли бы отправить и получить ответ на два запроса, чем то, что мы сделали с соединением, которое устанавливается каждый раз. ==Держать постоянное соединение эффективнее на порядок.==
Если между запросами нет логической связи и, по сути, поток запросов состоит из отдельных, никак не связанных между собой запросов, почему бы нам не отправлять их сразу, не дожидаясь ответа, а потом ждать всех ответов? Такой подход называется pipelining.
![](Pasted%20image%2020240523131741.png)
Так, например, [PostgreSQL](00%20PostgreSQL.md) умеет делать pipelining. Вы можете существенно сократить время отклика от БД, а значит уменьшить время отклика бэкенда в целом. Еще одна вещь. Можно между вашим бэкендом и БД поставить proxy.