Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Разделение кэша между коннектами
|
|||
|---|---|---|---|
|
#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?fid=53&msg=33581279&tid=2006592]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 266ms |
| total: | 460ms |

| 0 / 0 |
