Записи в таблице называются кортежами (tuples)
Кортеж - упорядоченная группа компонентов или атрибутов, каждый из которых имеет определенный тип.
Все кортежи дожны иметь одинаковое количество типов компонентов.
В таблице не должно быть идентичных кортежей.
Каждый атрибут должен быть атомарным, т.е. не являться другой записью или или списком атрибутов.
Атрибут опеределяющий отдельную запись в таблице называется первичным ключом.
SQL (обычно произносится как "sequel") - язык запросв, разработанный IBM. Т.к. оригинальный SQL не включает себя ряд команд, необходимых для администрирования баз данный, появляются вариации SQL, реализованные разными разработчиками (Oracle, MS и тд)
Типы команд SQL
-Data manipulation language (DML) - команды для ввода, удаления, обновления и выборки данных из базы
-Data definition language (DDL) - команды для создания таблиц, определения взаимосвязей.
-Data control Language (DCL) - команды для контроля разрешений и определения прав доступа.
Система управления базой данных (DBMS) это комплекс программ, позовляющих создавать базы данных и приложений использующих такие базы. Функционал DBMS:
-создание баз данных
-запросы и обновление даннх
-многозадачность: возможность для нескольких пользователей/приложений одновременно читать данные, либо по очереди записывать
-хронология изменений. DBMS отслеживает все изменения в базе и сохраняет их виде журнал, с помощью которого база данных может быть восттановлена в случае отказа системы, например, непредвиденного отключения.
-обеспечение безопасности. предоставление доступа только авторизованным пользователям. разграничение прав.
-поддержание целостности (критерии перечислены выше)
Postgre - одна из DMBS. Может быть запущена любой UNIX-платформе, включая юниксоподобные системы, такие как MacOS. Может быть также запущена на Win Server 2003.
Приложения обращаются к главному процессу сервера баз данных, который создает новый процесс для обслуживания каждого запроса на доступ к базе данных.
Клиентские программы подключаются к серверу с использованием протокола, разработанного специально для Postgre, но они также могут использовать стандартный интерфейс, ODBC (Open Database Connectivity) или JDBC. С помощью ODBC к серверу Postgre могут подключаться многие приложение включая MS Access и Excel.
NULL означает, что значение неизвестно в данный момент (например дата отправки товара, на момент когда он еще не отправлен), или не подходит для данной строки (например поле "цвет очков" для людей, которые не носят очки). Столбцам можно запретить принимать NULL в качестве значения поля.
Главное приложение Postgre (postmaster) содержит серверный код, который обслуживает запросы на доступ к данным от клиентов.
В директории data хранятся файлы, нужные для базы данных. Она хранит не только таблицы и записи, но также системные параметры. Установка по умолчанию располагается в /usr/local/pgsql и содержит следующие компоненты:
-bin приложения и утилиты, такие как pg_ctl и postmaster
-data - база данных, инициализируемая initdb
-doc - документация в формате HTML
-include - заголовки для использования при разработке приложений
-lib - библилотеки для использования при разработке приложений
-man - страницы мануалов для инструментов Postgre
-share - образцы конфигурационных файлов
Установка в одну директорию не всегда идеальный вариант, т.к. файлы приложения и изменяемые данные хранятся в одом месте.
Файлы, используемые Postgre можно разделить на 2 основные категории:
-Файлы, в которые производится запись в процессе работы сервера, включая файлы данных и логи.
-Файлы предназначенные только для чтения, включая приложения Postgre
Postgre должнен работать без рутовых прав. Обычно используется "псевдопользователь", часто с именем postgres, который является владельцем (owner) файлов данных и не имеет других прав доступа.
Создаем пользователя для Postgre:
>adduser --home /home/postgres postgres
Создаем директорию для баз данных с правами рута и меняем владельца на postgres
> mkdir /usr/local/pgsql/data
> chown postgres /usr/local/pgsql/data
Добавляем /usr/local/pgsql/bin в переменную среды PATH, для того чтобы запускать утилиту для управления postgre - psql не используюя полный путь. Это можно сделать отредактировав /etc/login.defs В этом файле можно редактировать PATH для суперюзеров и обычных пользователей. Нам нужно добавить наш путь в строчку ENV_PATH.
Инициализируем базу данных. Эта команда создаст все файлы, необходимые postmaster для работы:
>su postgres
>initdb -D /usr/local/pgsql/data
Запускаем postmaster:
>postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
для того, чтобы сервер принимал TCP соединения, следует использовать опцию -i и прописать разрешения в файле pg_hba.conf (по умолчанию в директории /usr/local/pgsql/data). Опции >logfile 2>&1 & перенаправляют вывод и ошибки в файл logfile. Их можно поменять в соответствии с предпочтениями.
Транзакция - логическая часть задачи, которая не должна делиться, т.е. набор логических изменений, которые должны либо все вместе выполниться, либо все вместе не выполниться.
Пример: перевод средств с одного банковского счета на другой. Операция должна быть проведена так, чтобы средства были одновременно сняты с одного счета и зачислены на другой, без промежуточных состояний, когда, например, средства присутствуют или отсутствуют на обоих счетах одновременно.
В postgre эти изменения проводятся в 4 этапа:
-BEGIN начало транзакции
-SAVEPOINT дает сигнал серверу сохранить текущее состояние транзакции
-COMMIT дает сигнал о том, что все элементы транзакции завершены, могут быть сохранены на постоянной основе и доступны для других (конкурентных и последующих) транзакций.
-ROLLBACK откат измеений, для пользователей база должна выглядеть так, как будто никакие изменения не вносились.
Правила ACID:
-Atomic. Транзакция, даже если это группа отдельных действий, должна производиться как одно логическое целое.
-Consistent. В конце транзакции база данных должна быть в непротиворечивом состоянии.
-Isolated. Каждый транзакция, неважно как много одновременных транзакций производится, должна быть изолирована от других.
-Durable. Если транзакция завершена, она должна оставаться завершенной, даже если работа базы данных неожиданно прекращена, например по причине потери компьютером питания. Устойчивость достигается за счет ведения журнала транзакций, в котором отражаются все текущие и завершенные транзакции. Если работа сервера нарушается, состояние базы восстанавливается по журналу. Транзакции, не заврешенные на момент нарушения работы компьютера (т.е. не помеченные в журнале как завершенные) после восстановления базы в ней отражены не будут.
Postgre сначала записывает транзакцию в журнал и только потом в базу. Этот процесс называется Write Ahead Logging (WAL).
Следует стремиться к небольшому размеру транзакций, т.к. транзакции большого размера снижают производительность и возможность доступа к данным для пользователей.
Следует избегать запроса данных у пользователя во время транзакции,т.к. транзакция не позволяет другим пользователям получить доступ к дате пока не сделан COMMIT или ROLLBACK. Нужно получать все данные и только потом запускать транзакцию.
В многопользовательской среде для того чтобы транзакции соответствовали правилам ACID, их следует изолировать. ANSI SQL определяет изоляцию в терминах нежелательных феноменов (usdesirable phenomena), которые могут иметь место при многопользовательском доступек к базе. К таким феномена относяся:
-Dirty Reads - транзакция считывает данные, измененные другой транзакцией, не завршившей свою работу (COMMIT)
-Unrepeatable Reads - транзакция может видеть изменения, внесенные другими транзакциями
-Phantom Reads - в процессе обновления транзакцией таблицы в ней появляется новая строка, которая должна быть обновлена, но не обновляется (очень редки случай. почти не встречается)
-Lost update - в базу записывается одновременно 2 изменения и первое из них теряется.
Уровни изоляции:
-Read Uncommited. Возможны: Dirty Reads Unrepeatable Reads hantom Reads
-Read Commited. Возможны: Unrepeatable Reads Phantom Reads
-Repeatable Read. Возможны: Phantom Reads
-Serializable
В Postgre представлены уровни изоляции Read Commited и Serializable. По умолчанию используется Read Commited. Уровеь может быть изменени командой SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }. Не рекомендуется менять уровень изоляции, т.к. чем он выше, тем ниже поизводительность базы.
Транзакции могут быть явными (explicit)(транзакция не будет завершена до тех пор, пока пользователь явно не введет командру COMMIT или ROLLBACK) и неявными (implicit)(каждое выражение SQL рассматривается как отдельная транзакция и выполняется автоматически). По умолчанию в postgre используются неявняе транзакции. Чтобы выполнить явную транзакцию следует ввести команду BEGIN и транзакция не будет совершена, пока не введена команда COMMIT или ROLLBACK.
Блокировка (lock) может быть двух типов: разделяемая (shared) - пользователи могут читать, но не могут обновлять данные и эксклюзивная (exclusive) - пользователи не могут ни обновлять, ни читать данные.
Если две транзакции пытаются одновременно обновить одни и те же данные, возможно образование deadlock'а, когда обе сесси будут заблокированы, каждая ожидает чтобы другая сняла блокировку.
Postgre отслеживает такие ситуации, и, в случае их возникновения, принудительно завершает одну из транзакций.
Приложение может также заблокировать данные не полагаясь на СУБД.
Структура установки:
1. bin
-postgres - back-end сервер баз данных
-postmaster - database listner process
-initdb - утилита для инициализации БД
-pg_ctl - остановка, запуск, перезапуск сервера
-createuser - утилита для создания пользователя БД
-dropuser - удаление пользователя БД
-createdb - создание БД
-dropdb - удаление БД
-pg_dump - резервное копирование БД
-pg_dumpall - резервное копирование всех баз для данной установки
-pg_restore - восстновление БД из резервной копии
-vacuumdb - оптимизация БД
-ipcclean - удаление разделяемых сегментов памяти после падения (только линукс)
-pg_config - отчет о конфигурации Postgre
-createlang - добавление поддержки языковых расширений
-droplang - удаление поддержки языковых расширений
-ecpg - встроенный компилятор SQL
2. data содержит поддиректории с файлами данных, а также внутренний лог postgre. Также в этой директории расположены следующие конфигурационные файлы:
-pg_hba.conf - настройка аутентификации клиентов (host based authentication). Аутентификация по расположению (локальный пользователь или удаленный хост), базе к которой он пытается получить доступ, имени пользователя, ip адресу. по умолчанию доступ предоставляется только локальным пользователям.
pg_ident.conf - сопоставление внешних имен пользователей с именами пользователей БД при авторизации через ident-сервер. не считается надежным методом.
PG_VERSION - соеджит версию установки
postgresql.conf - основной файл конфигурации для Postgre
-postmaster.opts - опции командрой строки по умолчанию для postmaster
-postmaster.pid - содержит PID процесса postmaster и путь к основной директории с данными (по умолчанию /usr/local/pgsql)
3. doc - документация
4. lib - заголовки и библиотеки ,необходимые для создания приложений.
5. man - мануалы
6. share - образцы конфигурационных файлов
Инициализация БД.
-Создать пользователя (postgres)
-Создать директорию для хранения файлов баз данных (data)
-Убедиться что пользователь postgres является владельцем этой директории
-Запустить initdb от имени postgres
По умолчанию postgre использует базы хранящиеся в директории, на которую указывает перменная среды $PGDATA
Запуск/остановка/перезапуск сервера: pg_ctl
Узнать работает ли Postmaster, его PID: pg_ctl status
Управление postgre:
-Команды SQL
-Графические утилиты (например pgadmin)
-Консольные команды
Создать пользователя: CREATE USER, либо утилита createuser
Изменение учетной записи пользователя: ALTER USER
Просмотр списка пользователей: pg_user
Удалить пользователя: DROP USER, либо утилита dropuser
Пространство таблиц (tablespace) именованный объект PostgreSQL, соответствующее физическому расположению в ОС.
Концепция пространства таблиц создана для контроля расположения таблиц с данными postgre располагаются в файловой системе для улучшения производительности за счет распределения нагрузки по физическим дискам.
Создание:
-Создаем директорию
-Меняем владельца на пользователя БД (postgres)
-CREATE TABLESPACE name OWNER name LOCATION directory
-Изменить: ALTER TABLESPACE
-Удалить: DROP TABLESPACE
Создание БД: createdb
Удаление БД: dropdb
Схема БД (Schema) является логическим контейнером, позволяющий группировать таблицы и управлять доступом пользователей к таблицам.
Мониторинг производительности: процессы postgres и потребление ресурсов: ps -ef, top
Текущие процессы и пользователи: template1=# SELECT * FROM pg_stat_activity;
Блокировки: template1=# SELECT * FROM pg_locks;
Оптимизация базы: VACUUM (задействовать неиспользуемые строки и обновить статистику оптимизатора)
Для ускорения поиска по таблице создаются индексы (для первичных ключей создаются по умолчанию). Индексы ускоряют поиск, но замедляют обновление и вставку данных. Следовательно, нужно тщательно продумывать, что индексировать (рекомендуется: для таблиц с большим числом строк, которые часто обновляются, столбцы не являющиеся ключами, но могут использоваться в сложных соединениях, столбцы, по которым будет проводится поиск), однако общих правил не существует и в некоторых случаях требуется экспериментировать.
Источник: NEIL MATTHEW AND RICHARD STONES - Beginning Databases with PostgreSQL From Novice to Professional, Second Edition ISBN (pbk): 1-59059-478-9
Кортеж - упорядоченная группа компонентов или атрибутов, каждый из которых имеет определенный тип.
Все кортежи дожны иметь одинаковое количество типов компонентов.
В таблице не должно быть идентичных кортежей.
Каждый атрибут должен быть атомарным, т.е. не являться другой записью или или списком атрибутов.
Атрибут опеределяющий отдельную запись в таблице называется первичным ключом.
SQL (обычно произносится как "sequel") - язык запросв, разработанный IBM. Т.к. оригинальный SQL не включает себя ряд команд, необходимых для администрирования баз данный, появляются вариации SQL, реализованные разными разработчиками (Oracle, MS и тд)
Типы команд SQL
-Data manipulation language (DML) - команды для ввода, удаления, обновления и выборки данных из базы
-Data definition language (DDL) - команды для создания таблиц, определения взаимосвязей.
-Data control Language (DCL) - команды для контроля разрешений и определения прав доступа.
Система управления базой данных (DBMS) это комплекс программ, позовляющих создавать базы данных и приложений использующих такие базы. Функционал DBMS:
-создание баз данных
-запросы и обновление даннх
-многозадачность: возможность для нескольких пользователей/приложений одновременно читать данные, либо по очереди записывать
-хронология изменений. DBMS отслеживает все изменения в базе и сохраняет их виде журнал, с помощью которого база данных может быть восттановлена в случае отказа системы, например, непредвиденного отключения.
-обеспечение безопасности. предоставление доступа только авторизованным пользователям. разграничение прав.
-поддержание целостности (критерии перечислены выше)
Postgre - одна из DMBS. Может быть запущена любой UNIX-платформе, включая юниксоподобные системы, такие как MacOS. Может быть также запущена на Win Server 2003.
Приложения обращаются к главному процессу сервера баз данных, который создает новый процесс для обслуживания каждого запроса на доступ к базе данных.
Клиентские программы подключаются к серверу с использованием протокола, разработанного специально для Postgre, но они также могут использовать стандартный интерфейс, ODBC (Open Database Connectivity) или JDBC. С помощью ODBC к серверу Postgre могут подключаться многие приложение включая MS Access и Excel.
NULL означает, что значение неизвестно в данный момент (например дата отправки товара, на момент когда он еще не отправлен), или не подходит для данной строки (например поле "цвет очков" для людей, которые не носят очки). Столбцам можно запретить принимать NULL в качестве значения поля.
Главное приложение Postgre (postmaster) содержит серверный код, который обслуживает запросы на доступ к данным от клиентов.
В директории data хранятся файлы, нужные для базы данных. Она хранит не только таблицы и записи, но также системные параметры. Установка по умолчанию располагается в /usr/local/pgsql и содержит следующие компоненты:
-bin приложения и утилиты, такие как pg_ctl и postmaster
-data - база данных, инициализируемая initdb
-doc - документация в формате HTML
-include - заголовки для использования при разработке приложений
-lib - библилотеки для использования при разработке приложений
-man - страницы мануалов для инструментов Postgre
-share - образцы конфигурационных файлов
Установка в одну директорию не всегда идеальный вариант, т.к. файлы приложения и изменяемые данные хранятся в одом месте.
Файлы, используемые Postgre можно разделить на 2 основные категории:
-Файлы, в которые производится запись в процессе работы сервера, включая файлы данных и логи.
-Файлы предназначенные только для чтения, включая приложения Postgre
Postgre должнен работать без рутовых прав. Обычно используется "псевдопользователь", часто с именем postgres, который является владельцем (owner) файлов данных и не имеет других прав доступа.
Создаем пользователя для Postgre:
>adduser --home /home/postgres postgres
Создаем директорию для баз данных с правами рута и меняем владельца на postgres
> mkdir /usr/local/pgsql/data
> chown postgres /usr/local/pgsql/data
Добавляем /usr/local/pgsql/bin в переменную среды PATH, для того чтобы запускать утилиту для управления postgre - psql не используюя полный путь. Это можно сделать отредактировав /etc/login.defs В этом файле можно редактировать PATH для суперюзеров и обычных пользователей. Нам нужно добавить наш путь в строчку ENV_PATH.
Инициализируем базу данных. Эта команда создаст все файлы, необходимые postmaster для работы:
>su postgres
>initdb -D /usr/local/pgsql/data
Запускаем postmaster:
>postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
для того, чтобы сервер принимал TCP соединения, следует использовать опцию -i и прописать разрешения в файле pg_hba.conf (по умолчанию в директории /usr/local/pgsql/data). Опции >logfile 2>&1 & перенаправляют вывод и ошибки в файл logfile. Их можно поменять в соответствии с предпочтениями.
Транзакция - логическая часть задачи, которая не должна делиться, т.е. набор логических изменений, которые должны либо все вместе выполниться, либо все вместе не выполниться.
Пример: перевод средств с одного банковского счета на другой. Операция должна быть проведена так, чтобы средства были одновременно сняты с одного счета и зачислены на другой, без промежуточных состояний, когда, например, средства присутствуют или отсутствуют на обоих счетах одновременно.
В postgre эти изменения проводятся в 4 этапа:
-BEGIN начало транзакции
-SAVEPOINT дает сигнал серверу сохранить текущее состояние транзакции
-COMMIT дает сигнал о том, что все элементы транзакции завершены, могут быть сохранены на постоянной основе и доступны для других (конкурентных и последующих) транзакций.
-ROLLBACK откат измеений, для пользователей база должна выглядеть так, как будто никакие изменения не вносились.
Правила ACID:
-Atomic. Транзакция, даже если это группа отдельных действий, должна производиться как одно логическое целое.
-Consistent. В конце транзакции база данных должна быть в непротиворечивом состоянии.
-Isolated. Каждый транзакция, неважно как много одновременных транзакций производится, должна быть изолирована от других.
-Durable. Если транзакция завершена, она должна оставаться завершенной, даже если работа базы данных неожиданно прекращена, например по причине потери компьютером питания. Устойчивость достигается за счет ведения журнала транзакций, в котором отражаются все текущие и завершенные транзакции. Если работа сервера нарушается, состояние базы восстанавливается по журналу. Транзакции, не заврешенные на момент нарушения работы компьютера (т.е. не помеченные в журнале как завершенные) после восстановления базы в ней отражены не будут.
Postgre сначала записывает транзакцию в журнал и только потом в базу. Этот процесс называется Write Ahead Logging (WAL).
Следует стремиться к небольшому размеру транзакций, т.к. транзакции большого размера снижают производительность и возможность доступа к данным для пользователей.
Следует избегать запроса данных у пользователя во время транзакции,т.к. транзакция не позволяет другим пользователям получить доступ к дате пока не сделан COMMIT или ROLLBACK. Нужно получать все данные и только потом запускать транзакцию.
В многопользовательской среде для того чтобы транзакции соответствовали правилам ACID, их следует изолировать. ANSI SQL определяет изоляцию в терминах нежелательных феноменов (usdesirable phenomena), которые могут иметь место при многопользовательском доступек к базе. К таким феномена относяся:
-Dirty Reads - транзакция считывает данные, измененные другой транзакцией, не завршившей свою работу (COMMIT)
-Unrepeatable Reads - транзакция может видеть изменения, внесенные другими транзакциями
-Phantom Reads - в процессе обновления транзакцией таблицы в ней появляется новая строка, которая должна быть обновлена, но не обновляется (очень редки случай. почти не встречается)
-Lost update - в базу записывается одновременно 2 изменения и первое из них теряется.
Уровни изоляции:
-Read Uncommited. Возможны: Dirty Reads Unrepeatable Reads hantom Reads
-Read Commited. Возможны: Unrepeatable Reads Phantom Reads
-Repeatable Read. Возможны: Phantom Reads
-Serializable
В Postgre представлены уровни изоляции Read Commited и Serializable. По умолчанию используется Read Commited. Уровеь может быть изменени командой SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }. Не рекомендуется менять уровень изоляции, т.к. чем он выше, тем ниже поизводительность базы.
Транзакции могут быть явными (explicit)(транзакция не будет завершена до тех пор, пока пользователь явно не введет командру COMMIT или ROLLBACK) и неявными (implicit)(каждое выражение SQL рассматривается как отдельная транзакция и выполняется автоматически). По умолчанию в postgre используются неявняе транзакции. Чтобы выполнить явную транзакцию следует ввести команду BEGIN и транзакция не будет совершена, пока не введена команда COMMIT или ROLLBACK.
Блокировка (lock) может быть двух типов: разделяемая (shared) - пользователи могут читать, но не могут обновлять данные и эксклюзивная (exclusive) - пользователи не могут ни обновлять, ни читать данные.
Если две транзакции пытаются одновременно обновить одни и те же данные, возможно образование deadlock'а, когда обе сесси будут заблокированы, каждая ожидает чтобы другая сняла блокировку.
Postgre отслеживает такие ситуации, и, в случае их возникновения, принудительно завершает одну из транзакций.
Приложение может также заблокировать данные не полагаясь на СУБД.
Структура установки:
1. bin
-postgres - back-end сервер баз данных
-postmaster - database listner process
-initdb - утилита для инициализации БД
-pg_ctl - остановка, запуск, перезапуск сервера
-createuser - утилита для создания пользователя БД
-dropuser - удаление пользователя БД
-createdb - создание БД
-dropdb - удаление БД
-pg_dump - резервное копирование БД
-pg_dumpall - резервное копирование всех баз для данной установки
-pg_restore - восстновление БД из резервной копии
-vacuumdb - оптимизация БД
-ipcclean - удаление разделяемых сегментов памяти после падения (только линукс)
-pg_config - отчет о конфигурации Postgre
-createlang - добавление поддержки языковых расширений
-droplang - удаление поддержки языковых расширений
-ecpg - встроенный компилятор SQL
2. data содержит поддиректории с файлами данных, а также внутренний лог postgre. Также в этой директории расположены следующие конфигурационные файлы:
-pg_hba.conf - настройка аутентификации клиентов (host based authentication). Аутентификация по расположению (локальный пользователь или удаленный хост), базе к которой он пытается получить доступ, имени пользователя, ip адресу. по умолчанию доступ предоставляется только локальным пользователям.
pg_ident.conf - сопоставление внешних имен пользователей с именами пользователей БД при авторизации через ident-сервер. не считается надежным методом.
PG_VERSION - соеджит версию установки
postgresql.conf - основной файл конфигурации для Postgre
-postmaster.opts - опции командрой строки по умолчанию для postmaster
-postmaster.pid - содержит PID процесса postmaster и путь к основной директории с данными (по умолчанию /usr/local/pgsql)
3. doc - документация
4. lib - заголовки и библиотеки ,необходимые для создания приложений.
5. man - мануалы
6. share - образцы конфигурационных файлов
Инициализация БД.
-Создать пользователя (postgres)
-Создать директорию для хранения файлов баз данных (data)
-Убедиться что пользователь postgres является владельцем этой директории
-Запустить initdb от имени postgres
По умолчанию postgre использует базы хранящиеся в директории, на которую указывает перменная среды $PGDATA
Запуск/остановка/перезапуск сервера: pg_ctl
Узнать работает ли Postmaster, его PID: pg_ctl status
Управление postgre:
-Команды SQL
-Графические утилиты (например pgadmin)
-Консольные команды
Создать пользователя: CREATE USER, либо утилита createuser
Изменение учетной записи пользователя: ALTER USER
Просмотр списка пользователей: pg_user
Удалить пользователя: DROP USER, либо утилита dropuser
Пространство таблиц (tablespace) именованный объект PostgreSQL, соответствующее физическому расположению в ОС.
Концепция пространства таблиц создана для контроля расположения таблиц с данными postgre располагаются в файловой системе для улучшения производительности за счет распределения нагрузки по физическим дискам.
Создание:
-Создаем директорию
-Меняем владельца на пользователя БД (postgres)
-CREATE TABLESPACE name OWNER name LOCATION directory
-Изменить: ALTER TABLESPACE
-Удалить: DROP TABLESPACE
Создание БД: createdb
Удаление БД: dropdb
Схема БД (Schema) является логическим контейнером, позволяющий группировать таблицы и управлять доступом пользователей к таблицам.
Мониторинг производительности: процессы postgres и потребление ресурсов: ps -ef, top
Текущие процессы и пользователи: template1=# SELECT * FROM pg_stat_activity;
Блокировки: template1=# SELECT * FROM pg_locks;
Оптимизация базы: VACUUM (задействовать неиспользуемые строки и обновить статистику оптимизатора)
Для ускорения поиска по таблице создаются индексы (для первичных ключей создаются по умолчанию). Индексы ускоряют поиск, но замедляют обновление и вставку данных. Следовательно, нужно тщательно продумывать, что индексировать (рекомендуется: для таблиц с большим числом строк, которые часто обновляются, столбцы не являющиеся ключами, но могут использоваться в сложных соединениях, столбцы, по которым будет проводится поиск), однако общих правил не существует и в некоторых случаях требуется экспериментировать.
Источник: NEIL MATTHEW AND RICHARD STONES - Beginning Databases with PostgreSQL From Novice to Professional, Second Edition ISBN (pbk): 1-59059-478-9
Комментариев нет:
Отправить комментарий