powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вопрос к гуру
20 сообщений из 20, страница 1 из 1
вопрос к гуру
    #35167217
Perfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переносится большой проект с MySQL на PostgreSQL.
В проекте есть большая таблица, отслеживающая текущие данные.
Пишут в неё (до 100 раз в секунду) несколько поставщиков данных.
Читают несколько потребителей (эти реже, раз в секунду-две).

Таблица автоматом создаётся при старте системы.
Записей в ней - до 20000.

В MySQL я эту таблицу создавал с атрибутом TYPE=HEAP и все были счастливы.

Как мне сделать подобное в PostgreSQL ?
...
Рейтинг: 0 / 0
вопрос к гуру
    #35167517
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что такое TYPE=HEAP ?

100 записей в секунду это не много, только добавляйте пачками, не стоит делать commit после каждой записи. Лучше использовать промежуточный файл.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35167535
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"100 записей в секунду" - наверное 100 инсертов с разных коннектов, имеется ввиду
...
Рейтинг: 0 / 0
вопрос к гуру
    #35167570
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
www.find-info.ru
`HEAP' tables use hashed indexes and are stored in memory. This makes
them very fast, but if MySQL crashes you will lose all data stored in
them. `HEAP' is very useful for temporary tables!


Очевидно автору поможет только
Код: plaintext
1.
fsync=off
в настройках PostgreSQL, но этот параметр повлияет на ВСЕ таблицы и все базы.
Как указать что-то такое для одной таблицы - не наю.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35167991
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Perfy пишет:

> В MySQL я эту таблицу создавал с атрибутом TYPE=HEAP и все были счастливы.
> Как мне сделать подобное в PostgreSQL ?

Кто не знает, что такое type=HEAP - это таблица в памяти.
Без транзакций.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
вопрос к гуру
    #35168227
Perfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел в пресс-релизе версии 8.3:
Heap-Only Tuples (HOT) accelerate space reuse for most UPDATEs and DELETEs
Но как я понял этот механизм работает для всех таблиц и не совсем то что мне нужно.

Zashibis"100 записей в секунду" - наверное 100 инсертов с разных коннектов, имеется ввиду
Даже не инсертов а апдейтов.
Коннектов 5-6. 100 это в сумме в пике.

А если создать TABLESPACE на рам-диске ?
Кто-нибудь пробовал такие извращения ?
Что будет после выключения питания ?
...
Рейтинг: 0 / 0
вопрос к гуру
    #35168279
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну можно вынести таблицу через tablespace на диск в памяти.
Конечно, когда питание вырубится - все пропадет. Если данные только текущие и устаревают, то можно придумать что-то типа матереализованных-view для такой ситуации - т.е. таблица, например, будет апдейтиться в памяти сразу, а на диске раз в 5 мин.

Хотя 100 insert/update в сек это не проблема учитывая версионную архитектуру посгреса. fsync = off и все в порядке. Разумеется на сервер с ИБП и батарейкой в контроллере.

Если же fsync = off нежелательно совсем, то все зависит от скорости дисков и RAID-массива... хотябы протестируйте - реально ли у Вас все упрется в диски, и тогда может быть понадобятся танцы с бубном.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35168284
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас протестил на одной из таблиц ~ 10 тысяч update в сек :) - Это чистая скорость локального запроса на 4 SCSI в RAID-10.
С клиентскими соединениям будет, конечно, гораздо большее влияние времени создание процесса, выделения памяти, открытия порта и т.д, чем времени выполнения самого запроса. Юзайте пул коннектов, по возможности.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35168317
Perfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex_v13Сейчас протестил на одной из таблиц ~ 10 тысяч update в сек :)
ух :)
...
Рейтинг: 0 / 0
вопрос к гуру
    #35170284
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Perfy пишет:
> Кто-нибудь пробовал такие извращения ?
> Что будет после выключения питания ?

А с MySQL HEAP -таблицами что после выключения питания происходит ?
Разве не то же самое ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
вопрос к гуру
    #35170313
Perfy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
А с MySQL HEAP -таблицами что после выключения питания происходит ?
Разве не то же самое ?

Таблица и данные в ней конечно теряются, но база при этом не рушится.
Беспокоит как раз возможность разрушения базы.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35170329
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eсть внешние ram-диски с батарейками =)
Код: plaintext
1.
----------------------------
 Verba volent, scripta manent 
...
Рейтинг: 0 / 0
вопрос к гуру
    #35170689
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Perfy MasterZiv
А с MySQL HEAP -таблицами что после выключения питания происходит ?
Разве не то же самое ?

Таблица и данные в ней конечно теряются, но база при этом не рушится.
Беспокоит как раз возможность разрушения базы.

Я написал про систему с материализованием view - основная таблица связанная со схемой БД лежит на обычных дисках, но обновляется оно по тайм-айту из рабочей таблице лежащей на рам-диске - тогда потери данных при умирании рам-дииска будут минимальны, а база будет в безопасности.
Хотя и так с базой ничего не случится ничего криминального.

Еще раз говорю - прежде чем танцевать с бубном - попробуйте тесты, настройте сервер, настройте сам постгрес, перейдите на работу через пул коннектов.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35171093
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_v13 пишет:
> Еще раз говорю - прежде чем танцевать с бубном - попробуйте тесты,
> настройте сервер, настройте сам постгрес, перейдите на работу через пул

Человеку вроде бы просто нужна быстрая таблица IN-MEMORY. Есть такие в PGSQL ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
вопрос к гуру
    #35171173
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
alex_v13 пишет:
> Еще раз говорю - прежде чем танцевать с бубном - попробуйте тесты,
> настройте сервер, настройте сам постгрес, перейдите на работу через пул

Человеку вроде бы просто нужна быстрая таблица IN-MEMORY. Есть такие в PGSQL ?
Posted via ActualForum NNTP Server 1.4

Ну если бы были, никто бы не разводил демагогию на 20 постов :)
Чего в Постгресе нет, того нет. Можно, конечно, по разным контрибам и расширениям покопаться, но в продакшн там не с чем соваться.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35173779
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
alex_v13 MasterZiv
alex_v13 пишет:
> Еще раз говорю - прежде чем танцевать с бубном - попробуйте тесты,
> настройте сервер, настройте сам постгрес, перейдите на работу через пул

Человеку вроде бы просто нужна быстрая таблица IN-MEMORY. Есть такие в PGSQL ?
Posted via ActualForum NNTP Server 1.4

Ну если бы были, никто бы не разводил демагогию на 20 постов :)
Чего в Постгресе нет, того нет. Можно, конечно, по разным контрибам и расширениям покопаться, но в продакшн там не с чем соваться.

На любом скриптовом языке в постгресе можно создать глобальный массив и работать с ним. Если нужны еще и сложные выборки, можно подгрузить модуль sqlite и создать базу в памяти, с которой и работать. На тикле все вышеперечисленное работает, на других языках, наверное, тоже.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35179391
йа нифига не гуру!
MBG alex_v13 MasterZiv
alex_v13 пишет:
> Еще раз говорю - прежде чем танцевать с бубном - попробуйте тесты,
> настройте сервер, настройте сам постгрес, перейдите на работу через пул

Человеку вроде бы просто нужна быстрая таблица IN-MEMORY. Есть такие в PGSQL ?
Posted via ActualForum NNTP Server 1.4

Ну если бы были, никто бы не разводил демагогию на 20 постов :)
Чего в Постгресе нет, того нет. Можно, конечно, по разным контрибам и расширениям покопаться, но в продакшн там не с чем соваться.

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

ой! а что, проще никак? мы обходились как-то таблспейсами самого постгреса в рам-диске . оно конечно страшно, но, - когда висит на серве с мега-супа бесперебойниками, там и проблем таких быть не могет(в смысле, не возникало пока)!
>Человеку вроде бы просто нужна быстрая таблица IN-MEMORY. Есть такие в PGSQL?
есть таблспейсы в раме, а дальше вообще-то пофиг))) в смысле, реализовать мона.
но - триггерами... написать триггеры для настоящего спеца(которосму не за оракл, не за м$ платят, а за постгрес) вроде не проблема;)
вот токо со спецами проблема...
...
Рейтинг: 0 / 0
вопрос к гуру
    #35179394
ovax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какова побудительная причина перехода с Мускуля на Постгрес ? Если не секрет...
...
Рейтинг: 0 / 0
вопрос к гуру
    #35179395
ovaxА какова побудительная причина перехода с Мускуля на Постгрес ? Если не секрет...
размер таблиц и структура данных, я так думаю.
...
Рейтинг: 0 / 0
вопрос к гуру
    #35179481
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
мимоходяйщий сисадмин
ой! а что, проще никак? мы обходились как-то таблспейсами самого постгреса в рам-диске . оно конечно страшно, но, - когда висит на серве с мега-супа бесперебойниками, там и проблем таких быть не могет(в смысле, не возникало пока)!

Топикстартер выше сказал, что не хочет различных проблем, могущих возникнуть при проблемах с железом, ФС или самой базой. На неадминистрируемом сервере ваше решение - самоубийство. А массив или эскулайт база в памяти создаются в несколько строк кода, куда уж проще, притом, что это решение гарантированно работает и работает быстро.

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


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