Страницы

Поиск по вопросам

среда, 1 января 2020 г.

В чем различия между “одним запросом” и “одним обращением” к базе в PostgresSQL?

#java #postgresql


Начав работать с PostgresSQL я столкнулся с непониманием разницы между понятиями
один запрос, и одно обращение к серверу.

Раньше я думал что если я в конце каждого скрипта ставлю ; то автоматически получаю
два обращения и два запроса, и вообще думал что это синонимы. На пример:

INSERT INTO table_01 (...) VALUES (...);

INSERT INTO table_02 (...) VALUES (...);


Но тут старшие товарищи подсказали мне что это не синонимы, а разные вещи.

Если я ввожу два разных скрипта за один раз я всегда делаю два обращения? Или нет?
Помогите пожалуйста разобраться как это работает?


Что понимать под запросом?
Что понимать под обращением?
В чем главные различия учет которых принципиален при подключении приложения к базе?

    


Ответы

Ответ 1



1) 2) Если сделать вот так: connection.execute( "INSERT INTO table_01 (...) VALUES (...);" ); connection.execute( "INSERT INTO table_02 (...) VALUES (...);" ); это два запроса и два обращения. А если так: connection.execute( "INSERT INTO table_01 (...) VALUES (...);INSERT INTO table_02 (...) VALUES (...);" ); то запросов всё равно два, а обращение одно. 3) В первом случае после каждого execute ты получишь один ответ. Т.е. всего 2 ответа, и в каждом одно "значение". Во втором случае ты получишь один массив (ну не совсем массив, но в данном случае это неважно) из ответов, где их (ответов) будет 2 штуки по одному значению в каждом ответе. Разница - в том, как получить ответы (например, как понять, оба запроса выполнены без ошибок, один - опять же какой именно,- или ни одного). А принципиально - надо начинать с проверки, может ли вообще коннектор обслужить мультизапросы.

Ответ 2



Мне кажется, что запрос- это когда ты шлешь на сервер свои инструкции. Соответственно, если ты шлешь пакет запросов из 2-ух инструкций(как в примере), то ты говоришь серверу "выполни вот это"=> это одно обращение на сервер. Сервер же раскрывает данный пакет на своей стороне и выполняет 2 запроса.

Ответ 3



Общее понятие Давайте посмотрим общий смысл слова запрос: запрос это: 1) Обращение с требованием, просьбой дать какие-л. сведения, объяснения и т.п по какому-н. делу. Если мы будем углубляться в употребление этого слова, то вероятно придем к выводу, что в одном обращении к чему-то либо, может быть несколько запросов, если есть такая возможность. Хотя по сути, в общем употреблении это практический синонимы. Аналогия в реальной жизни Приведем аналогию с человеком, предположим, вы хотите побеспокоить кого-либо со своим вопросом. Подходите к человеку и говорите: Подскажите пожалуйста, где я могу найти ближайшую кофейню? Сколько здесь обращений и запросов? Правильно одно! Вы же один раз обратились к человеку. Подскажите пожалуйста, где я могу найти ближайшую кофейню? А еще меня интересует где здесь есть музей? Ага, до сих пор одно обращение к человеку, но запросов уже два. Тогда рассмотрим ситуацию с другого плана: Подскажите, где я могу найти ближайшую кофейню? Ближайшая кофейня находится в конце данной улицы Спасибо! Подскажите еще, где я могу найти продуктовый магазин? Сколько обращений и запросов вы сделали к человеку? По два. Все верно. База данных Так же это работает в базе данных, вы обращаетесь к базе, но можете отправить одновременно несколько запросов за одно обращение, чтобы сократить издержки на передачу данных, если для этого есть возможность в драйвере, если от выполнения этого запроса не зависят дальнейшие действия в коде. Если запросов много на INSERT, то вероятно лучше их уместить в одну конструкцию, чтобы ускорить вставку. INSERT INTO table VALUES (1,2,3,4), (1,2,3,4); Если конечно это поддерживается синтаксисом базы данных, тогда будет один запрос и одно обращение.

Комментариев нет:

Отправить комментарий