• Быстрый переход
  • Рубрики
  • Свежие записи
  • Метки
  • Архивы
  • Реклама 1
  • Реклама 2
  • Рейтинг@Mail.ru

    Добро пожаловать! Ваш IP-адрес: ec2-54-226-172-30.compute-1.amazonaws.com

    PostgreSQL

    Автоматическая сборка мусора (Automatic Vacuuming) в PostgreSQL

    Синтаксис VACUUM:
    VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]
    VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]

    Синтаксис ANALYZE:
    ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]

    Кроме сборки мусора (VACUUM) производится ещё и анализ (ANALYZE). Периодическое выполнение команды ANALYZE необходимо для нормального функционирования планировщика. Собранная с помощью этой команды статистика позволяет значительно ускорить выполнение SQL- запросов. То есть, если не хочется настраивать автоматическую сборку мусора, то в любом случае её придётся делать только теперь в ручную. Процесс обычной сборки мусора в PostgreSQL (VACUUM без приставки FULL) не блокирует таблиц и может выполняться в фоне, не мешая выполнению запросов. Регулярное исполнение команд VACUUM и ANALYZE обязательно. Это необходимо по той причине, что иначе не получится заново использовать дисковое пространство, которое занимают ранее удалённые или изменённые строки и не удастся обновить статистику для планировщика запросов. И то и другое отрицательно сказывается на эффективности использования ресурсов и производительности запросов. Начиная с версии PostgreSQL 8.1 сервер может самостоятельно автоматически запускать ещё один системный процесс, который, соответственно, так и называется autovacuum daemon. Все настройки для этого процесса хранятся в postgresql.conf. К значениям этих параметров следует отнестись крайне внимательно. Если по каким-то причинам демон было решено не запускать, то в любом случае необходимо производить сборку мусора и набор статистики в ручную.

    Основным средством физического и аналитического сопровождения баз данных в PostgreSQL является команда SQL VACUUM и ее аналог — сценарий vacuumdb. Оба средства выполняют две общие функции:
    1.удаление всех данных, оставшихся в результате отмены транзакций и других операций, оставляющих временные данные;
    2.анализ операций с базами данных, по результатам которого PostgreSQL конструирует более эффективные запросы.

    Подробнее...

    Установка Postgresql 9.3 Debian 7 Wheezy

    Для установки воспользуемся официальным репозиторием.

    Создаем конфиг репозитория.

    sudo nano /etc/apt/sources.list.d/pgdg.list

    Вставляем одну URL репозитория

    deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main

    Узнать кодовое имя дистрибутива можно командой «lsb_release -c»

    Добавляем ключ репозитория.

    wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -

    Устанавливаем

    sudo apt-get update
    sudo apt-get install postgresql

    так же можно

    sudo apt-get install postgresql-9.3 postgresql-contrib-9.3 postgresql-doc-9.3

    [warn] No PostgreSQL clusters exist; see «man pg_createcluster» … (warning).

    Не давно наткнулся на такую проблему, мне не удавалось полностью установить PostgreSQL на Debian.

    Все началось с:
    sudo apt-get install postgresql
    После чего у меня не запускался postgreSQL и не создавалось директория /etc/postgresql/
    Далее я решил удалить все и начать все с начало.

    sudo apt-get purge postgresql

    Но при удалении и установки по новой я опять получал тоже самое.

    warn] No PostgreSQL clusters exist; see "man pg_createcluster" ... (warning).
    Purging configuration files for postgresql-9.1 ...
    Removing postgresql-client-9.1 ...
    Removing postgresql-common ...
    [warn] No PostgreSQL clusters exist; see "man pg_createcluster" ... (warning).
    Removing 'diversion of /usr/bin/pg_config to /usr/bin/pg_config.libpq-dev by postgresql-common'
    Purging configuration files for postgresql-common ...

    Не много поискав в интернете я нашел ряд рекомендации и ВОТ, то что мне реально помогло:

    Во первых:
    sudo apt-get --purge remove postgresql\*
    После того, как все пакеты PostgreSQL были удалены, запустите
    rm -r /etc/postgresql/
    rm -r /etc/postgresql-common/
    rm -r /var/lib/postgresql/
    userdel -r postgres
    groupdel postgres

    sudo apt-get install postgresql-9.1 postgresql-contrib-9.1 postgresql-doc-9.1

    Получаем:
    Setting up postgresql-9.1 (9.1.11-1.pgdg70+1) ...
    Creating new cluster 9.1/main ...
    config /etc/postgresql/9.1/main
    data /var/lib/postgresql/9.1/main
    locale en_IN
    port 5432
    update-alternatives: using /usr/share/postgresql/9.1/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
    [ ok ] Starting PostgreSQL 9.1 database server: main.

    На этом все!

    Резервное копирование и Восстановление базы данных Postgre

    В поставку PostgreSQL сервера входят утилиты для резервного копирования, и восстановления из резервной копии базы данных: pg_dump и pg_restore.
    Резервное копирование базы Postgre (pg_dump)
    Используем pg_dump для резервного копирования базы данных с именем «Test». pg_dump позволяет делать как текстовые, так и сжатые архивы вашей БД.
    Дамп с сжатием:
    #pg_dump –Fc –U postgres "Имя базы данных" > *.back.tgz
    Где:
    postgres – имя пользователя базы данных.
    «Имя базы данных» – имя базы данных на вашем сервере.
    *.back – имя конечного файла содержащего дамп.
    Текстовый дамп:
    # pg_dump –Fе –U postgres "Имя базы данных" > *.sql
    Где:
    postgres – имя пользователя базы данных.
    «Имя базы данных» – имя базы данных на вашем сервере.
    *.sql – имя конечного файла содержащего дамп в текстовом формате.

    Восстановление базы данных из архивной копии. (pg_restore)
    Восстановление базы данных postgre производится при помощи утилиты pg_restore. Для ее использования нужно указать Имя пользователя сервера БД, имя базы данных и имя файла с вашим дампом:
    # pg_restore –U ИМЯ ПОЛЬЗОВАТЕЛЯ БД –d ИМЯ БАЗЫ ДАННЫХ –v ПУТЬ К ВАШЕМУ ДАМПУ.
    Например:
    Имя пользователя postgres.
    Имя базы данных Test.
    Имя файла dump.back.
    # pg_restore –U postgres –d Test –v dump.back
    Создадим небольшой скрпит для автоматического архивирования базы данных postgreSQL. В имени архивной копии будем использовать текущее число, что бы по названию можно было определить дату архива.

    |BackUpDir="/home/melfis/dump/" // Директория для хранения бэкапов
    |DateName=`date +%d.%m.%Y-%H.%M` //Получаем дату для имени файла
    |cd $BackUpDir //Переходим в директорию с бэкапами
    |echo Начато резервное копирование базы данных
    |pg_dump -Fc -U postgres "Test" > $DateName.Test.backup //Делаем бэкап
    |echo Резервное копирование завершено нажмите любую клавишу.
    |read x

    Сделайте скрипт исполняемым, и добавьте его в cron. В результате выполнения этого кода в директории находящейся в переменной BackUpDir будет создана сжатая архивная копия вашей базы данных.
    При создании резервной копии с ключом -t, будет создана текстовая резервная копия. Она занимает намного больше места, но удобна тем что SQL код поддается редактированию.

    Установка postgresql 9.1 с postgis 2

    Установка PostgreSQL на Ubuntu:
    1 - sudo apt-add-repository ppa:sharpie/for-science # To get GEOS
    2 - sudo apt-get -y --force-yes install postgresql-9.1 postgresql-server-dev-9.1 postgresql-contrib-9.1 gdal-bin binutils libgeos-c1 libgeos-dev libspatialite libspatialite-dev libgdal1-dev libxml2 libxml2-dev libxml2-dev checkinstall libproj0 libproj-dev libpq-dev build-essential
    3 - sudo mkdir -p '/usr/share/postgresql/9.1/contrib/'
    4 - cd usr/share/postgresql/9.1/contrib/
    5 - wget http://postgis.refractions.net/download/postgis-2.0.2.tar.gz
    6 - tar zxvf postgis-2.0.2.tar.gz && cd postgis-2.0.2
    7 - ./configure --with-raster --with-topology
    8 - make
    9 - sudo make install

    Далее:
    sudo su postgres -c'createdb -E UTF8 -U postgres template_postgis'
    sudo su postgres -c'createlang -d template_postgis plpgsql;'
    sudo su postgres -c'psql -U postgres -d template_postgis -c"CREATE EXTENSION hstore;"'
    sudo su postgres -c'psql -U postgres -d template_postgis -f postgis.sql' (en un directorio atras estan estos sql)
    sudo su postgres -c'psql -U postgres -d template_postgis -f spatial_ref_sys.sql'
    sudo su postgres -c'psql -U postgres -d template_postgis -c"select postgis_lib_version();"'
    sudo su postgres -c'psql -U postgres -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;"'
    sudo su postgres -c'psql -U postgres -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"'
    sudo su postgres -c'psql -U postgres -d template_postgis -c "GRANT ALL ON geography_columns TO PUBLIC;"'

    Установка Redmine на FreeBSD (из портов), с БД PostgreSQL

    Установка из портов не простая, а очень простая:

    $ cd /usr/ports/redmine
    # make install clean

    При вопросе как «ставить порт?» я выбираю PostgreSQL и веб-сервер Thin (шустрый рубирельсовый веб-сервер, завязанный на EventMachine).

    Далее — настраиваем БД:

    # psql -U pgsql postgres
    # CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'my_password' NOINHERIT VALID UNTIL 'infinity';
    # CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

    Ещё далее — готовим редмайн к старту:

    # cd /usr/local/www/redmine/config
    # cp database.yml.example database.yml

    Подробнее...