Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Разделение кэша между коннектами / 25 сообщений из 48, страница 1 из 2
02.03.2006, 15:00
    #33577215
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Вопрос по архитектуре PG, в частности PG 8.1.3 Win.
Имеют ли все коннекты к базе один общий кэш, или же каждому отдельно выделяется память под кэш?

В документации не нашел ответа на этот вопрос, хотя, конечно, читал по диагонали
...
Рейтинг: 0 / 0
02.03.2006, 17:12
    #33577807
dragonlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Александр Гoлдун
Имеют ли все коннекты к базе один общий кэш, или же каждому отдельно выделяется память под кэш?


мое мнение - кэш раздельный (если он общий - я не вижу, где он при помощи стандартных средств исследований процессов).
...
Рейтинг: 0 / 0
02.03.2006, 17:18
    #33577832
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
dragonlord пишет:

> мое мнение - кэш раздельный

Т.е. достоверной информации кроме мнений об этом нет? Что ж,
спасибо и на этом.

> (если он общий - я не вижу, где он при помощи стандартных средств
> исследований процессов).

Значит на каждый коннект создается отдельный процесс, а не поток в
рамках одного серверного процесса?

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
02.03.2006, 17:21
    #33577847
dragonlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Александр Гoлдун
Т.е. достоверной информации кроме мнений об этом нет? Что ж,
спасибо и на этом.


почему же ;) можно порыть исходные тексты, если очень принципиально.

Александр Гoлдун
Значит на каждый коннект создается отдельный процесс, а не поток в
рамках одного серверного процесса?


совершенно верно. отдельный процесс postgres.exe с собственным pid и всеми делами. насчет потоков какие-то эксперименты проводятся в сообществе, но не очень понятно, в чем смысл - вряд-ли это принесет повышение эффективности для сервера в целом.
...
Рейтинг: 0 / 0
02.03.2006, 17:58
    #33578004
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
dragonlord пишет:

> совершенно верно. отдельный процесс postgres.exe с собственным pid и
> всеми делами. насчет потоков какие-то эксперименты проводятся в
> сообществе, но не очень понятно, в чем смысл - вряд-ли это принесет
> повышение эффективности для сервера в целом.

Э.... Как бы попонятнее объяснить преимущества общего кэша? А разве их
нужно объяснять? Но если действительно нужно, то могу на пальцах, на
примерах и т.п. Я почему-то думал что кэш там общий.

В общем, это одновременно и удивило, и разочаровало, и охладило
исследовательский пыл. Просто давно посматривал в сторону PG как на
потенциальную альтернативу другим СУБД
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
02.03.2006, 18:24
    #33578095
dragonlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Александр Гoлдун
Э.... Как бы попонятнее объяснить преимущества общего кэша? А разве их
нужно объяснять? Но если действительно нужно, то могу на пальцах, на
примерах и т.п. Я почему-то думал что кэш там общий.

В общем, это одновременно и удивило, и разочаровало, и охладило
исследовательский пыл. Просто давно посматривал в сторону PG как на
потенциальную альтернативу другим СУБД


"попонятнее" не требуется, тем более что это спорное мнение ;) общий кэш данных бд организуется при помощи тривиального дискового кэша, которому все равно, кто и что читает/пишет. А вот когда у вас 16 камней в сервере и вы не заставляете их конкурентно обращаться к одному и тому же участку памяти - это несколько быстрее, чем если все-таки заставляете ;)

помимо прочего - это мое личное мнение про кэш процессов. не претендует на абсолютную истину ;)
...
Рейтинг: 0 / 0
02.03.2006, 18:27
    #33578107
Gold Fish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Помоему раздельные процессы довольно неплохой выход. Особенно на могопроцессорных системах.
...
Рейтинг: 0 / 0
02.03.2006, 18:40
    #33578149
dragonlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Gold FishПомоему раздельные процессы довольно неплохой выход. Особенно на могопроцессорных системах.

100% согласен. тем более, что каждый процесс postgreSQL (8.1.x) состоит не из 1 потока в типичной ситуации, что позволяет, допустим, просто управлять приоритетами. Это только первое самое очевидное преимущество.
...
Рейтинг: 0 / 0
02.03.2006, 18:56
    #33578203
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
dragonlord пишет:

> "попонятнее" не требуется, тем более что это спорное мнение ;)

В чем спорное? Преимущества общего кэша очень четко проявляются в
меньших требованиях к памяти и уменьшении дискового I/O при
многопользовательской работе, когда большинство сессий используют в
основном одни и те же данные. А если основной объем требуемых данных еще
и в память помещается, то вообще операции чтения с диска стремятся к нулю.

А в чем преимущества раздельного кэша?

> общий кэш
> данных бд организуется при помощи тривиального дискового кэша, которому
> все равно, кто и что читает/пишет.

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

> А вот когда у вас 16 камней в сервере
> и вы не заставляете их конкурентно обращаться к одному и тому же участку
> памяти - это несколько быстрее, чем если все-таки заставляете ;)

Быстрее чем что? Чем обращение к диску?

Ладно, спор достаточно бестолковый получается. Спасибо за ликбез по
устройству PG.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
02.03.2006, 19:00
    #33578221
Funny_Falcon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Shared Memory.
Даже параметр в postgresql.conf есть: shared_buffers.
Это память общая для всех процессов - общий кеш.
Правда ее не всегда стоит делать большой. Чаще полезнее сделать больше work_mem - именно эта память используется для сортировок и т.д. и она у каждого процесса/коннекта своя.
...
Рейтинг: 0 / 0
02.03.2006, 19:17
    #33578264
dragonlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Funny_FalconShared Memory.
Даже параметр в postgresql.conf есть: shared_buffers.
Это память общая для всех процессов - общий кеш.
Правда ее не всегда стоит делать большой. Чаще полезнее сделать больше work_mem - именно эта память используется для сортировок и т.д. и она у каждого процесса/коннекта своя.

а он какому процессу должен принадлежать? postmaster?
...
Рейтинг: 0 / 0
02.03.2006, 19:18
    #33578267
pavelvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Так значит буферный пул всё же общий?
...
Рейтинг: 0 / 0
02.03.2006, 20:48
    #33578385
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
> Просто давно посматривал в сторону PG

Давно - это с момента прочтения новости о релизе 1С под Линакс? ;) Страшно стало? ;) Правильно, Александр, бойтесь. Не место форточкам на сервере (с). ;)))
...
Рейтинг: 0 / 0
02.03.2006, 21:03
    #33578393
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
guest_20040621 пишет:
> > Просто давно посматривал в сторону PG
>
> Давно - это с момента прочтения новости о релизе 1С под Линакс? ;)

Какое это имеет отношение к заданному вопросу, с ответом на который,
кстати, местные обитатели так и не пришли к консенсусу?

Тем не менее отвечу. Интерес появился достаточно давно еще во времена
версий 7.х, когда я еще держал некоторые серверы под linux. C момента
появления 8.0 под win интерес немного усилился.

> Страшно стало? ;) Правильно, Александр, бойтесь.

Нет, не стало. Чего мне Вас, пустозво... ой, то есть я хотел сказать
флеймеров бояться?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
02.03.2006, 22:27
    #33578482
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
> Чего мне Вас, пустозво... ой, то есть я хотел сказать флеймеров бояться?

;))) Ну-ну.
...
Рейтинг: 0 / 0
02.03.2006, 22:54
    #33578502
landy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Да -буфер общий. Из него выделяются страницы каждому форкнутому процессу
минимум 8 кб на процесс. Все процессы(бакэнды) работают с этим общим пулом механизмами shared memory
...
Рейтинг: 0 / 0
03.03.2006, 10:14
    #33579002
dragonlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
guest_20040621> Просто давно посматривал в сторону PG

Давно - это с момента прочтения новости о релизе 1С под Линакс? ;) Страшно стало? ;) Правильно, Александр, бойтесь.

Много баяцца - на mssql сидеть :)
...
Рейтинг: 0 / 0
03.03.2006, 12:04
    #33579526
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
landy пишет:
> Да -буфер общий. Из него выделяются страницы каждому форкнутому процессу
> минимум 8 кб на процесс.

Каждому отдельно выделяются?

> Все процессы(бакэнды) работают с этим общим пулом механизмами shared memory

Ладно, переформулирую вопрос на пальцах, ибо чтение в доке раздела
17.4.1. Memory, где упоминается shared_buffers, не прояснило ситуацию.
Итак, запустили сервер. Подключился user1. Отправил запрос
SELECT * FROM table_name и зафетчил себе результат. Сервер считал данные
с диска и выдал.
Подключился user2. Отправил тот же самый запрос. Вопрос: Откуда сервер
взял данные для выдачи user2?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
03.03.2006, 12:27
    #33579621
dragonlord
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Александр Гoлдун
Ладно, переформулирую вопрос на пальцах, ибо чтение в доке раздела
17.4.1. Memory, где упоминается shared_buffers, не прояснило ситуацию.
Итак, запустили сервер. Подключился user1. Отправил запрос
SELECT * FROM table_name и зафетчил себе результат. Сервер считал данные
с диска и выдал.
Подключился user2. Отправил тот же самый запрос. Вопрос: Откуда сервер
взял данные для выдачи user2?


упомянутые выше shared buffers используются для обеспечения функционирования механизма транзакций и lock tables (см. postgresql.conf). То есть, чем больше вы хотите допустить отдельных подсоединений клиентов к БД, тем выше требования к объему разделяемой памяти. Данные запросов берутся для каждого процесса сепаратно. И это правильно, потому что даже при однотипной работе пользователей с запросами одинаковые сценарии выполнения встречаются далеко не каждый раз. Кроме того, современные windows-системы довольно хитро работают с памятью при наличии более одного полноценного процессорного ядра, так что конкурентное обращение в общий пул становится тормознее чем обращение к разным участкам памяти.
...
Рейтинг: 0 / 0
03.03.2006, 12:50
    #33579717
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
dragonlord пишет:

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

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

Спасибо за информацию.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
03.03.2006, 12:51
    #33579723
Fabrichenko Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
я вот чего прочитал мне кажется что всетаки буффер общий

автор Page Caching
Two of the fundamental performance rules in any database system are:

Memory access is fast; disk access is slow.

Memory space is scarce; disk space is abundant.

Accordingly, PostgreSQL tries very hard to minimize disk I/O by keeping frequently used data in memory. When the first server process starts, it creates an in-memory data structure known as the buffer cache. The buffer cache is organized as a collection of 8K pageseach page in the buffer cache corresponds to a page in some page file. The buffer cache is shared between all processes servicing a given database.

When you select a row from a table, PostgreSQL will read the heap block that contains the row into the buffer cache. If there isn't enough free space in the cache, PostgreSQL will move some other block out of the cache. If a block being removed from the cache has been modified, it will be written back out to disk; otherwise. it will simply be discarded. Index blocks are buffered as well.

PostgreSQL databases, Second Edition
By Korry Douglas, Susan Douglas


------------------------------------
жизнь как пестня
...
Рейтинг: 0 / 0
03.03.2006, 13:02
    #33579767
Fabrichenko Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
авторИ это правильно, потому что даже при однотипной работе пользователей с запросами одинаковые сценарии выполнения встречаются далеко не каждый раз.

есть приложение например сайт или какие нибудь окошки для тетенек бухгалтерш

как устроенно приложение? ну наверняка какой нить клиент-сервер. что это значит? это значит что тетеньки (и уж темболее посетители сайта) скорее всего тыкают по одинаковым окошкам (в основной своей массе), а знаете что это значит? да правильно они хотят видеть одни и те же данные! отсюда вывод нефиг лазить на ЖД если у меня эта таблица лежит в памяти.

ИМХО конечно ;-)

--------------------------------------------
жизнь как пестня
...
Рейтинг: 0 / 0
03.03.2006, 13:45
    #33579962
Александр Гoлдун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
Fabrichenko Viktor пишет:

> я вот чего прочитал мне кажется что всетаки буффер общий

Поразительно. У кого-то мнение, кому-то кажется, в документации внятно
не сказано (по крайней мере я не смог найти)

> buffer cache is organized as a collection of 8K pageseach page in the
> buffer cache corresponds to a page in some page file. The buffer cache
> is shared between all processes servicing a given database.

Вроде похоже, но все равно невнятно, как именно этот кэш shared между
разными коннектами. То ли каждому дается отдельный кусок этого кэша,
либо все же коннекты могут обращаться к страницам, сохраненным там ранее
другими процессами.

Еще "мнения" есть? ;)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
03.03.2006, 13:50
    #33579988
Fabrichenko Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
мне кажется потому что я не очень силен в пиндосском, но вот эта фраза меня убеждает все больше и больше в том что буфер общий. Цитата из книжки по постгресу ее я написал

авторThe buffer cache is shared between all processes servicing a given database.

When you select a row from a table, PostgreSQL will read the heap block that contains the row into the buffer cache.

следовательно другой коннект к этой базе начнет искать данные сначала в кеше а потом только полезет на диск.
------------------------------------
жизнь как пестня
...
Рейтинг: 0 / 0
03.03.2006, 13:58
    #33580025
domanix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение кэша между коннектами
По моему тут этот вопрос никто глубоко не знает - поэтому и гадают..
Ответ по моему мнению нужно искать заслав вопрос в конфу разработчиков на postgresql.org
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Разделение кэша между коннектами / 25 сообщений из 48, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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