F.37. pg_prewarm
ÐодÑÐ»Ñ pg_prewarm пÑедоÑÑавлÑÐµÑ ÑдобнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð·Ð°Ð³ÑÑжаÑÑ Ð´Ð°Ð½Ð½Ñе оÑноÑений в ÐºÐµÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ в ÐºÐµÑ Ð±ÑÑеÑов Postgres Pro.
F.37.1. ФÑнкÑии
pg_prewarm(regclass, mode text default 'buffer', fork text default 'main',
first_block int8 default null,
last_block int8 default null) RETURNS int8ÐеÑвÑй аÑгÑÐ¼ÐµÐ½Ñ Ð·Ð°Ð´Ð°ÑÑ Ð¾ÑноÑение, коÑоÑое бÑÐ´ÐµÑ Â«ÑазогÑеÑо». Ðо вÑоÑом ÑказÑваеÑÑÑ Ð¼ÐµÑод «ÑазогÑева», из опиÑаннÑÑ
ниже; в ÑÑеÑÑем задаÑÑÑÑ Ñелевой Ñлой оÑноÑениÑ, обÑÑно main. Ð ÑеÑвÑÑÑом аÑгÑменÑе можно пеÑедаÑÑ Ð½Ð¾Ð¼ÐµÑ Ð¿ÐµÑвого ÑазогÑеваемого блока (NULL пÑинимаеÑÑÑ ÐºÐ°Ðº Ñиноним нÑлÑ), а в пÑÑом â Ð½Ð¾Ð¼ÐµÑ Ð¿Ð¾Ñледнего блока (NULL ознаÑÐ°ÐµÑ Ð¿Ð¾Ñледний блок оÑноÑениÑ). ÐозвÑаÑÐ°ÐµÑ ÑÑа ÑÑнкÑÐ¸Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑво ÑазогÑеÑÑÑ
блоков.
ÐÑа ÑÑнкÑÐ¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑи Ñежима ÑазогÑева. Ð Ñежиме prefetch вÑдаÑÑÑÑ Ð°ÑинÑ
ÑоннÑе запÑоÑÑ Ð¿ÑедвÑбоÑки даннÑÑ
опеÑаÑионной ÑиÑÑеме, еÑли они поддеÑживаÑÑÑÑ, либо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¾Ñибка. Ð Ñежиме read ÑÑиÑÑваеÑÑÑ Ð·Ð°Ð´Ð°Ð½Ð½Ñй диапазон блоков; в оÑлиÑие Ð¾Ñ prefetch ÑÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÑинÑ
Ñонно и поддеÑживаеÑÑÑ Ð²Ð¾ вÑеÑ
ÐС и лÑбÑми ÑбоÑками, но Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÐµÐµ. Ð Ñежиме buffer запÑоÑеннÑй диапазон блоков ÑÑиÑÑваеÑÑÑ Ð² ÐºÐµÑ Ð±ÑÑеÑов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
.
ÐамеÑÑÑе, ÑÑо Ñ Ð»ÑбÑм из ÑÑиÑ
меÑодов попÑÑка ÑазогÑеÑÑ Ð±Ð¾Ð»ÑÑе блоков, Ñем Ð¼Ð¾Ð¶ÐµÑ ÑмеÑÑиÑÑÑÑ Ð² кеÑе (в кеÑе ÐС в ÑежимаÑ
prefetch и read, либо в кеÑе Postgres Pro в Ñежиме buffer) ÑкоÑее вÑего пÑиведÑÑ Ðº ÑомÑ, ÑÑо блоки Ñ Ð¼ÐµÐ½ÑÑими номеÑами бÑдÑÑ Ð²ÑÑеÑÐ½ÐµÐ½Ñ Ð¸Ð· кеÑа пÑи ÑÑении поÑледÑÑÑиÑ
блоков. ÐÑоме Ñого, ÑазогÑеÑÑе даннÑе никаким ÑпеÑиалÑнÑм обÑазом не заÑиÑаÑÑÑÑ Ð¾Ñ Ð²ÑÑеÑÐ½ÐµÐ½Ð¸Ñ Ð¸Ð· кеÑа, Ñак ÑÑо возможна ÑиÑÑаÑиÑ, когда из-за дÑÑгой акÑивноÑÑи ÑолÑко ÑÑо ÑазогÑеÑÑе блоки бÑдÑÑ Ð²ÑÑеÑÐ½ÐµÐ½Ñ Ð²ÑкоÑе поÑле ÑÑениÑ; Ñ Ð´ÑÑгой ÑÑоÑÐ¾Ð½Ñ Ð¿Ñи Ñаком ÑазогÑеве из кеÑа могÑÑ Ð±ÑÑÑ Ð²ÑÑеÑÐ½ÐµÐ½Ñ Ð´ÑÑгие даннÑе. ÐоÑÑÐ¾Ð¼Ñ ÑазогÑев обÑÑно наиболее полезен пÑи загÑÑзке, когда кеÑи в оÑновном пÑÑÑÑ.
F.37.2. ÐвÑоÑ
РобеÑÑ Ð¥Ð°Ð°Ñ <rhaas@postgresql.org>