Полезные советы по PostgreSQL::Журнал СА 11.2006
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Книжная полка  

Защиты много не бывает

Среди книжных новинок издательства «БХВ» есть несколько изданий, посвященных методам социальной инженерии

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6458
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 7151
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4433
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3096
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3894
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3910
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6399
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3244
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3540
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7381
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10735
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12455
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14122
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9206
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7151
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5457
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4691
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3506
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3218
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3457
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3102
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Полезные советы по PostgreSQL

Архив номеров / 2006 / Выпуск №11 (48) / Полезные советы по PostgreSQL

Рубрика: Программирование /  Программирование

Полезные советы по PostgreSQL

Используйте родственные связи

PostgreSQL, будучи, в общем-то реляционной СУБД, поддерживает и некоторые «объектные» свойства. Например, наследование таблиц. То есть вы можете на базе существующей таблицы (которая в дальнейшем так и будет называться – базовой) создать производную (или даже несколько), дополнив её новыми полями:

CREATE TABLE mytable (id serial, ware varchar, price numeric(10,2));

CREATE TABLE withdesc (description text) INHERITS mytable;

Теперь в таблице withdesc, помимо собственного поля description, будут доступны и поля родительской таблицы mytable – id, ware и price. Причём данные, записанные, скажем, в поле ware таблицы withdesc, будут видны и в mytable (поскольку физически они там и хранятся). Естественно, и наоборот, изменения mytable будут находить отражение и в withdesc.

Благодаря этому можно, например, вести одну таблицу с паспортными данными по всем вашим клиентам, а для хранения технической информации (различающейся, скажем, для пользователей ADSL и коммутируемого доступа) использовать две производные таблицы на её базе.

«Грузите» сервер с помощью курсоров

«Классическая» схема взаимодействия между клиентской программой и сервером баз данных заключается в том, что клиент отсылает запрос на сервер, получает ответ, размещает его в своей памяти и обрабатывает в соответствии со своими задачами. Очевидно, что если выборка получается достаточно объёмная, то клиенту приходится затрачивать значительные ресурсы на её временное хранение.

PostgreSQL предлагает способ переложить эту заботу на плечи сервера: использование курсоров. Курсор – это указатель на результат запроса (выборку), к которому клиент может обращаться за тем или иным фрагментом без необходимости держать его полностью в своей памяти. Рассмотрим небольшой пример:

admin=# BEGIN;

BEGIN

admin=# DECLARE mycursor CURSOR FOR

admin-#        SELECT * FROM mytable;

DECLARE CURSOR

admin=# FETCH NEXT FROM mycursor;

  1 | Монитор | 7999.00

admin=# FETCH NEXT FROM mycursor;

  2 | Коврик для мыши |  7.90

admin=# MOVE BACKWARD ALL IN mycursor;

MOVE 1

admin=# FETCH NEXT FROM mycursor;

  1 | Монитор | 7999.00

admin=# COMMIT;

COMMIT

Как видите, это напоминает обычную работу из Perl-сценария, но на этот раз выборка хранится на стороне сервера. Запросом FETCH можно получить следующую, предыдущую, текущую запись (или несколько записей начиная с текущего положения указателя). Запрос MOVE служит для перемещения указателя в том или ином направлении. Безусловно, при использовании курсоров есть свои недостатки – частые запросы к СУБД заметно сказываются на быстродействии, да и на сеть создаётся дополнительная нагрузка... Поэтому в PostgreSQL курсоры используются сравнительно редко. Тем не менее, в ряде случаев они могут оказаться полезны, например, если приходится работать с большими объёмами данных на слабенькой клиентской машине.

Нужно заметить, что в PostgreSQL курсоры поддерживают только чтение. Кроме того, курсор может быть использован только внутри транзакционного блока (BEGIN – COMMIT/ROLLBACK).

Ищите информацию в первоисточниках

В PostgreSQL можно узнать много интересного непосредственно из системных таблиц. Получить их список в интерактивном терминале позволяет директива \dS. Например, таблица pg_authid содержит сведения о зарегистрированных PostgreSQL-пользователях (для работы можно использовать представления на её базе – pg_user, pg_shadow, pg_group); из pg_index вы получите данные по индексным файлам; и т. д.

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

Не забывайте об уборке

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

Поэтому не забывайте о периодической (в идеале – ежедневной, а также внеплановой после крупных изменений в базе) очистке, которая выполняется командой VACUUM (VACUUM ANALYZE – для анализа структуры данных). Параметр VERBOSE позволит вам узнать, чем же СУБД занимается в это время.

Нужно заметить, что зачастую при установке PostgreSQL утилита очистки базы (vacuumdb) автоматически «прописывается» в crontab или сценариях ежедневного обслуживания (periodic). Но поскольку очистка сильно замедляет работу СУБД, имеет смысл проконтролировать эти установки и привести их в соответствие с режимом работы вашего сервера.

Сергей Супрунов


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru