PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Настройка на PostgreSQL:Ключови неща за повишаване на производителността

PostgreSQL и производителност

Производителността е едно от ключовите изисквания в дизайна на софтуерната архитектура и е в центъра на вниманието на разработчиците на PostgreSQL от самото му начало, както е показано и в следния ангажимент за PostgreSQL Git източници:

commit d31084e9d1118b25fd16580d9d8c2924b5740dff
Author: Marc G. Fournier <[email protected]>
Date:   Tue Jul 9 06:22:35 1996 +0000

   Postgres95 1.01 Distribution - Virgin Sources

[...]

diff --git a/src/backend/access/heap/stats.c b/src/backend/access/heap/stats.c
new file mode 100644
index 0000000000..d41d01ac1b
--- /dev/null
+++ b/src/backend/access/heap/stats.c
@@ -0,0 +1,329 @@
+/*-------------------------------------------------------------------------
+ *
+ * stats.c--
+ *    heap access method debugging statistic collection routines
+ *
+ * Copyright (c) 1994, Regents of the University of California

[...]

+ * Also note that this routine probably shouldn't have to exist, and does
+ * screw up the call graph rather badly, but we are wasting so much time and
+ * system resources being massively general that we are losing badly in our
+ * performance benchmarks.
+ */

PostgreSQL постига производителност чрез внедряване на различни функции:

  • Няколко типа индекс
  • Планиране на заявки и оптимизатор, които могат да се възползват от многопроцесорните системи
  • MVCC
  • Разделяне на таблици

Избор на среда

С многото налични днес опции идват толкова много въпроси:

  • На място или в облака?
  • Гол метал или виртуализиран?
  • Маркиран хардуер или да изградите свой собствен?
  • Как функциите на ниско ниво на PostgreSQL или fsync влияят върху производителността на хардуера?
  • Локален диск или споделено хранилище?
  • Какви настройки на операционната система трябва да бъдат зададени?

Отново, уикито на PostgreSQL е много добра отправна точка за производителността на всички неща.

Какви са ключовите неща, които трябва да търсите?

Тъй като има много литература, засягаща различни аспекти на настройката на производителността на PostgreSQL и системния дизайн (намек:потърсете в страницата за xfs), този блог не е предназначен да бъде дълбоко потапяне в някоя от вече обсъжданите теми, а по-скоро като гледната точка на сисадмина откъде да започнем, когато основният фокус е избягването на споровете за ресурси. Ще посоча също много препратки, които разглеждат конкретни въпроси по-подробно. Експертни съвети във всички области, които са критични за производителността на PostgreSQL, са достъпни чрез много компании, предлагащи професионални услуги.

Да започваме!

Събиране на информация

Ако приемем инсталация по подразбиране и знаейки, че PostgreSQL не се опитва да бъде добре настроен от кутията и дори може да има някои странности, тази стъпка включва настройка на необходимите инструменти за наблюдение.

Доброто наблюдение е от решаващо значение за разбирането на приложението и за бързо проследяване на засегнатите ресурси и това е особено вярно за доставчиците на облак, където достъпът до хоста на базата данни може да не е наличен, за да се изпълняват сравнителни показатели за CPU или I/O:

Фиг.1 — SlideShare, Джигнеш Шах, Най-добри практики с управляван PostgreSQL в облака

Реагиране на сигнали за производителността на системата

Инструментите за наблюдение ще изобразяват графики и ще предупреждават за показателите за ефективност на системата:

ЦП:

  • Сигнал — Високото използване показва продължителна заявка.
    • Въздействие — Време за реакция на приложението.
    • Действие — Прегледайте метриките на статистиката на базата данни, за да идентифицирате заявки, които се нуждаят от настройка.

I/O:

  • Сигнал — Голям брой или четения.
    • Въздействие — Време за реакция на приложението.
    • Действие — Добавете друга реплика за четене. Прегледайте статистическите показатели на базата данни, за да идентифицирате продължителни заявки.
  • Сигнал – Голям брой записвания.
    • Въздействие — Време за реакция на приложението.
    • Действие — Настройте параметрите на GUC shared_buffers, work_mem и support_work_mem. Настройте контролния указател и се уверете, че автоматичното вакуумиране е настроено правилно. Ако PostgreSQL е инсталиран на собствен хардуер, конфигурирайте пространства за таблици и/или помислете за разделяне, но разберете предупрежденията за разделяне.

Памет:

  • Сигнал — Високо използване на паметта.
    • Въздействие — I/O производителност.
    • Действие — Прегледайте метриките на статистиката на базата данни, за да идентифицирате заявки, които се нуждаят от настройка.

Мрежа:

  • Сигнал – висока латентност. Обикновено това е проблем с DBaaS.
    • Въздействие – клиенти, репликация.
    • Действие — Преместете хостовете на базата данни по-близо до предните сървъри.
  • Сигнал — Голям брой връзки.
    • Въздействие – Клиенти.
    • Действие — Помислете за използването на анкета за връзка.

Вътрешни показатели за ефективност в базата данни

Изгледите pg_* са прозорецът към производителността на базата данни, а приложенията за управление на PostgreSQL са написани, за да помогнат при корелирането на богатството от информация, която иначе е налична чрез различни SQL заявки. Съществуват допълнителни разширения и те често са интегрирани или налични като плъгини.

Използването на такива инструменти опростява задачата на DBA и гарантира, че се следват най-добрите практики при настройката и конфигурирането на клъстера на базата данни.

Статистика на базата данни

Инструментите за наблюдение като ClusterControl използват статистически данни за активността на базата данни, за да помогнат на DBA при настройката на производителността:

Фиг.2 — Няколко неща, ключови неща за наблюдение в PostgreSQL — Анализиране на вашето работно натоварване Изтеглете Бялата книга днес  &AutomationSQL Management с ClusterControl Научете какво трябва да знаете, за да разгръщате, наблюдавате, управлявате и мащабирате PostgreSQLD Изтеглете Бялата книга

Настройка на заявка

Започвайки с версия 9.5 PostgreSQL включва значителни подобрения в производителността на заявките, като BRIN индекси и паралелни заявки:

Фиг.3 — 2ndQuadrant, Томас Вондра, Подобрения в производителността в PostgreSQL 9.5 (и по-нататък)

Заключване

Concurrency Control е посветена цяла глава в документацията на PostgreSQL. Използвайте инструменти за наблюдение, за да бъдете предупредени, когато броят на заключванията или продължителността на заключването надвиши прага и решете проблема, като потърсите липсващи индекси, прегледате кода на приложението или като преминете към анкета за връзка.

Насипно натоварване

synchronous_commit може да бъде изключен по време на импортиране на големи данни. Повече опции са обсъдени в раздела за документация на PostgreSQL Попълване на база данни.

Заключение

Настройката на производителността на PostgreSQL е сложна задача. Сложността идва от множеството налични настройки, което е силен аргумент в полза на PostgreSQL. Няма сребърен куршум за решаване на проблеми с производителността, а спецификите на приложението в крайна сметка диктуват изискванията за настройка. Следователно инструментите за наблюдение могат да помогнат за получаване на информация за производителността по отношение на производителността на системата и допълнително да позволят да се идентифицират специфичните за PostgreSQL области, които се нуждаят от настройка, както и SQL заявките, които изискват оптимизация. Освен това системите за управление на бази данни могат да помогнат при настройката и администрирането на PostgreSQL, за да се гарантира, че се следват най-добрите практики.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конвертирате низ във времева марка без часова зона

  2. Комбинирайте няколко израза SELECT

  3. Използване на кеширане на pg_prewarm и pg_hibernator на contrib в PostgreSQL 9.4.

  4. Как да зададете изчакване на връзката в SQLAlchemy

  5. Двойно двоеточие (::) нотация в SQL