Category Archives: Postgresql

Настройка производительности Postgresql — pgTune

Все, кто использовал Postgresql, знают, что его производительность очень сильно зависит от конфигурационных файлов. Чтоб их отладить, порой приходится экспериментировать не один вечер.

Но, к счастью, есть скрипты, которые позволяют сформировать первичные настройки параметров. Причем, данные скрипты с открытым исходным кодом, позволяют посмотреть исходные коды и подправить под свои задачи.

Итак:

Онлайн-сервис для расчета параметров Postgresql.

Исходные коды pgTune.
Исходные коды pgTune (продолжение разработки).


По материалам: http://habrahabr.ru/post/217073/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Предметная визуализация

Интересный способ сравнения одинаковости баз в двух таблицах на разных серверах

Для сравнения двух таблиц в двух базах данных на разных серверах можно воспользоваться формированием значения по md5.

Например: select md5(array_send(array(select B from A order by 1))) as md5;

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и интерьер

Настройка Postgresql для работы с 1С

Как показывает практика, не настроенная база данных Postgresql очень медленно работает в 1С. Поэтому, когда говорят, что MsSQL быстрей работает, чем Postgresql с 1С — не верьте. Тут вероятней всего причина кроется в настройках по умолчанию. Т.к. Postgresql по умолчанию настроен таким образом, чтоб работать на любом компьютере. И для того, чтоб использовать всю мощь Вашего сервера — немного нужно его поднастроить.

За настройку Postgresql отвечает файл: postgresql.conf

Если у Вас работает много пользователей (более 100-200), то рекомендую настроить Вам работу Postgresql через pgBouncer. Но, мы не ставим цель данной статьи описывать данную настройку… Поэтому, опишем те параметры, которые сказываются на производительности Вашего сервера:

# Если *, то слушать со всех ip-адресов. По умолчанию, слушается только localhost. Впрочем, этого Вам может хватить.
listen_addresses = ‘*’       

# Номер порта.
port = 5432                # (change requires restart)

# Максимальное количество подключений
max_connections = 100            # (change requires restart)

# shared_buffers: напомним, это НЕ вся память, которая нужна для работы PostgreSQL, это.
#только размер разделяемой между процессами PostgreSQL памяти, которая нужна для выполнения.
#активных операций. Она должна занимать меньшую часть оперативной памяти вашего.
#компьютера, так как PostgreSQL использует также дисковый кэш операционной системы..
#К сожалению, чтобы знать точное число shared buffers, нужно учесть количество.
#оперативной памяти компьютера, размер базы данных, число соединений и сложность запросов,.
#так что лучше воспользуемся несколькими простыми правилами настройки.

#На выделенных серверах полезным объемом будет значение от 8 МБ до 2 ГБ. Объем может.
#быть выше, если у вас большие активные порции базы данных, сложные запросы,.
#большое число одновременных соединений, длительные транзакции, вам доступен.
#большой объем оперативной памяти или большее количество процессоров. И, конечно же,.
#не забываем об остальных приложениях. Выделив слишком много памяти для базы данных,.
#мы можем получить ухудшение производительности. Вот несколько примеров, полученных.
#на личном опыте и при тестировании:

#    * Laptop, Celeron processor, 384MB RAM, база данных 25MB: shared_buffers 12 MB
#    * Athlon server, 1GB RAM, база данных поддержки принятия решений 10GB: 200 MB
#    * Quad PIII server, 4GB RAM, 40GB, 150 соединений, «тяжелые» транзакции: 1 GB
#    * Quad Xeon server, 8GB RAM, 200GB, 300 соединений, «тяжелые» транзакции: 2 GB

# Заметим, что увеличение числа shared_buffers и других параметров памяти потребует.
# изменения настроек System V memory вашей операционной системы. Подробнее об этом.
# можно прочитать в документации по PostgreSQL.

shared_buffers = 32MB            # min 128kB

#Буфер под временные объекты, в основном для временных таблиц.
#Можно установить порядка 16 МБ
temp_buffers = 128MB            # min 800kB

#work_mem: ранее известное как sort_mem, было переименовано, так как сейчас определяет.
#максимальное количество оперативной памяти, которое может выделить одна операция.
#сортировки, агрегации и др. Это не разделяемая память, work_mem выделяется отдельно.
#на каждую операцию (от одного до нескольких раз за один запрос). Разумное значение.
#параметра определяется следующим образом: количество доступной оперативной.
#памяти (после того, как из общего объема вычли память, требуемую для других.
#приложений, и shared_buffers) делится на максимальное число одновременных запросов.
#умноженное на среднее число операций в запросе, которые требуют памяти.

#Для веб-приложений обычно устанавливают низкие значения work_mem, так как запросов.
#обычно много, но они простые, обычно хватает от 512 до 2048 КБ. С другой.
#стороны, приложения для поддержки принятия решений с сотнями строк в каждом.
#запросе и десятками миллионов столбцов  в таблицах фактов часто требуют work_mem.
#порядка 500 МБ. Для баз данных, которые используются и так, и так, этот параметр.
#можно устанавливать для каждого запроса индивидуально, используя настройки сессии..

work_mem = 32MB                # min 64kB
#maintenance_work_mem: предыдущее название в PostgreSQL 7.x vacuum_mem. Это объем памяти,.
#который требуется PostgreSQL для VACUUM, ANALYZE, CREATE INDEX, и добавления внешних.
#ключей. Чтобы операции выполнялись максимально быстро, нужно устанавливать этот.
#параметр тем выше, чем больше размер таблиц в вашей базе данных. Неплохо бы устанавливать.
#его значение от 50 до 75% размера вашей самой большой таблицы или индекса или,.
#если точно определить невозможно, от 32 до 256 МБ.

maintenance_work_mem = 256MB        # min 1MB

#Последнее стаб. 512kB # min 100kB
max_stack_depth = 1MB            # min 100kB

fsync = off                      # turns forced synchronization on or off
synchronous_commit = off        # synchronization level; on, off, or local
wal_sync_method = fsync        # the default is the first option                    # supported by the operating system:
#   open_datasync
#   fdatasync (default on Linux)
#   fsync
#   fsync_writethrough
#   open_sync

full_page_writes = on            # recover from partial page writes

commit_delay = 10            # range 0-100000, in microseconds

commit_siblings = 5            # range 1-1000

checkpoint_segments = 200        # in logfile segments, min 1, 16MB each
checkpoint_timeout = 15min        # range 30s-1h

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Услуги программирования в 1С. Киев

3D визуализация и интерьер

3D визуализация и дизайн

Настройка доступной оперативной памяти в Linux Ubuntu для PostgreSQL

При добавлении оперативной памяти на сервере до 10 Гб, возникла необходимость, чтоб эта память реально использовалась Postgresql, т.к. по умолчанию использовалась только малая часть памяти.

Это делается таким образом:

echo 8589934592 >/proc/sys/kernel/shmall
echo 8589934592 >/proc/sys/kernel/shmmax

или в файле /etc/sysctl.conf прописываются строки:
kernel.shmall = 8589934592
kernel.shmmax = 8589934592

Так же, если у Вас много оперативной памяти, можно уменьшить использование виртуальной памяти. Для этого, допишите параметр:

vm.swappiness=10

swappiness имеет значение от 0 до 100 и представляет собой процент использования виртуальной памяти.

Для того, чтоб применить изменения, не забудьте выполнить команду:

sudo /sbin/sysctl -p

В данном случае, выделяется приложениям 8 Гб, остальная часть идет на нужны операуионной системы.

Полезные статьи по теме:

http://sysdba.org.ua/ustanovka/oracle/ustanovka-oracle-10g-redaktsii-express-i-enterprise-v-ubuntu-8.04.html

http://postgrestips.blogspot.com/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и дизайн

Восстановление базы данных Postgresql

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

Любая база данных выходит из строя… Пользователи забывают делать бекапы и как результат, программистам приходится возиться с восстановлением данных.
Ранее, я не однократно описывал восстановление баз данных Firebird (Interbase), но уже давно работаю с другими базами данных, поэтому, сталкиваюсь с «новыми задачами» по восстановлению информации.

Сегодня, ко мне обратился один старый клиент, у которого много лет работает база данных на Postgresql со вчерашнего дня у них стали выдаваться ошибки Page Error при входе в систему. Как результат — не возможность работы.
Зашел в PgAdmin, попробывал сделать бекап — вывались ошибки. Начал «передвигаться» по списку баз данных — вываливается огромное количество ошибок Page Error. Решили восстановить из бекапа. Как оказалось, последний бекап — за декабрь 2013 года. Пол-года пропало!
И тут меня осенило! Решил попробывать выполнить select. Проходит успешно, данные показывает без ошибки.
Ура! Подумал я себе.

Итак, как мне удалось восстановить базу без потери информации:
1. Создаю новую базу данных (с другим названием) из найденного бекапа (в данном случае, декабрь 2013г.). Проверяю входить в систему — всё отлично.
2. Сохраняю данные из каждой интересующей меня таблицы, подобными запросами:
copy (select * from zrp_zakaz ) to ‘d:\tmp\zrp_zakaz’;
3. Удаляю данные из необходимых таблиц в базе данных, которую восстановили. Например:
delete from zrp_zakaz;
4. Закачиваю данные из сохраненного файла в другой базе данных. Например:
copy zrp_zakaz from ‘d:\tmp\zrp_zakaz’;

Как результат — база восстановилась полностью, без потери данных.
Клиент счастлив, чего и следовало добиться…

Автор: Рудюк С . А. https://corp2.net

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Установка Postgresql и указание пароля

PostgreSQL — это объектно-реляционная система баз данных, которая обладает признаками традиционной коммерческой базы данных, с расширениями, которые будут доступны следующему поколению СУБД (систем управления базами данных).

Установка

Для установки PostgreSQL выполните следующую команду в терминале:

Сразу после установки вы можете настроить сервер PostgreSQL по вашим потребностям, хотя стандартная настройка вполне жизнеспособна.

Настройка

По умолчанию соединения через TCP/IP заблокированы. PostgreSQL поддерживает множество методов аутентификации. Метод аутентификации IDENT используется для postgres и локальных пользователей пока не настроено что-то еще. Обратитесь к PostgreSQL Administrator’s Guide, если вы собираетесь использовать какую-либо альтернативу типа Kerberos.

Дальнейшее обсуждение предполагает, что вы собираетесь разрешить соединения по TCP/IP и используете аутентификацию клиентов на основе метода MD5. Файлы настроек PostgreSQL хранятся в каталоге /etc/postgresql/<version>/main. Например, если вы установили PostgreSQL 8.4, файлы настроек сохранятся в каталоге /etc/postgresql/8.4/main.

Для настройки аутентификации ident добавьте записи в файл /etc/postgresql/8.4/main/pg_ident.conf. В файле содержатся подробные комментарии чтобы направлять вас.

Чтобы разрешить соединения по TCP/IP, отредактируйте файл /etc/postgresql/8.4/main/postgresql.conf. Найдите строку

и замените ее на:

Чтобы разрешить другим компьютерам соединяться с вашим PostgreSQL сервером, замените ‘localhost’ на IP адрес вашего сервера или в качестве альтернативы на 0.0.0.0, чтобы подключить все интерфейсы.

Вы можете также редактировать любые другие параметры, если знаете что вы делаете! Для подробностей смотрите комментарии файла настроек или документацию по PostgreSQL.

Теперь, поскольку мы можем подключиться к нашему серверу PostgreSQL, следующим шагом будет установка пароля для пользователя postgres. Выполните следующую команду в терминале для соединения со стандартной базой шаблонов PostgreSQL:

Эта команда подключится к PostgreSQL базе данных template1 как пользователь postgres. После подключения к серверу PostgreSQL вы окажетесь в SQL консоли. Вы можете выполнить следующую SQL команду в консоли psql для настройки пароля пользователя postgres:

После настройки пароля, измените файл /etc/postgresql/8.4/main/pg_hba.conf на использование MD5 аутентификации для пользователя postgres:

Под конец вам потребуется перезапустить сервис PostgreSQL для применения новых настроек. Из терминала выполните следующее для перезапуска PostgreSQL:

Настройка выше в любом случае неполная. Пожалуйста обратитесь к руководству PostgreSQL Administrator’s Guide для настройки других параметров.

Ссылки

1. Как упоминалось выше, Administrator’s Guide — великолепный ресурс. Руководство также доступно из пакета postgresql-doc-8.4. Выполните следующую команду в терминале для установки пакета:

Чтобы увидеть руководство, введите file:///usr/share/doc/postgresql-doc-8.4/html/index.html в адресную строку вашего браузера.

2. Для общей информации по SQL смотрите Using SQL Special Edition от Rafe Colburn.

3. Также смотрите страницу PostgreSQL Ubuntu Wiki для дополнительной информации.


Источник: http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/postgresql

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

Настройка доступной оперативной памяти в Linux Ubuntu для PostgreSQL

При добавлении оперативной памяти на сервере до 10 Гб, возникла необходимость, чтоб эта память реально использовалась Postgresql, т.к. по умолчанию использовалась только малая часть памяти.

Это делается таким образом:

echo 8589934592 >/proc/sys/kernel/shmall
echo 8589934592 >/proc/sys/kernel/shmmax

или в файле /etc/sysctl.conf прописываются строки:
kernel.shmall = 8589934592
kernel.shmmax = 8589934592

Так же, если у Вас много оперативной памяти, можно уменьшить использование виртуальной памяти. Для этого, допишите параметр:

vm.swappiness=10

swappiness имеет значение от 0 до 100 и представляет собой процент использования виртуальной памяти.

Для того, чтоб применить изменения, не забудьте выполнить команду:

sudo /sbin/sysctl -p

В данном случае, выделяется приложениям 8 Гб, остальная часть идет на нужны операуионной системы.

Полезные статьи по теме:

http://sysdba.org.ua/ustanovka/oracle/ustanovka-oracle-10g-redaktsii-express-i-enterprise-v-ubuntu-8.04.html


Источник: http://postgrestips.blogspot.com/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и дизайн