Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
По моему тут этот вопрос никто глубоко не знает - поэтому и гадают.. Ответ по моему мнению нужно искать заслав вопрос в конфу разработчиков на postgresql.org ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 13:58 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Fabrichenko Viktorа знаете что это значит? а знаем. есть такое специфическое выражение explain в postgreSQL. советую ознакомиться. Оно связано с тем, что имеется в наличии оптимизатор запросов. Так что select where i=1000000 и select where i<1000000 в общем случае принципиально не одно и то же по предпринимаемым действиям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 14:03 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
причем тут explain? и что неужели он есть только в постгресе? ;-) Вы милейший вопервых не учитываете что юзера запросы посылают одни и те же и такого вот авторselect where i=1000000 и select where i<1000000 быть не может (по той причине что запросы практически всегда "зашиты" в софте) да и еще есть "подготовка запросов" она как раз и позволяет пользоваться одинаковыми планами, а не генерить новые. А вот кэш это совсем другое ... -------------------------------- жизнь как пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 14:18 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Цитаты: 2.1.1 Общий буфер сервера: shared_buffers PostgreSQL не читает данные напрямую с диска и не пишет их сразу на диск. Данные загружаются в общий буфер сервера, находящийся в разделяемой па- мяти, серверные процессы читают и пишут блоки в этом буфере, а затем уже изменения сбрасываются на диск. Если процессу нужен доступ к таблице, то он сначала ищет нужные блоки в общем буфере. Если блоки присутствуют, то он может продолжать работу, если нет делается системный вызов для их загрузки. Загружаться блоки могут как из файлового кэша ОС, так и с диска, и эта операция может оказаться весьма _дорогойї. Если объ_м буфера недостаточен для хранения часто используемых рабочих данных, то они будут постоянно писаться и читаться из кэша ОС или с диска, что крайне отрицательно скажется на производительности. Объ_м зада_тся параметром shared_buffers в файле postgresql.conf. Единица измерения параметра блоки величиной 8 кБ. По умолчанию зна- чение параметра составляет 641, что соответствует 512 кБ памяти. Это весьма мало, и для полноценной работы значение параметра следует увеличить. В то же время не следует устанавливать это значение слишком большим: PostgreSQL полагается на то, что операционная система кэширует файлы (см. пункт 2.4.1), и не старается дублировать эту работу. Кроме того, чем больше памяти будет отдано под буфер, тем меньше останется операционной системе и другим приложениям, что может привести к своппингу. В качестве начальных значений можете попробовать следующие: Начните с 4 МБ (512) для рабочей станции Средний объ_м данных и 256-512 МБ доступной памяти: 16-32 МБ (2048- 4096) Большой объ_м данных и 1-4 ГБ доступной памяти: 64-256 МБ (8192- 32768) Для тонкой настройки параметра установите для него большое значение и поте- стируйте базу при обычной нагрузке. Проверяйте использование разделяемой памяти при помощи ipcs или других утилит. Рекомендуемое значение парамет- ра будет примерно в 1,2-2 раза больше, чем максимум использованной памяти. Обратите внимание, что память под буфер выделятся при запуске сервера, и е_ объ_м при работе не изменяется. Учтите также, что настройки ядра операци- онной системы могут не дать вам выделить большой объ_м памяти. В руковод- стве администратора PostgreSQL описано, как можно изменить эти настройки: http://developer.postgresql.org/docs/postgres/kernel-resources.html 2.4 Прочие настройки 2.4.1 Оценка объ_ма кэша ОС: effective_cache_size Этот параметр сообщает PostgreSQL примерный объ_м файлового кэша опе- рационной системы, оптимизатор использует эту оценку для построения плана запроса. Объ_м зада_тся параметром effective_cache_size в postgresql.conf. Единица измерения блоки величиной 8 кБ. По умолчанию значение пара- метра составляет 1000. Пусть в вашем компьютере 1,5 ГБ памяти, параметр shared_buffers уста- новлен в 32 МБ, а параметр effective_cache_size в 800 МБ. Если запросу нужно 700 МБ данных, то PostgreSQL оценит, что все нужные данные уже есть в памяти и выберет более агрессивный план с использованием индексов и merge joins. Но если effective_cache_size будет всего 200 МБ, то оптими- затор вполне может выбрать более эффективный для дисковой системы план, включающий полный просмотр таблицы. В качестве начального значения можете использовать 25-50% доступной5 памяти. 2.4.2 Сбор статистики default_statistics_target зада_т объ_м по умолчанию статистики, собира- емой командой ANALYZE (см. пункт 3.1.2). Увеличение параметра за- ставит эту команду работать дольше, но может позволить оптимизато- ру строить более быстрые планы, используя полученные дополнительные данные. Объ_м статистики для конкретного поля может быть задан ко- мандой ALTER TABLE . . . SET STATISTICS. 5т.е. не занятой операционной системой и приложениями 7 У PostgreSQL также есть специальная подсистема сборщик статистики, которая в реальном времени собирает данные об активности сервера. Эта под- система контролируется следующими параметрами, принимающими значения true/false: stats_start_collector включать ли сбор статистики. По умолчанию вклю- ч_н, отключайте, только если статистика вас совершенно не интересует. stats_reset_on_server_start обнулять ли статистику при перезапуске сер- вера. По умолчанию обнулять. stats_command_string передавать ли сборщику статистики информацию о текущей выполняемой команде и времени начала е_ выполнения. По умолчанию эта возможность отключена. Следует отметить, что эта ин- формация будет доступна только привилегированным пользователям и пользователям, от лица которых запущены команды, так что проблем с безопасностью быть не должно. stats_row_level, stats_block_level собирать ли информацию об активно- сти на уровне записей и блоков соответственно. По умолчанию сбор от- ключ_н. Данные, полученные сборщиком статистики, доступны через специальные си- стемные представления. При установках по умолчанию собирается очень мало информации, рекомендуется включить все возможности: дополнительная на- грузка будет невелика, в то время как полученные данные позволят оптимизи- ровать использование индексов (см. пункт 3.2.2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 14:31 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
жжошь! пеши исчо! ------------------------------ жизнь как пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 14:35 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Резюмирую. Shared Buffer Cache - общий на все процессы. Алгоритмы управления буферным пулом у PostgreSQL, судя по всему, весьма дубовые, с бедными стратегиями вытеснения. Поэтому на свой кеш надежды мало. Отсюда и рекомендации не делать его слишком большим - пусть операционка заботится. Честно говоря не совсем понятно как, с таким подходом, можно обеспечить эффективный ввод/вывод. С другой стороны, эта информация несколько не совпадает тем, что рассказывал Олег Бартунов здесь . Он упоминал, что в PostgreSQL реализован алгоритм LRU-2Q, а это весьма эффективный алгоритм. В комбинации с другими стратегиями полученный результат может быть значительно лучше использования кеша ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 15:45 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
картинка то из доки начала 2003 года, а товарисч Бартунов писал в 2005 так что скорее всего прав он --------------------------------------- жизнь как пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 15:50 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
pavelvp пишет: > Он упоминал, что в PostgreSQL реализован алгоритм LRU-2Q, а это весьма > эффективный алгоритм. Да, такое я видел сегодня в документации 8.1.3, но сейчас не могу найти, где именно. В двух словах там говорилось о том, что вытесняется из кэша не только по принципу свежести, но и с учетом частоты использования. Кажется где-то в Appendixes-Release notes. Но опять таки, про разделение так ничего и не нашел. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 16:22 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Fabrichenko Viktorпричем тут explain? и что неужели он есть только в постгресе? ;-) а я, кстати, не очень в курсе, где еще такое бывает. Сам лично не сталкивался на других платформах. Интересно было бы, если бы кто-нибудь более сведущий постанул сравнительный анализ. Fabrichenko Viktor Вы милейший вопервых не учитываете что юзера запросы посылают одни и те же и такого вот авторselect where i=1000000 и select where i<1000000 быть не может (по той причине что запросы практически всегда "зашиты" в софте) да и еще есть "подготовка запросов" она как раз и позволяет пользоваться одинаковыми планами, а не генерить новые. Зашиты в самом простом случае. В случае, если есть генераторы запросов в софте (пример - аналитический отчет с кучей "крутилок" для пользователя) или хотя-бы параметрические фильтры, количество планов для подготовки может быть не особо маленьким. Да и потом, в постгресе без особого труда можно смастерить view, который использует разные планы выборки в зависимости от пользователя, который из него выбирает. Тут уже вообще интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 17:36 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
2domanix, pavelvp ну здорово, что хоть кому-то оказалось не лень по существу разобраться. респект ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 17:40 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
авторЗашиты в самом простом случае. В случае, если есть генераторы запросов в софте (пример - аналитический отчет с кучей "крутилок" для пользователя) или хотя-бы параметрические фильтры, количество планов для подготовки может быть не особо маленьким. Да и потом, в постгресе без особого труда можно смастерить view, который использует разные планы выборки в зависимости от пользователя, который из него выбирает. Тут уже вообще интересно. в том то и дело что "ЕСЛИ есть" и это "если есть" обычно очень специализированно и количество таких запросов и случаев много меньше чем "самый простой случай" --------------------------- жизнь как пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 19:06 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
dragonlord пишет: >> причем тут explain? и что неужели он есть только в постгресе? ;-) > а я, кстати, не очень в курсе, где еще такое бывает. А где такого НЕ бывает? В разных серверах называться может по разному, но мне еще не попадались такие, где нет возможности получить план запроса. > Зашиты в самом простом случае. Да при чем здесь зашитые запросы? Запросы могут оказаться самыми разными и даже вообще на лету генерируемыми, но при этом обращаться в основном к одним и тем же данным из БД. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 19:24 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун dragonlord пишет: >> причем тут explain? и что неужели он есть только в постгресе? ;-) > а я, кстати, не очень в курсе, где еще такое бывает. А где такого НЕ бывает? Иди к интербасникам, спроси, как у них дела с ЭТИМ ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 22:56 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Fabrichenko Viktor в том то и дело что "ЕСЛИ есть" и это "если есть" обычно очень специализированно и количество таких запросов и случаев много меньше чем "самый простой случай" а как же старый добрый инкрементальный поиск? p.s. imho надо отдельную тему открывать, а то к кэшу обсуждение имеет все меньшее и меньшее отношение ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 23:01 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
dragonlord пишет: >>> а я, кстати, не очень в курсе, где еще такое бывает. >> А где такого НЕ бывает? > Иди к интербасникам, спроси, как у них дела с ЭТИМ ;) А что там с этим такого? И в IB/FB можно получить план запроса. Может менее удобно, чем оператором SQL, но по крайней мере есть функции API isc_dsql_sql_info(), isc_info_sql_get_plan и возможность увидеть план из популярных инструментов, например IBExpert. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 23:17 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун dragonlord пишет: >>> а я, кстати, не очень в курсе, где еще такое бывает. >> А где такого НЕ бывает? > Иди к интербасникам, спроси, как у них дела с ЭТИМ ;) А что там с этим такого? увидеть-то они его и, может и увидят, но влиять на него могут крайне неочевидным способом. всякие "чаво" по оптимизации птички пестрят советами типа "для отключения использования конкретного индекса используйте coalesce()" и прочее. Это не оптимизатор вовсе - оптимизатор сам выбирает, на то он и есть. humble oppinion. Хотя учитывая наличие поддержки все еще, mb, впереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 23:23 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
dragonlord пишет: > увидеть-то они его и, может и увидят, но влиять на него могут крайне > неочевидным способом. всякие "чаво" по оптимизации птички пестрят Вопрос был про наличие аналога explain а не про умность оптимизатора. А вообще изначально вопрос был про кэш - элементарнейший вопрос по архитектуре. В форумах по IB/FB предостаточно людей, прекрасно разбирающихся в используемом сервере, даже если исключить из рассмотрения разработчиков сервера. Да и не только по IB/FB. Здесь же простейший четкий вопрос вызвал кучу "мнений" и споров, в результате которых я смутно понял, что с определенной долей вероятности в PG все-таки есть общий для всех коннектов кэш страниц данных. Причем вероятность эта не 100% Печально. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 23:39 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун Печально. ну отчего же ;) господа domanix и pavelvp вполне исчерпывающе ответили на твой вопрос. лучше, вполне вероятно, смог бы кто-то типа tom lane. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2006, 23:55 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
да вот такие мы здась все лохи собрались ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2006, 01:12 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
тут картинка для ясности как организовано авторThe default POSTGRESQL configuration allocates 64 shared buffers. Each buffer is 8 kilobytes. Increasing the number of buffers makes it more likely backends will find the information they need in the cache, thus avoiding an expensive operating system request. The change can be made with a postmaster command-line flag or by changing the value of shared_buffers in postgresql.conf. Bruce Momjian ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2006, 18:47 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
landy "баянист" Вы хоть бы читали что пишут люди ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2006, 19:58 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
авторВопрос по архитектуре PG, в частности PG 8.1.3 Win. Имеют ли все коннекты к базе один общий кэш, или же каждому отдельно выделяется память под кэш? Каждый коннект - это отдельный бакенд(поправьте если я не прав) Имеется общий кэш на все бакенды, а они в свою очередь авторBackends that need to access tables first look for needed blocks in this cache Не вижу причин почему архетектура постгрес должна меняться под вин ну и кто "баянист"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2006, 11:29 |
|
||
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#18+
дружище эту доку уже приводили поэтому ты "баянист" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2006, 12:15 |
|
||
|
|

start [/forum/topic.php?all=1&fid=53&tid=2006592]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
93ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 465ms |

| 0 / 0 |
