ПредишенСледващото

pgcompactor

Мисля, че много известни характеристика на PostgreSQL, което има ефект на помпане на масите или маса подувам. Известно е, че тя се проявява в случаи на тежки актуализиране на данни, както е при често обновяване и по време на INSERT / изтриване на операции. В резултат на инфлацията се намалява производителността. Всъщност въпросът за компресиране на таблицата в Postgres? По-долу е отговорът, и в същото време р Нека разгледаме защо това се случва и как могат да бъдат преодолени.

Маси в PostgreSQL представени под формата на страници, размер 8 kb, която има записи. Когато една страница е изцяло запълнена с досиета, маса се добавя към новата страница. Когато udalaleni записа с изтриване или променят чрез UPDATE, на мястото, където те са били на възраст запис не може да се използва повторно веднага. За този процес autovacuum почистване, или вакуумни команда, работи на променените страници и маркирайте мястото като свободна, след което нови записи могат лесно да бъдат записани в това място. Ако autovacuum не се справят, например в резултат на промени в активни повече данни, или просто поради лоши настройки, а след това една маса ще бъде необходимо да се добавят нови страници, като нови записи. И дори след почистването ще достигне нашите отдалечени записи, нови страници, ще останат. Оказва се, че на масата става все по-обеднен по отношение на плътността на записа. Това се нарича ефект на надуване на маси, маса подувам.

Почистване на дейността си, autovacuum или ВАКУУМ, може да намали размера на таблицата пълното премахване на празни страници, но само при условие, че те са в дъното на таблицата. За да се намали масата на PostgreSQL има вакуумни Пълното или клъстера, но и двете от тези методи изискват монтиране на тежки и дълги брави на таблица, която не винаги е най-добрата.

Помислете за едно от решенията. Когато актуализирате записа с помощта на актуализацията, ако пространството за таблици е достъпно, новата версия ще бъде обсъдено е в свободно пространство, без нови страници. Предимство се дава на едно свободно място в близост до горната част на таблицата. Ако актуализирате таблицата с помощта на така наречените фалшиви новини, тип some_column = some_column последната страница, в някакъв момент, всички записи от последната страница отиват в пространството на страниците предходните таблици. По този начин, след няколко такива операции, на последната страница ще бъде празно и обичайната без блокиране VACUUM ще ги изтребя от масата, като по този начин намаляване на размера.

В резултат на това използването на такава техника може да бъде максимално компресиране на една маса, без да причинява критични брави и следователно без намеса на други сесии и нормалното функциониране на базата данни.

И сега най-важното нещо)))) За автоматизиране на тази процедура, има pgcompactor полезност.

Неговите основни характеристики:

  • не се нуждае от зависимости, различни от Perl> = 5.8.8, т.е. можете просто да копирате pgcompactor към сървъра и работата с него;
  • минава през преходници DBD :: Pg, DBD :: PgPP или дори чрез стандартна програма psql, ако първите две на сървъра не трябва;
  • обработване на двете отделни таблици, както и всички маси в рамките на една диаграма, база данни или цялото обединение;
  • възможност за изключване на бази данни, таблици или схеми на обработването;
  • анализ на ефекта на инфлацията и на обработката на само тези таблици, в които тя е налице, за по-точни изчисления, се препоръчва да инсталирате pgstattuple разширение;
  • анализ и възстановяване индекси ефект на инфлацията;
  • анализ и възстановяване уникални ограничения (уникални ограничения) и първичните ключове (първични ключове) с ефекта на инфлацията;
  • частичното използване, т.е. Можете да спрете процеса на компресия, без да жертват нещо;
  • Динамично регулиране на текущата натоварване на база данни, така че да не се отрази на изпълнението на заявките на потребителя (с възможност за настройка при стартиране);
  • препоръки администратори, готови придружени от DDL, за възстановяване на обектите на базата данни, които не могат да бъдат възстановени автоматично.

Използвайте чифт примери:

се движат по всички клъстер трябва индекса наново:

# Pgcompactor --всички --reindex

се движат по отделна таблица (и възстановяването индекси):

# Pgcompactor --reindex --dbname геоданни --table градове --verbose информация> pgcompactor.log 2> 1

Размерът на масата падна от 9,2GB до 5,6GB. Общият размер на всички индекси падна от до 7,5GB 2,8GB

Виртуализация на Linux pgcompactor - обработка на раздутите бази данни и таблици в PostgreSQL

Подкрепете проекта - споделете линка, благодаря!