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

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

Мониторинг  

Какая задача мониторинга отнимает больше всего времени?

Многие системные администраторы тратят до 30% рабочего времени на рутину мониторинга. Но

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

Рынок труда  

Какие навыки вы хотите развивать в 2026 году?

Рынок труда меняется быстро. Еще вчера его называли рынком соискателей, а сегодня

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

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

От сисадмина до архитектора: книги, которые прокачают ваш стек в этом году

Новинки от издательства «БХВ» отличаются тем, что в них часто делается упор

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

Автоматизация  

Автоматизируем рутину: что реально работает?

Многие сисадмины автоматизировали что-то за последний год. Но далеко не все остались

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

Защита ИТ-системы  

Практическая защита: что вы внедрили и что мешает?

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

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

Вопрос-ответ  

Обеспечиваем безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы

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

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

От «безопасного» Linux до Контролируемого взлома

Издательство «БХВ» продолжает радовать читателей интересными новинками и в наступившем году. Вы можете

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Друзья сайта  

 Полезные советы по 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