|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
Добрый день. Может кто то объяснить или дать ссылку на доходчивое объяснение параметра effective_cache_size? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 12:22 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
d-e-larin, Помогалка здесь: http://www.postgresql.org/docs/9.2/static/runtime-config-query.html Суть параметра: it is used only for estimation purposes ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 12:45 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
Смысл параметра вроде как начал понимать. А вот может кто пример запроса покажет где будет заметна разница от изменения кол-ва памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 17:11 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
d-e-larinСмысл параметра вроде как начал понимать. А вот может кто пример запроса покажет где будет заметна разница от изменения кол-ва памяти. кстати хороший вопрос я быстро test case придумать не смог... cost на том что я проверял не меняется в диапазоне effective_cache_size от 1MB до 100GB ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 17:23 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
Вот изменяю shared_buffers и скорость выполнения запросов меняется. А при изменении effective_cache_size скорость выполнения запросов остается прежней. Может я не так понимаю смысл данного параметра. В статье https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 17:41 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
Вот изменяю shared_buffers и скорость выполнения запросов меняется. А при изменении effective_cache_size скорость выполнения запросов остается прежней. Может я не так понимаю смысл данного параметра. В статье https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server указывают что нужно выделять 1/2 - 3/4 от свободной памяти. А если нет разницы в производительности то не совсем понятен смысл выделять такой кусок памяти в пустоту. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 17:44 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
d-e-larin, не, вы неверно поняли, этот параметр не занимается выделением памяти. это лишь подсказка планировщику что в системе есть такое кол-во кэш-памяти (типа os pagecache). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 17:59 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
daevy, Причем, насколько я понял, подсказка для первого раза. А затем работает реальная накопленная статистика и фактически доступные ресурсы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2014, 22:23 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
Вот реальнейший кейс: таблица 7 000 000 записей SELECT * FROM "auto_broadcast_messages" WHERE "auto_broadcast_id" = '423' ORDER BY "id" LIMIT 50 id - PK auto_broadcast_id - index В рассылке 423 всего 20 записей Работает только на связке "условие" "auto_broadcast_id" = '423' плюс ORDER BY "id" плюс LIMIT 50 (Если 1ой из трех составляющей не будет, работать так же не будет) Лимит должен быть обязательно больше числа записей в выборке, т.е. лимит 50 - число записей 20 effective_cache_size = 4GB - время выполнения 40 секунд и больше effective_cache_size = 512MB - время выполнения 0.003 секунды (моментально) В первом случае планировщик бегает по PK в котором 7кк записей Во втором случае используется индекс auto_broadcast_id Вывод: есть такое значение при котором планировщик сходит с ума и не понимает, что нужно делать, для нас это > 512MB ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2020, 13:42 |
|
effective_cache_size для чего он нужен и как его определить?
|
|||
---|---|---|---|
#18+
unlike777 Вот реальнейший кейс: таблица 7 000 000 записей SELECT * FROM "auto_broadcast_messages" WHERE "auto_broadcast_id" = '423' ORDER BY "id" LIMIT 50 id - PK auto_broadcast_id - index В рассылке 423 всего 20 записей Работает только на связке "условие" "auto_broadcast_id" = '423' плюс ORDER BY "id" плюс LIMIT 50 (Если 1ой из трех составляющей не будет, работать так же не будет) Лимит должен быть обязательно больше числа записей в выборке, т.е. лимит 50 - число записей 20 90% что у вас не с effective_cache_size проблема а с статистикой по таблице и кривыми планами как итогом (и лечить это через effecitve_cache_size очень странно) покажите что показывает Код: plsql 1.
и что показывает Код: plsql 1.
тогда будет виднее что и как. предсказания: наиболее вероятно в первом запросе база ошибется в большую сторону при оценке количества строк на 1-2 порядка во втором запросе база ошибется в меньшую сторону при оценке количества строк на теже 1-2 порядка. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2020, 16:38 |
|
|
start [/forum/topic.php?fid=53&msg=38641358&tid=1994440]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
164ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 539ms |
0 / 0 |