PostgreSQL

Как да убиете празните връзки в PostgreSQL

Как да убиете празните връзки в PostgreSQL

Първата стъпка при извършване на промени или четене на някаква информация от база данни PostgreSQL е установяването на връзки. От друга страна, всяка връзка генерира режийни, използвайки процедура и съхранение. Ето защо устройство с минимални ресурси (четене, съхранение, хардуер) може да поддържа ограничената съвкупност от връзки. След като ограничената съвкупност излезе далеч отвъд дадена точка, тя трябва да продължи да хвърля грешки или да отказва връзки. В рамките на PostgreSQL.conf, PostgreSQL се справя прилично с ограничаването на връзките. В този урок ще разгледаме различните форми на състояния, които връзките на PostgreSQL могат да имат. Ще ви покажем как да определите дали връзката е активна или е била неактивна дълго време, като в този случай тя може да бъде прекъсната, за да се освободят връзките и ресурсите.

Свързване със сървър:

В началото се уверете, че pgAdmin4 е напълно функционален, инсталиран на вашата компютърна система. Отворете го от вашите приложения. Трябва да го свържете с localhost, като предоставите парола.

След свързването с root localhost, свържете го със сървъра PostgreSQL. Въведете паролата за потребителя на PostgreSQL 13 'Postgres за свързване. Докоснете бутона OK, за да продължите.

Сега сте свързани към сървъра на PostgreSQL 13. Можете да видите списък с бази данни, пребиваващи в сървъра, както е представено на снимката, приложена по-долу. Базата данни на Postgres е базата данни по подразбиране, създадена по време на инсталацията на PostgreSQL, докато базата данни „test“ е създадена от потребител след инсталацията.

Състояния на връзка:

Ако се установи връзка PostgreSQL, тя може да извършва различни действия, които водят до преходи на състоянието. Трябва да се вземе рационално решение дали връзката работи или е оставена на празен ход / неизползвана в зависимост от състоянието и продължителността, в която е била във всяко състояние. Важно е да се отбележи, че докато приложението умишлено не затвори връзката, то ще продължи да работи, губейки ресурси дълго след отделянето на клиента. Има 4 потенциални състояния за връзка:

Идентифицирайте състоянията на връзка:

Каталогичните таблици на PostgreSQL предоставят вграден изглед 'pg_stat_activity' за проверка на статистически данни за това, което прави дадена връзка или колко време е било в това състояние. За да проверите цялата статистика за всяка база данни и всяко състояние на свързване, отворете инструмента за заявка и изпълнете заявката по-долу:

>> ИЗБЕРЕТЕ * ОТ pg_stat_activity;

Заявката е изпълнена ползотворно и е показана бележка за изпълнението.

Когато проверите нейната страна за извеждане на данни, ще намерите таблица с няколко колони, както е показано по-долу. Можете да проверите състоянията на връзките, като проверите стойностите на полето „състояние“.

За да опростите изхода и да имате ясна представа за връзките, техните състояния, потребителите и сървърите в тези състояния, трябва да изпълните модифицираната по-долу заявка в инструмента за заявки. Тази заявка показва само 5-те полета на записи за връзки и конкретни данни относно тях. Колоната 'pid' означава идентификатор на процеса. Колоната „състояние“ съдържа състоянията на процесите. Колоната 'usename' идентифицира потребителя, който е работил по конкретния процес. Колоната „datname“ посочва името на базата данни, върху която се изпълнява транзакцията. Колоната 'datid' означава идентификатор на база данни.

>> ИЗБЕРЕТЕ pid, състояние, име на име datname, datid, от pg_stat_activity;

Изходът има общо 8 записани процеса. Колоната „състояние“ показва, че в момента работят само 3 процеса. Едната се държи по подразбиране на базата данни „Postgres, а другите две се съхраняват от базата данни„ тест “. В същото време потребителят на Postgres извършва тези процеси.

Идентифицирайте празните връзки:

Изглежда, че „състоянието“ е единствената стойност, която търсим в рамките на гореспоменатите резултати. Ще използваме тази информация, за да определим кои процеси или заявки са в кои състояния и след това да се задълбочим. Можем да намалим подробностите, които търсим, като прецизираме заявката, което ни позволява да подготвим намеса по тази конкретна връзка. Можем да направим това, като изберем само неактивните PID, използвайки клаузата WHERE и състоянията за тези PID. Трябва също така да следим колко дълго връзката е била неактивна и да гарантираме, че нямаме пренебрегнати връзки, които пропиляват ресурсите ни. В резултат на това ще използваме префразираната по-долу команда, за да покажем само записи, свързани с процесите, които в момента са в неактивност:

>> ИЗБЕРЕТЕ pid, usename, useysid, datid, datname, application_name, backend_start, state_change, състояние FROM pg_stat_activity WHERE state = 'idle';

Заявката е извлекла само 2 записа от данни, при които състоянието е било „неактивно“, използвайки клаузата WHERE. Резултатът показва 2 неактивни процеса с определена информация за тях.

Убийте неактивна връзка:

След идентифицирането на празните връзки, сега е време да ги убиете. След като сме спрели процеса или в състояние на задържане, или неактивни за много по-дълго, бихме могли да използваме простата команда за лесно прекратяване на механизма отзад, без да нарушаваме дейностите на сървъра. Трябва да предоставим процеса 'id' в заявката във функция за прекратяване.

>> ИЗБЕРЕТЕ pg_terminate_backend (7408);

Процесът беше великолепно убит.

Сега проверете останалите неактивни връзки от приложената по-долу заявка.

>> ИЗБЕРЕТЕ datid, usename, datname, pid, състояние FROM pg_stat_activity WHERE state = 'idle';

Резултатът показва само 1 оставащ процес, който е неактивен.

Заключение:

Уверете се, че не пропускате нито една стъпка, за да убиете ефективно неактивните връзки от базата данни PostgreSQL.

Как да покажа брояч на FPS в игрите на Linux
Linux игрите получиха голям тласък, когато Valve обяви поддръжка на Linux за Steam клиент и техните игри през 2012 г. Оттогава много AAA и независими ...
Как да изтеглите и пуснете Civilization VI на Сид Майер на Linux
Въведение в играта Civilization 6 е модерен поглед върху класическата концепция, въведена в поредицата от игрите Age of Empires. Идеята беше доста про...
Как да инсталирате и играете Doom на Linux
Въведение в Doom Серията Doom възниква през 90-те години след пускането на оригиналния Doom. Това беше незабавен хит и от този момент нататък серията ...