Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хранение БД в памяти / 10 сообщений из 10, страница 1 из 1
06.12.2005, 11:47
    #33419011
sam21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
Добрый день!

Требуется ускорить работу с одной таблицей БД (небольшой по объему, около 100-150 MB). По ней идет проход с помощью нескольких курсоров. Подскажите, как можно дать указание Postgres, что эту таблицу надо хранить целиком в оперативной памяти (ОП).

Хотелось бы, чтобы при начале работы с этой таблицей, она целиком переписывалась в ОП и хранилась бы там до конца работы. Это, по идее, должно сильно ускорить процесс.

Все это в предположении, что памяти всегда хватает.

Заранее благодарен.
Дмитрий
...
Рейтинг: 0 / 0
06.12.2005, 13:53
    #33419496
wbear
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
не имеет смысла говорить ей это т.к. посгря так вобщем и делает поумалчанию (+ это частично делает OS), повозможносит максимально используя шареную память и храня в ней пайджи таблиц к которым запросы идут...
...
Рейтинг: 0 / 0
06.12.2005, 15:16
    #33419815
Алексей Ключников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
Еще как имеет.
незнаю как насчет курсоров но вакумы реиндексы и все что зависит от дисковой подсистемы..

Использовать надо tablespace
Указываешь таблице где ей лежать и радуешся.
...
Рейтинг: 0 / 0
06.12.2005, 15:37
    #33419908
landy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
Вопрос о том - как закэшировать таблицу, а не куда ее физически положить.
Таблица обновляемая или статическая? Если статическая - сделать скажем так: tablespace разместить в /proc и перегружать туда таблицу перед работой.
Или к примеру так:

select count(*) from table - Тогда она поднимется в кэш, делать это переодически, чтобы БД не выкидывала таблицу назад. Опять же это все зависит от интенсивности работы с БД.

Но это все так - ИМХО
...
Рейтинг: 0 / 0
06.12.2005, 16:30
    #33420124
sam21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
Работа с таблицей проходит пошагово. На текущем шаге таблица является статической и из нее считываются данные с помощью курсоров.

Получается, что надо в начале каждого шага делать этот tablespace, затем считывать данные из нее. На следующем шаге действия повторяются.

Вообще подскажите, что конкретно делает этот tablespace, и как им пользоваться (поконкретнее).

Заранее спасибо.
...
Рейтинг: 0 / 0
06.12.2005, 16:41
    #33420173
Алексей Ключников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
landyВопрос о том - как закэшировать таблицу, а не куда ее физически положить.
Таблица обновляемая или статическая? Если статическая - сделать скажем так: tablespace разместить в /proc и перегружать туда таблицу перед работой.
Или к примеру так:

select count(*) from table - Тогда она поднимется в кэш, делать это переодически, чтобы БД не выкидывала таблицу назад. Опять же это все зависит от интенсивности работы с БД.

Но это все так - ИМХО
Примерно это я и имел в виду..
Подробнее
Делается диск в оперативной памяти
Затем на нем размещается tablespace
подправляется скрипт запуска сервера БД перед запуском из бекапа копировать таблицу на диск в памяти, после остановки сервера копировать все с диска в памяти в бекап.

В результате избавляемся от тормозов дисковой подсистемы.
...
Рейтинг: 0 / 0
06.12.2005, 17:13
    #33420302
sam21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
Насколько я понял ид дискуссии, таким образом (в /proc) следует размещать только статические таблицы.

Возникает вопрос - а почему нельзя размещать и те, которые меняются. Ведь созданный диск (как устройство) на ОП ничем не отличается от других. Или я не прав?

Просто существует опасность пропажи данных, а так все то же самое.
...
Рейтинг: 0 / 0
06.12.2005, 17:17
    #33420318
Алексей Ключников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
В случае с диском в ОП можно размеать там любые таблицы, хоть всю базу, главное чтобы места хватило.

про /proc не знаю что за фича говорить не буду.
про tablespace
http://www.postgresql.org/docs/8.1/interactive/sql-createtablespace.html
...
Рейтинг: 0 / 0
06.12.2005, 17:20
    #33420333
Алексей Ключников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
А про пропажу данных.
Делать чаще pg_dump
Если есть smartups то привязать pg_dump на события приходящие с ups
...
Рейтинг: 0 / 0
06.12.2005, 17:25
    #33420352
sam21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение БД в памяти
Алексей,

Большое спасибо за разъяснения. Буду пробовать. Если появяться вопросы - еще напишу.

Дмитрий
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Хранение БД в памяти / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]