Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Вопрос по архитектуре PG, в частности PG 8.1.3 Win. Имеют ли все коннекты к базе один общий кэш, или же каждому отдельно выделяется память под кэш? В документации не нашел ответа на этот вопрос, хотя, конечно, читал по диагонали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 15:00 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун Имеют ли все коннекты к базе один общий кэш, или же каждому отдельно выделяется память под кэш? мое мнение - кэш раздельный (если он общий - я не вижу, где он при помощи стандартных средств исследований процессов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 17:12 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
dragonlord пишет: > мое мнение - кэш раздельный Т.е. достоверной информации кроме мнений об этом нет? Что ж, спасибо и на этом. > (если он общий - я не вижу, где он при помощи стандартных средств > исследований процессов). Значит на каждый коннект создается отдельный процесс, а не поток в рамках одного серверного процесса? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 17:18 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун Т.е. достоверной информации кроме мнений об этом нет? Что ж, спасибо и на этом. почему же ;) можно порыть исходные тексты, если очень принципиально. Александр Гoлдун Значит на каждый коннект создается отдельный процесс, а не поток в рамках одного серверного процесса? совершенно верно. отдельный процесс postgres.exe с собственным pid и всеми делами. насчет потоков какие-то эксперименты проводятся в сообществе, но не очень понятно, в чем смысл - вряд-ли это принесет повышение эффективности для сервера в целом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 17:21 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
dragonlord пишет: > совершенно верно. отдельный процесс postgres.exe с собственным pid и > всеми делами. насчет потоков какие-то эксперименты проводятся в > сообществе, но не очень понятно, в чем смысл - вряд-ли это принесет > повышение эффективности для сервера в целом. Э.... Как бы попонятнее объяснить преимущества общего кэша? А разве их нужно объяснять? Но если действительно нужно, то могу на пальцах, на примерах и т.п. Я почему-то думал что кэш там общий. В общем, это одновременно и удивило, и разочаровало, и охладило исследовательский пыл. Просто давно посматривал в сторону PG как на потенциальную альтернативу другим СУБД Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 17:58 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун Э.... Как бы попонятнее объяснить преимущества общего кэша? А разве их нужно объяснять? Но если действительно нужно, то могу на пальцах, на примерах и т.п. Я почему-то думал что кэш там общий. В общем, это одновременно и удивило, и разочаровало, и охладило исследовательский пыл. Просто давно посматривал в сторону PG как на потенциальную альтернативу другим СУБД "попонятнее" не требуется, тем более что это спорное мнение ;) общий кэш данных бд организуется при помощи тривиального дискового кэша, которому все равно, кто и что читает/пишет. А вот когда у вас 16 камней в сервере и вы не заставляете их конкурентно обращаться к одному и тому же участку памяти - это несколько быстрее, чем если все-таки заставляете ;) помимо прочего - это мое личное мнение про кэш процессов. не претендует на абсолютную истину ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 18:24 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Помоему раздельные процессы довольно неплохой выход. Особенно на могопроцессорных системах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 18:27 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Gold FishПомоему раздельные процессы довольно неплохой выход. Особенно на могопроцессорных системах. 100% согласен. тем более, что каждый процесс postgreSQL (8.1.x) состоит не из 1 потока в типичной ситуации, что позволяет, допустим, просто управлять приоритетами. Это только первое самое очевидное преимущество. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 18:40 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
dragonlord пишет: > "попонятнее" не требуется, тем более что это спорное мнение ;) В чем спорное? Преимущества общего кэша очень четко проявляются в меньших требованиях к памяти и уменьшении дискового I/O при многопользовательской работе, когда большинство сессий используют в основном одни и те же данные. А если основной объем требуемых данных еще и в память помещается, то вообще операции чтения с диска стремятся к нулю. А в чем преимущества раздельного кэша? > общий кэш > данных бд организуется при помощи тривиального дискового кэша, которому > все равно, кто и что читает/пишет. Дисковому кэшу неведомы особенности хранимой в файле информации, так что вряд ли такое кэширование сравнимо по эффективности с тем, что можно получить кэшированием данных средствами сервера. > А вот когда у вас 16 камней в сервере > и вы не заставляете их конкурентно обращаться к одному и тому же участку > памяти - это несколько быстрее, чем если все-таки заставляете ;) Быстрее чем что? Чем обращение к диску? Ладно, спор достаточно бестолковый получается. Спасибо за ликбез по устройству PG. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 18:56 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Shared Memory. Даже параметр в postgresql.conf есть: shared_buffers. Это память общая для всех процессов - общий кеш. Правда ее не всегда стоит делать большой. Чаще полезнее сделать больше work_mem - именно эта память используется для сортировок и т.д. и она у каждого процесса/коннекта своя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 19:00 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Funny_FalconShared Memory. Даже параметр в postgresql.conf есть: shared_buffers. Это память общая для всех процессов - общий кеш. Правда ее не всегда стоит делать большой. Чаще полезнее сделать больше work_mem - именно эта память используется для сортировок и т.д. и она у каждого процесса/коннекта своя. а он какому процессу должен принадлежать? postmaster? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 19:17 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Так значит буферный пул всё же общий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 19:18 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
> Просто давно посматривал в сторону PG Давно - это с момента прочтения новости о релизе 1С под Линакс? ;) Страшно стало? ;) Правильно, Александр, бойтесь. Не место форточкам на сервере (с). ;))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 20:48 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
guest_20040621 пишет: > > Просто давно посматривал в сторону PG > > Давно - это с момента прочтения новости о релизе 1С под Линакс? ;) Какое это имеет отношение к заданному вопросу, с ответом на который, кстати, местные обитатели так и не пришли к консенсусу? Тем не менее отвечу. Интерес появился достаточно давно еще во времена версий 7.х, когда я еще держал некоторые серверы под linux. C момента появления 8.0 под win интерес немного усилился. > Страшно стало? ;) Правильно, Александр, бойтесь. Нет, не стало. Чего мне Вас, пустозво... ой, то есть я хотел сказать флеймеров бояться? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 21:03 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
> Чего мне Вас, пустозво... ой, то есть я хотел сказать флеймеров бояться? ;))) Ну-ну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 22:27 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Да -буфер общий. Из него выделяются страницы каждому форкнутому процессу минимум 8 кб на процесс. Все процессы(бакэнды) работают с этим общим пулом механизмами shared memory ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2006, 22:54 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Просто давно посматривал в сторону PG Давно - это с момента прочтения новости о релизе 1С под Линакс? ;) Страшно стало? ;) Правильно, Александр, бойтесь. Много баяцца - на mssql сидеть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 10:14 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
landy пишет: > Да -буфер общий. Из него выделяются страницы каждому форкнутому процессу > минимум 8 кб на процесс. Каждому отдельно выделяются? > Все процессы(бакэнды) работают с этим общим пулом механизмами shared memory Ладно, переформулирую вопрос на пальцах, ибо чтение в доке раздела 17.4.1. Memory, где упоминается shared_buffers, не прояснило ситуацию. Итак, запустили сервер. Подключился user1. Отправил запрос SELECT * FROM table_name и зафетчил себе результат. Сервер считал данные с диска и выдал. Подключился user2. Отправил тот же самый запрос. Вопрос: Откуда сервер взял данные для выдачи user2? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 12:04 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун Ладно, переформулирую вопрос на пальцах, ибо чтение в доке раздела 17.4.1. Memory, где упоминается shared_buffers, не прояснило ситуацию. Итак, запустили сервер. Подключился user1. Отправил запрос SELECT * FROM table_name и зафетчил себе результат. Сервер считал данные с диска и выдал. Подключился user2. Отправил тот же самый запрос. Вопрос: Откуда сервер взял данные для выдачи user2? упомянутые выше shared buffers используются для обеспечения функционирования механизма транзакций и lock tables (см. postgresql.conf). То есть, чем больше вы хотите допустить отдельных подсоединений клиентов к БД, тем выше требования к объему разделяемой памяти. Данные запросов берутся для каждого процесса сепаратно. И это правильно, потому что даже при однотипной работе пользователей с запросами одинаковые сценарии выполнения встречаются далеко не каждый раз. Кроме того, современные windows-системы довольно хитро работают с памятью при наличии более одного полноценного процессорного ядра, так что конкурентное обращение в общий пул становится тормознее чем обращение к разным участкам памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 12:27 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
dragonlord пишет: > Данные запросов берутся для каждого процесса сепаратно. И это > правильно, потому что даже при однотипной работе пользователей с > запросами одинаковые сценарии выполнения встречаются далеко не каждый > раз. Жалко терять время на спор, правильно ли это и объяснять очевидные (причем очевидные далеко не мне одному) вещи. В определенных задачах и условиях такое поведение действительно непринципиально или может быть даже лучше общего кэша. Спасибо за информацию. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 12:50 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
я вот чего прочитал мне кажется что всетаки буффер общий автор 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 ------------------------------------ жизнь как пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 12:51 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
авторИ это правильно, потому что даже при однотипной работе пользователей с запросами одинаковые сценарии выполнения встречаются далеко не каждый раз. есть приложение например сайт или какие нибудь окошки для тетенек бухгалтерш как устроенно приложение? ну наверняка какой нить клиент-сервер. что это значит? это значит что тетеньки (и уж темболее посетители сайта) скорее всего тыкают по одинаковым окошкам (в основной своей массе), а знаете что это значит? да правильно они хотят видеть одни и те же данные! отсюда вывод нефиг лазить на ЖД если у меня эта таблица лежит в памяти. ИМХО конечно ;-) -------------------------------------------- жизнь как пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 13:02 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 13:45 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
мне кажется потому что я не очень силен в пиндосском, но вот эта фраза меня убеждает все больше и больше в том что буфер общий. Цитата из книжки по постгресу ее я написал автор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. следовательно другой коннект к этой базе начнет искать данные сначала в кеше а потом только полезет на диск. ------------------------------------ жизнь как пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 13:50 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33577832&tid=2006592]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 359ms |

| 0 / 0 |
