á¨2015 ááᣠá á áᲠááśááľáŞ á¨á°ááá á "áá° PostgreSQL ááľáŁá áľáłá˛áľá˛ááľ áĽáá ááá áááŁáľ"
á¨áŞáááą á°áŤá˛ á¨áááááľ ááľá°áŁá áŤáĄ- áá ááᣠá ááŹáá á 2015 á¨á°áá áááá á áľá°ááŤáá - ᨠ4 áááłáľ á áá á áááá áĽá áĽá áá á ááá. á áŞáááą ááľáĽ á¨á°ááŤá¨á áľáŞáľ 9.4 á¨á áá á áá á áá°áááᢠáŁáááľ 4 áááłáľ ááľáĽáŁ áĽá áá áŤáá˝áŁ ááťáťáŤáá˝ áĽá áľáłá˛áľá˛ááľá á á°ááá¨á° áááŚá˝ á¨áłáŠáŁá¸á 5 á áłá˛áľ á¨á°ááááľ áĽá á ááłááľ ááśá˝ áá áŤáááŁá¸á áĽá á°ááá ááľ á¨ááá¸á áá¸áᢠáľááááá á ááŁá˘á áĽááłááłáľáľ áĽááá á áŚáłáá˝ ááááľ áááľá¨á áá¨ááŠá˘ áĽááá á áŚáłáá˝ áĽáá°áá á ááťááŠá, á áŁá áĽá áá¸á, áĽá á áá ááááŤáľ, áášá á¨á°áᨠááᣠáááŁá.
ᨠPostgreSQL DBMS áľáá
áá´ ááᣠáĽá áá
áá´ áĽá áááľ áľáááśá˝á áŤáá áá ᣠá¨á°ááá áľáŤá á ááĽáł ᨠDBMS á áááá áá á°á˝áá áŤáłáľáŤáᢠá áá áŤá áľ áá áľá á áŤááľ á á áŤá áľáłá˛áľá˛ááľ áĽá áá¨á áá°á á°áŁá ᣠáá
á ᨠPostgreSQL áá¤áłáááľá áááááá áĽá á ááááá áááťáťá áĽááááá˝á áĽáá˛ááľáą áŤáľá˝áááłáᢠáááᣠáĽá áĽááá
áá¨ááá˝ á á áĽá ááááá ááá áŁá ááአááá§áᢠáá
áá áá¨á ááľá°áááľ áĽá áá°ááá á ááłááľ áá áá á áá ááá áŤááá á°ááŁá ááᣠáĽá á¨ááłáŞáŤáá˝ áĽá áááááŤáá˝ "zoo" á¨áá DBA áĽááłá á ááá á፠ááŤáᣠáá˝ááá˘
áĽáá°áá á á¨ááľá áľá á ááᲠáĽáŁáááᢠá˘á፠áĽáá°á°ááá¨áᣠáľá PostgreSQL áľáłá˛áľá˛ááľ áĽáááŤááá˘
PostgreSQL á¨áĽáá áľáá´ áľáłá˛áľá˛ááľá˘ PostgreSQL áááľ áľáłá˛áľá˛ááľ á ááᢠá¨á°ááŁá áľáłá˛áľá˛ááľáŁ áĽáąá ááĽáŤáŤáᢠáĽá áľá ááἠáľáááľ á¨áá á°ááł á ááá áá¨áᢠá á°áá áľá PostgreSQL áĽáá áľáá´ áľáłá˛áľá˛ááľ áĽáááŤááᣠáá á á ááťá¸áá áĽááľááááľ áĽá áĽáá°ááá áĽááľááťá˝áá áŤáľá˝áááá˘
á¨á°ááŤáŠ á˝ááŽá˝á ááááłáľ áľáłá˛áľá˛ááľá á áĽááľ áĽáá´áľ áá áá áĽááłááŚáľ áĽáááááłáá á˘
á áŞáááą ááľáĽ áá á áááá? á áŞáááą ááľáĽ, á¨áá á°ááłáá áľáłá˛áľá˛ááľ á áááŤá, ááááŤáąá. áá áá¨á á áá¨á ááą ááľáĽ áĽáá´áľ áĽáá°áá¨áá˝ áĽá á¨áĽáŤá áá áľ á ááŞá á¨áá á ááἠáĽáŤáľ áĽá á ááá áŁá áŞáŤáľ áĽáá´áľ áĽáá°áá¨áł áá°áᨠááᣠá¨á°áᨠáááľ ááá˘
áĽá ááá á¨ááłáŞáŤ áááááá˝ á áááŠá, á ááąá áááľ á¨ááá áá á áááłáľáá. ááá ááľáłáá፠á áááá. áá áá áĽáá°ááá˘
áľáłá˛áľá˛ááľá áá áá á áá áááá ááłáááľ áĽááááá. á áľááá áá. áŤá ááááľ á°á ááá áľá˘ áĽá á¨áááááá ááá˝ SQL áĽá ᨠSQL áá°á¨áłá áĽáááľ ááá˘
áĽá á˝ááŽá˝á ááááłáľ á¨áľááá áľáłá˛áľá˛ááľ áááá¨áĽ áĽáááááŤáá.
PostgreSQL á á¨á°ááá¨áľá áĽá áá°áśášá ááá¨áľ á áľááá° áááá áá áľááá áŤáľáŹáľ, "áĽáá áłáĽá" áĽááŤáá. á ááľ ááá á¨ááŤá°áá á ááłááľ áá°áśá˝á áĽááŤááᣠáĽá á áľá áĽá፠áá áĽáá°áá°áŠáŁ áá áĽá¨á°áŠ áĽáá°áá ááááľ áĽáá˝áááᢠáá ᣠá áĽááṠᣠáá áĽáá áłáĽá áá ᣠáá° ááľáĽ áá¨áľ á áá˝ááá˘
á¨á˛áአáááľá áááá¨áľ áĽáá˝ááá top
á á ááłááľ á¨áľáááľ áááááŤáá˝ á¨áá
á°á¨ áľááľáł á á áááá áá¨áľ áĽáá˝ááá ááááá á PostgreSQL ááľáĽ áá¨áľ á áá˝ááᢠááá
á ááá˝ ááłáŞáŤáá˝ áŤáľááááá.
áĽá á ááá á ᣠááá á¨áľ áĽáá°á á áĽáááááłááᢠPostgreSQLá á áĽáá°áá ááááľ áĽá áľ ááľáĽ á¨áááááá á¨áá ááá á¨áľ áĽáá°áá á áááľ ááľá áľ ááťáá. áĽááá áááľ áááŽá˝ áá¸áᥠá¨áá°áá áŞáŤáá˝ á¨ááᥠá¨á°áá á áĽáŤááá˝á ááľá°áááľ áĽá PostgreSQL áľáŤáá áĽáá˛ááĽá á¨ááŤá¨áááá¸á á¨ááᣠá°ááŁáŤáľ áá¸áá˘
á¨áá á á፠áĽá áááá¨áľ á¨áááá á¨á°áá á áĽáŤááá˝ áĽáá´áľ áĽáá°ááľá°áááą áá¨áľ áĽáá˝áááᢠáĽáŤáá á¨áááá¨áťá á¨áᣠá˛áá áá°á¨á᪠áľáŤ á¨á°áá á ááá áá áá¨ááłá. áĽáŤáá áá° áááááĽá á ááŞá á°áááá. áĽá áľ á ááŞá á¨áá áá áĽá áľ ááááŁáᢠáááá¸á á°á¨á᪠áááŤá. á¨á áá á¨áŚá˝ áĽá á˘áá´ááśá˝ áá á¨á°ááŤá á ááľ ááááľ á¨ááá I/O ááἠá áᢠá áľáááá áá¨á á¨á˛áľáŽá˝ áá° áá á°á¨ áľááľáł á¨ááá á á áአáŚáł "á¨á°áአááśá˝" áá. á¨áĽáŤá áá¤áśášáŁ ááťáťáŤáá˝ á¨ááᣠáá°áááᣠá WAL ááľáĽ áŁáá á¨ááĽááľ áááἠááľáĽ á°áááá á ááááᢠá ááłááľ á¨áľáłá˛áľá˛ááľ áá¨ááá˝ áá° áá ááá áľáłá˛áľá˛ááľ á°áĽáłá˘ ááľáĽ áááŁáᢠáĽá á¨áĽáŤáá áá¤áľ áá°áá áá ááááłá. á¨á፠á áá á°áá áá áááá ááá á á á˛áľ áĽáŤá ááľáá áá˝áá.
á¨á áľá°ááᣠáľáŤáá˝ áĽá á¨á áľá°ááᣠáá°áśá˝ áá áá á áá? á¨áá¨á ááą á áá°á áááľ áĽáá˛á ፠áĽá áĽáá˛á ፠á¨ááŤá°áá áĽá áá°áśá˝ á ááᢠáĽááá áá°áśá˝ á áŞáááą ááľáĽá áá¸áááᥠáĽááá á ááśáŤááŠá, áźá á áá, á¨ááŁááľ áá á¨á°áŤáŤá áá°áśá˝, á¨ááᣠá¸áá áá¸á. áľááἠáĽáŤááłááłá¸áá áĽáłáľáłááá˘
á áľáłá˛áľá˛ááľ áá áá á˝ááŽá˝ á á?
- áĽá áá¨áᢠPostgreSQL 9.4 á¨áľáłá˛áľá˛ááľ áá¨áá ááááá¨áľ 109 áááŞáŤáá˝á áá°áŁáᢠááá á¨áá¨á ááą áĽá á áá á¨áŚá˝á ᣠááľáá˝á ᣠá¨ááἠááłáá˝á á¨ááŤá¨áá˝ á¨áá áĽááá áá áááŞáŤáá˝ á á°ááá á áá á¨áŚá˝ ᣠá¨ááἠááłáá˝ áĽááľ ááŁááľ á ááŁá¸áᢠáááľá á¨á áá áá¨á á áᢠáĽá á ááľáĄ ááľá á á áŁá ááá áá.
- á¨áááĽáá á˝áá áľáłá˛áľá˛ááľ á ááŁáŞáá˝ ááá¨áá. áĽááá á áľáłá˛áľá˛ááľ á¨á°ááá¨áľá, á á¨ááá áĽá¨á¨áᨠá¨áááľ ááŁáŞáá˝á áĽáááá¨áłáá. áĽá áľáłá˛áľá˛ááľ áĽáá°áá á¨á°ááᨠá áá áĽá áá áŤáá, á á˘ááŽáá˝ á¨ááá አáĽá´áśá˝á áĽááŤáá. áĽá ááá á ááááŠááá˘
- áłáŞá á¨ááᢠá ááľ ááááľ ááľááľ áŤáá ááᾠᨠ15-30 á°áááá˝ á ááľ á¨áá ááá ááľáá, áľáłá˛áľá˛ááľá áá áá áĽá á¨15-30 á°áááá˝ á ááľ á¨áááá áá¨áľ á áá˝áá. áá á˝áá ááá˘
- á PostgreSQL ááľáĽ á áĽáŽ á¨á°á°áŤ ááłáŞáŤ á áááአá˝áá ááᢠá¨á¨ááá ááá˘áá˝ ááá á áááľ á áááááľ á áá°áĄáᢠáĽáá°áá á áááľ ááá á¨áá¸ááᢠá áá¨á ááą ááľáĽ áľáłá˛áľá˛ááľá áĽáť áá°áŁáᢠáá ááá áľáŁ áĽáŤá áŤá ááĄááľáŁ á¨ááááľá áŤáľááᣠá¨á፠áŤáľáááľá˘
- á PostgreSQL ááľáĽ á¨á°á°áŤ ááłáŞáŤ áľááá áá áá á˝áá áááĽáŤáᢠáĽá á¨áśáľá°á ááá ááłáŞáŤáá˝á˘ áĽá ááá áŤáá° ááĽá°á áĽáá˝ áŤáá áĽáŤááłááą áŠáŁá፠á¨áŤáąá ááŽááŤá áááťá áĽá¨áá¨á¨ áá. áĽáá á áá ááááŤáľ áá á á¨á°áĄ á¨áľáłá˛áľá˛ááľ áá áááľáŤáľ áá áááŁá¸á á¨áá˝á áĽá ááłáŞáŤáá˝ á ááľ. áĽá á á ááłááľ ááłáŞáŤáá˝ á ááłááľ áŁá áŞáŤáľ á á, á ááá˝ ááłáŞáŤáá˝ ááľáĽ ááá˝ áŁá áŞáŤáľ á¨áá, ááá á ááłááľ á á˛áľ áŁá áŞáŤáľ á á. áĽá áĽááľ á ááľ á¨áá°ááá áĽá á¨á°ááŤáŠ á°ááŁáŤáľ áŤáá¸á áááľ, áśáľáľ ááá á áŤáľ ááłáŞáŤáá˝á áá áá á¨ááŤáľáááá áľ áááł ááá áŤá. áá á áŁá á°áľ á¨ááá áá.
á¨áá áá áá¨á°áá? á ááŽááŤáá˝ áá áááá°áá áľáłá˛áľá˛ááľá á ááĽáł ááá°áľ ááťá á áľááá áá ᣠááá áĽááá á ááŽááŤáá˝ á áá ááááľ áĽáŤáľá áŤáťá˝áᥠá¨áĽááľáá áĽá á áááááľ á ááłááľ á°ááŁáŤáľá áŤááá˘
áĽá ᨠSQL áá°á¨áłá áĽáááľ áŤáľáááááłáᢠá ááłááľ áá¨ááá˝á á¨áľáłá˛áľá˛ááľ áááááľáŁ ᨠSQL áá ááá˝á ááľá¨á áŤáľáááááłáᣠáááľá áĽáá´áľ áĽáá°ááá¨áĄáŁ ááááá áĽáá°áá°á¨á ááá áŤáľáááááłáá˘
áľáłá˛áľá˛ááľ áĽá áááŽá˝á ááááŠááᢠáĽááą áá° ááľáŚá˝ áá¨ááá áá˝áá.
- á¨ááááŞáŤá ááľáĽ á áá¨á ááą ááľáĽ á¨á°á¨ááá ááľá°áśá˝ áá¸á. áá á ááłááľ ááľá°áľ á áá¨á ááą ááľáĽ á˛á¨á°áľ ááᥠáá áá ᣠá¨á á¨á´á ááłá¨áťáŁ á ááśáŤááŠá (autovacuum) ááá˝ááᣠá¨á፠áĽááá áá ááľá°áśá˝ áá¸áᢠá¨áĽááá ááľá°áśá˝ áá á¨ááááą ááŁáŞáá˝ á¨áá¨ááᢠáĽá áĽááá á ááľá°áśá˝ áá¨áłá°á áĽáá˝ááá.
- ááá°áá ááľáĽ áĽáá° á á¨á´ááá˝, á¨ááἠááłáá˝ áŤá á¨áááŽá˝ áŁá áŞáŤáľ áá¸á. ááĽá¨áśá˝ á áá¸áᢠáá á¨á á¨á´ááá˝ áá á áá. á¨á°áá á¨áŚá˝á áĽáľááľ, á¨á˘áá´ááśá˝á áĽáľááľ áá¨áłá°á áĽáá˝ááá. á á°ááááááľ áááŚá˝á áá¨áľ áĽáá˝áááá˘
- áĽá áśáľá°áá ááľáĽ á ááá áą áá á¨áá áá áá áá. áĽáŤá ááľá°áľ ááᢠá¨áŤáą á¨áá á¨áááł áá áááŞáŤ á áá. áĽáá á°áááŻáᣠáĽáá á á áᢠáá¨áłá°á áĽáá˝áááᢠá¨á˛áľá áá áĽááłá áááá ἠááá áááťá áá. áĽááá áááŽá˝á ááľáľá áá°á¨ááŁá¸ááá˘
á¨áľáłá˛áľá˛ááľ áááŽá˝ áĽáá°áá¨á°áá ááá áá.
- á á፠áá á°á¨ áľááľáł (á¨á°á፠ááá¨áŤ) ááľáĽ á¨áááááἠáááĽá áĽá፠áááľááἠááá á á ᣠáĽáá˛áá á ááłááľ ááľá°áśá˝ á˛á¨á°áą á á¨ááá á¨áá¨áአááá á áá¨á ááą á á áŤá ááľáĽ á ááłááľ áá á¨áááą ááŁáŞáá˝ á áá˘
- áĽááá áá ááŁáŞáá˝ áá°á ááá á áááá áĽá áá áľá°áłáłáŞá áĽááłá á áááá. áĽááá áá á°á á°á¨á áŤáá¸á áááŽá˝ áá¸á. áĽááąá áááááľáŁ PostgreSQL á SQL á°ááŁáŤáľ ááá á áááá˝ áŤáááŁáᢠáĽááá á á°ááŁáŤáľ á áá áá á¨á°áá¨áĄ áááŤáá˝á ááľá¨á áĽá á ááłááľ ááááľ áááŞáŤ (ááá á¨áááŞáŤáá˝ áľáĽáľáĽ) ááááľ áĽáá˝áááá˘
- ááá áá, áĽááá á á°ááŁáŤáľ ááá áá áááá ááš á áá°áá, áľááá á°ááŁáŤáľ ááĽááłáá˝ (áĽááłáá˝) áá°á¨áľ áá¸á. áĽááá á á ááľ á¨á°áá°á áááľ áľáááľ áá ááá á áá¨á ááą ááľáĽ áŁá á ááłááľ á¨ááľá°áśá˝ áľáĽáľáĽ áá áľáłá˛áľá˛ááľá á¨ááŤááᥠáááŁá á áá á¨áŚá˝ áá¸áá˘
- áĽááá á áĽáŽááἠáĽááłáá˝ (áĽááłáá˝) á¨áľáłá˛áľá˛ááľ áá áááľáŤáľ ááá á¨á°á áá á áááá˝ áá¸áᢠáŤáááá á°á¨á᪠á áá áśá˝ á ááŁáŞááľ áááá, áá˛áŤáá áá áááŁá¸á, áááá¨áąáľ, á¨á፠áá¨á ááá°áľ áá˝áá. áĽá áááŽáá˝á á áᢠáááŽáá˝ áŚáá´áá áá¸áᢠᨠpostgresql-contrib áĽá áá ááŤá áá˝áá (áááłá ᣠpostgresql94-contrib) ᣠá áľááááá ááá á áááአááľáĽ ááŤá ᣠááĽáą áááŞáŤáá˝á áááᚠᣠPostgreSQL áĽáá°áá áŤáľááአáĽá áĽáąá áá áá áá˝ááᢠ(ááľáłááť. á áľáááą áá á áááľá¨áľáŁ á á áἠáá á¨á áľá°áá˝áŚ áľáŞáśá˝ áĽá á á¨ááá áĽá á á áŤá ááá˘).
- áĽá áŚáá´áá áŤááá á áľá°áŤá¨áśá˝ á áᢠá¨áá°á áá PostgreSQL áľáááľ áá á ááááĄáᢠáĽáá° á¤á°-áá˝áááľ áá á áá ááá ááŤá á ááŁá¸áᢠá¨áá áŚáá´áá áŤááá á áľá°áá á ááᢠáŁááŁá áá á áááľá¨áľ á ááŤáŽá˝ á áŁá á¨á°ááŤáŠ ááá áá˝ááá˘
áá áľáááľ áááá áĽááłáá˝ (áĽááłáá˝) áĽá á PostgreSQL 9.4 ááľáĽ á¨ááááľá á ááłááľ á°ááŁáŤáľ áŤáłáŤáᢠáĽáá°ááá¨á, á áŁá áĽá áá¸á. áĽá áááááŞáŤ áá áŤáá áááľ á፠áááŁáľ á áŁá ááá ááá˘
ááá áá, á¨áá°ááá ááľá á¨áá°áľá ĐĐ°Đş ŃŃĐ°ŃиŃŃŃ Đ˛ŃĐľĐźŃ Đ˝Đ° PostgreSQL
áĽá á¨áá
áááá áá á°áłáá, áá
áá áľáá áĽááááá. áĽáŤááłááą áĽááł (áĽááłáá˝)ᣠááá áĽáŤááłááą á°ááŁáᣠPostgreSQL áľáááľ á°áá˘áá áľáłá˛áľá˛ááľ áááááľ áá ááľ ááá ááá ááá ááá ááá áľ áĽáá˝áááᢠáĽá áľá áááľ áľáááą á á áŤá á ááłááľ áá¨ááá˝á ááľááá ááááľ áĽáá˝áááá˘
á ááááŞáŤ á¨ááááá¨á°á ááá ááᢠpg_stat_database
. áĽáá°ááá¨á, áá
áááá áá. áĽá áá¨ááá˝á áááᢠá áŁá á¨á°ááŤá¨ áá¨á. áĽá á áá¨á ááą ááľáĽ áľááá ááá á áŁá á áá áĽáááľá áá°áŁáá˘
á¨á፠áá ááá°áľ áĽáá˝ááá? á áŁá ááá á áá áááŽá˝ áĽáááá.
select
sum(blks_hit)*100/sum(blks_hit+blks_read) as hit_ratio
from pg_stat_database;
áĽá ááááá¨á°á á¨ááá˝áá á¨ááááŞáŤá ááá áá¸á፠ááśá ááᢠáá¸á፠ááśá á áá ááŹáľ ááᢠá¨á°áአááśá˝ áá¸á፠áá áŤá á ááἠáĽáá°ááá°áľ áĽá á¨á˛áľá áá áŤá á áĽáá°á°áá á áááááľ áŤáľá˝áááłáá˘
áĽáá°áá ááá˝ ááᢠáĽá áá¸á፠áŁááá ááĽá á¨á°áťá ááááá˘. áá áá áááŞáŤ áĽáá° ááśá áĽáááááááᢠáĽáᣠáááłáᣠá¨áĽááá áá¸á፠áá¸ááŤáá˝ á¨90% á áá ááśá áŤáá áá áĽáŠ ááᢠá¨90% á áłá˝ á¨ááá° á¨áá¨ááá áľáŠáľ ááá ááľ á áá á°á¨ áľááľáł ááľáĽ áááá¨áľ á á áá á°á¨ áľááľáł á¨áááᢠáĽá áá á ááἠááá áá, PostgreSQL á˛áľáŠá áááľá¨áľ ááá°áłá áĽá áá áá¨á á¨áá á°á¨ áľááľáł á¨á°áá á á¨á áá áááá áá. áĽá áá á°á¨ áľááľáłá áľáááłá°á áá°áĽ á ááĽááľ-á¨á፠ááá¨áŤáá˝á áá¨áአááá á¨áĽá¨áľ áá á°á¨ áľááľáłá (áŤá) áá¨ááŠá˘
select
datname,
(xact_commit*100)/(xact_commit+xact_rollback) as c_ratio,
deadlocks, conflicts,
temp_file, pg_size_pretty(temp_bytes) as temp_size
from pg_stat_database;
á¨áá á ááŤá¨áĽ áá áá ááá°áľ ááťáá? á áá¨á ááą ááľáĽ á¨á°á¨á°áąáľá áŤáá°áááą áááŽá˝á áá¨áľ áá˝ááᢠáĽáá áá ááłáŤá? ááá áá˝áŁ áááś ááááťáá˝áŁ áááŤá áááá˝ ááá áᣠáá áá¸áᣠááááłá¸á áĽá áááśá˝ á áá˘
áá á áĽáŤá áá áá áĽáá˝áááᢠáá SQL á áŁá ááá ááᢠáĽá áá á ááἠááŤáłá˝á áá¨áľ áĽáá˝ááá.
áĽá á¨áááť áááá˝ áĽáá á áᢠá¨á°ááááá áĽá á¨ááááťáá˝á áĽáááł áĽáááá¨áłááᢠáŽááľáľ á¨ááĽááąá á¨á°áłáŤ áá¨áá፠ááᢠRollbacks áá° áá ááááľ ááᣠáááľá ááĽááą á ááłááľ áľáŤáá˝á á°ááˇáᣠá¨ááἠááłáá á áŁááˇáᣠá¨áá ááá áááľ ááľáĽ áŤáľááŁáŁ áĽá á¨á፠ááľááľ á°áá á¨áŁ áĽá á¨ááĽááą áá¤áśá˝ á°áĽáááᢠáááľá áŤáááá¨áĽ áĽá¨á¨áᨠá¨ááá°á á¨ááááť áĽááľ ááĽá ááᢠáĽá á áá ááááľ áĽááąá ááľáááľ á ááĽááľ áĽá áá áĽááłááá áŽáąá áŤááľáá˘
áááśá˝ á¨ááŁááľ áá á¨á°áŤáŤá áá¸áᢠáĽá áĽááąá ááááľ á ááŁá¸á. á á áá áá á¨ááá¸á á ááłááľ áĽáŤááá˝ áŤáááľ áĽá áááśá˝ á¨á°ááą áłá˛áŤ áĽááá á áááśá˝ áá°áá°á áĽá áá áĽáá°ááá á áá¨áľ áŤáľáááááłáᢠááááŽá˝ á áááἠááľáłááťáá˝ ááľáĽ áááá. áĽá á¨áá°áá áŞáŤ áĽáŤááá˝ áŤá áľá á°áśá˝ áĽáá˛á°áŠ áááśá˝á áááąá˘
ááááľ áĽáá˛á ááĽá áááł ááᢠáĽáŤááá˝ áááĽáľ á˛ááłá°áŠ á ááľ áĽáŤá á ááąá ááĽáľ á áááś áááááŤáá áá°á°áŁ ááá°áá áĽáŤá ááá°ááá ááĽáľ á áááś áááááŤááá áá°á°áŁ á¨ááŤá áááąá áĽáŤááá˝ á ááłá¸á á¨áááá ááĽáľ á ááá°á áá¨á¤áą áááááŤáá áĽáľáŞáá áľá¨áľ áá á á áááŁá¸áᢠáá á°áá á˝áá áŤáá áľ áááł áá. á áááŹá˝áá˝á áĽáá°áá á ááá áĽá á¨ááĽá¨áśá˝ ááłá¨áťá á°á¨áłáłáááľ áŁáá ááአááľá°áŤá¨á á ááŁá¸á. áĽá áááááŤá á á¨ááá áĽá¨á¨áᨠáááá áŤáŠ, á áááἠááľáłááťáá˝ ááľáĽ áŤááľá ááááŽá˝ áááá¨áľ, á¨á°á¨á°áąáľá áááłáá˝ áá°áá°á áĽá á˝áአáá áĽáá°áá áá¨áľ áŤáľáááááłá.
áááŤá áááá˝ (temp_files) áĽáá˛á ááĽá áá¸áᢠá¨á°á áá áĽáŤá áŚááŹá˝áá áĽá áááŤá áááĽá áááľá°áááľ á á áá á°á¨ áľááľáł á¨ááá á á˛áľá áá ááá áááĽáŤáᢠáĽá á áá á°á¨ áľááľáł ááľáĽ á áááŤá ááľ ááľáĽ ááŤá¨áááá¸á á¨áá˝áá¸á ááá áľáŤáá˝, ááľááá á á˛áľá áá áá¨ááá ááááŤá. áááá ááᢠáá á¨áĽáŤááá á áááá áá áá¨ááŤáᢠáĽá áá° PostgreSQL áĽáŤá á¨áá¨á á°áá á áľáá˝ áááś ááá˝ ááá ááᢠáĽááá áá ááááá˝ á áá á°á¨ áľááľáł ááľáĽ á¨á°á¨ááá, Postgres á áŁá ááŁá ááá˝ áá°áŁá áĽá á°áá áá áľáá˝ áá áĽáá.
pg_stat_bgwriter - áá
áĽááł á¨áááľ PostgreSQL á¨ááᣠáááľ áľáááśá˝á á á áŤá ááááťááĄ- checkpointer
и background writer
.
ááááá, á¨áááŁá áŞáŤ ááĽáŚá˝á, á¨ááŁááľá áĽááááá. checkpoints
. áŹááá˝ áááľá áá¸á? á¨áá°áť ááĽáĽ á ááĽááľ áááἠááľáłááťá ááľáĽ áŤá áŚáł á˛áá áá
á á áááἠááľáłááťá ááľáĽ á¨á°á°á¨á ááá á¨ááἠáááŚá˝ á á°áłáŤ áááł á á˛áľá áá áŤáá ááἠáá áááłá°áá áŤáłáŤáᢠáá°áąáŁ áĽáá° á¨áľáŤ áŤá áĽá á
áá
áśá˝áŁ á¨á
á ááá áá˝áá áĽá á á áĽááá á¨áá¸áš áážá˝á á á፠ááľ ááľáĽ á á˛áľá áá áŤá á¨ááἠáááá˝ áá áááłá°áá áŤáŤáľáłáᢠááááľá áá? PostgreSQL á˛áľáŠá áá áá áĽá¨á°á¨á°á áľ á¨áá áĽá á¨á፠ááἠáĽá¨áá°á° áĽá á áĽáŤááłááą ááłá¨áť áá áá¨áá á¨áá˝á á¨áá áááá áá áᢠáľááá
, PostgreSQL á¨áá
á°á¨ áľááľáł ááá á áá, áá á á ááááŞáŤá ááľáĽ áŁááľ áááŞáŤáá˝ áá á¨á°áá°á¨á° áá. Postgres áááŁá áá°áľ ááá ááá á¨á
á áá
áá
á°á¨ áľááľáł ááľáĽ á¨áá°áŤ ááἠáááľáŁáᢠá¨ááἠááἠáĽáŤááá˝á á á°ááá¨á°, á°ááá áá. áĽá áááľ á¨ááἠáľáŞáśá˝á áĽááááá. á áá°áá á áá
á°á¨ áľááľáł ááľáĽ áá, áááá á°áá á á˛áľá áá áá. áĽá áá
á ááἠá á¨ááá áááłá°á áŤáľáááááłá. á¨á˛áľá áá ááááłá°á á áá
á°á¨ áľááľáł ááľáĽ á¨áááá áá áĽááááááᢠáá
á¨áá°áť ááĽáĽ áŤáľáááááá˘
á¨áá°áť ááĽáĽ á á፠ááľ ááľáĽ áŤáááᣠááá°áť ááĽáĽ á¨ááŤáľááááľá á¨áá¸áš áážá˝á áá áááᢠá¨ááŤá ááá°ááá ááá፠á á፠ááľ á áŠá ááááŤáᢠáĽá áááá°á˝ ááááľ á¨á°á°á¨ááŁá¸á áážá˝, áĽáą á áľááľá áŤááłáľáá¸áá. áľááá , ááᥠááľááá á¨á˛áľá áá á°ááłáľáá.
áááľ ááááľ á¨áááŁá áŞáŤ ááĽáŚá˝ á á. á ááľ á¨áá°áť ááĽáĽ á áá ááĽá፠áá áá¨áááá. áá
á¨áá°áť ááĽáĽ á áá áĽá áĽáŠ áá - checkpoint_timed
. áĽá á ááááľ áá á¨áá°áť áŚáłáá˝ á á - checkpoint required
. áĽáá˛á
ááááą á¨áá°áť ááĽáĽ á áŁá áľáá
á¨ááἠáááἠá˛áá¨á áá. áĽá á¨ááĽááľ áááἠááľáłááťáá˝á áááá ááᢠáĽá PostgreSQL áá
á áá á á°áťá ááĽááľ áááłá°áᣠá¨áá°áť ááĽáĽ ááľá¨á áĽá ááá á áĽááłáá áľ áŤáááá˘
áĽá áľáłá˛áľá˛ááľá á¨á°ááá¨áą pg_stat_bgwriter
áĽá áŤáááľá áááá¨áą checkpoint_req á áá°áť_áá á¨á°áŤáá á áŁá áľáá
ááᣠá¨á፠áá ááĽá ááᢠááá ááĽá? áá
áááľ PostgreSQL áááĽá áá° á˛áľá áááá á ááŤáľáááá áľ áá á¨ááŤááἠááĽá¨áľ ááľáĽ áá. á¨áá°áť ááĽáĽ á áá ááĽá፠áĽáá á áľá¨áá áá áĽá á ááľáŁá ááá ááĽáŠ áá°á¨áľ ááá¸áá áĽá á áá áá°áľ á¨á°áá¨á ááᢠPostgreSQL á áĽáŤ áá áá ááł á¨ááá áĽá á¨á˛áľá áááľ áľáááąá ááááłáłáľ á˝ááł á ááᢠáá
á PostgreSQL á áá ááᢠáĽá á áá°áť ááĽáĽ áá
áľ á¨ááá¸á áĽáŤááá˝ á¨á˛áľá áááľ áľáááľ áľáŤ áľááá áá áľ ááááľ á ááłááŁá¸ááá˘
áĽá á¨áá°áť ááĽáĄá áááľá°áŤá¨á áśáľáľ áááŞáŤáá˝ á á-
-
Ńheckpoint_segments
. -
Ńheckpoint_timeout
. -
Ńheckpoint_competion_target
.
á¨áááŁá áŞáŤ ááĽáŚá˝á á á áŤá áĽáá˛ááŁá አáŤáľá˝áááłá. áĽá áá á áĽáááą áá á áá°áŠááᢠá¨áĽááą á°á˝áĽá á¨á°áᨠááłá áá.
ááľá ááá፠á áŞáááą ááľáĽ á¨á°ááá¨á°á áľáŞáľ 9.4 á¨á áá á áá á ááŁáĽááľ á¨áááᢠá áááá ᨠPostgreSQL áľáŞáśá˝ ááľáĽ, áááŞáŤá checkpoint_segments
á áááŞáŤáá˝ á°á°áŤ min_wal_size
и max_wal_size
.
á¨áááĽáá áááľ áľáááľ á¨á áľá°ááᣠá¸áá áá - background writer
. áá áĽáŤá°á¨á áá? ááá፠á ááá áá°áľ ááľáĽ áŤáááá¨áĽ áá°áŤáᢠáážášá áá° á¨á°áአááśá˝ áááľáťá áĽá áŤááá¸áá ááťáť ááá˝ á á˛áľá áá áŤáĽáŁáᢠá áá
ááááľ á¨áá°áť á ááá á áá°áť áá á ááľá°á áľáŤ áĽáá˛á°áŤ áá¨áłá.
áá áá áŤáľááááá? áá¨áá áááľá°áááľ á áľáááľ (á áĽááľ áĽá áá˛áŤáá) á¨á°ááá á á፠ááśá˝ ááľáĽ á¨áášá
áážá˝á á áľáááááľ áŤáááŁáᢠáĽáŤáá áášá
áážá˝á á˛áŤáľááá áĽá ááľááá á á፠ááľ ááľáĽ á˛áá á ááľ áááł á°á¨á°á° áĽáá áᢠááľáľááŹáľ backend
áĽáą áĽáť ááľáś áá áááŁá¸áá, áĽáą áŤáą ááá ááá áá˝áłáľ á¨áá áľá. ááá áá á áľáááľ áĽáá°áá
á áááľ ááá˝ á¨áá á¨áááá ááá áá áĽá áá° á˛áľá áááá°áľ áĽá áááááą áááá°áľ áážá˝á áááá ááááŤá - áá
á á á áá áá á¨á áááá áĽáŤá áá áá á ááłá á°á˝áá áŤáłáľáŤáᢠáááŞáŤ áĽááłáááľ áŤáŠ maxwritten_clean
áľáá
, áá
áááľ á¨áááŁá á¸áá áľáŤáá áĽá¨á°áŤ á áá°áá áĽá áááŞáŤáá˝á áá¨áá áŤáľáááááłá bgwriter_lru_maxpages
á á ááľ áá°áľ ááľáĽ áĽá áľáŤáá˝á áĽáá˛á°áŤ, á°á¨á᪠áážá˝á áŤá˝áą.
áĽá áá á áŁá á áá á áááŤá˝ áá buffers_backend_fsync
. á¨áá áááŁáá˝ fsync á áŤá°áááľá ááááŤáąá áááá ááᢠᨠIO ááá áá°áť á áááá áá°áá áŤáááᢠá¨áá°áť á ááá á¨áŤáą áá¨á á áá, á á¨ááá fsyncá áŤáľáŹáłá áĽá áážá˝á á áá
á°á¨ áľááľáł ááľáĽ á á˛áľá áá áŤá áááá˝ áá áŤááłáľáá. á¨áá°áť á ááá áľáá
áĽá á¨á°áá á¨ááᣠá¨áááŁá á áŤá á áŤáą fsync áááľá¨á ááá°áłá áĽá áá
á¨áááŁáá ááĽááľ ááááłáá˘, áááľá á°áá áá á¨áá˝áá á áá ááááś ááá˝ ááá áá. áá
áá á¨áᎠá¨áá áἠáááá áŤáŠ, áá
ááľááá á˝áá áá áĽá áááᣠá¸áá á
áá
áśá˝ áľáŠá¨áľ ááľá áľ áĽá á¨á˛áľá áááľ áľáááľá á áááá ááááá áŤáľáááááłá á˘
ááľá ááá፠_á¨áá¨á°áá á˝áá á¨ááŁááľ áá á¨á°áŤáŤááľá áĽáľáłá˛áľá˛áŤá áĽááłáá˝ áááááᢠá áĽááááš á¨áĽááł áĽá á¨á°ááŁá áľáá˝ á ááľáľááŹáľ 10 ááľáĽ á°ááá¨áá ᢠá¨á°áá¨áŠáľ áľááš áá ááá áá°áŤáľ áá á xlog
áá wal
и location
áá lsn
á á°ááŁá/á áĽááł áľáá˝áŁ ááá°. áአááłá ᣠá°ááŁá pg_xlog_location_diff()
á°áĽá á°áááŻáᢠpg_wal_lsn_diff()
._
áĽáá á áĽá ááá á ááᢠááá áá á¨áŚáł áá á¨á°áŤáŤá áááá˝á áĽáť áĽáááááá.
ááá áĽá´áśá˝ áĽáŠá áááá¸áá á¨á°ááá¨áľá, áá á°áľáá áá áĽá á áá á¨ááłá ááᣠá ááááá.
áá áááłá´á˛áá áŚáł á ááĽááľ áááἠááľáłááťá ááľáĽ áŤáá áŚáł áĽáá áá ááᢠá áá¨á ááą ááľáĽ á ááłááľ áĽáá áľáá´áá˝ áŤá áŤáááá¨áĽ áá¨ááŤá: áŤáľááŁá, áá°ááá, ááá°.
ŃкОНŃкО СапиŃанО xlog в йаКŃĐ°Ń
$ select
pg_xlog_location_diff(pg_current_xlog_location(),'0/00000000');
Наг ŃопНикаŃии в йаКŃĐ°Ń
$ select
client_addr,
pg_xlog_location_diff(pg_current_xlog_location(), replay_location)
from pg_stat_replication;
Наг ŃопНикаŃии в ŃокŃндаŃ
$ select
extract(epoch from now() - pg_last_xact_replay_timestamp());
áĽááá áááŽá˝ á¨á°ááŤáŠ á¨áá, á ááłááľ ááááľ áááá¨áľ á á. Lag á¨ááá á¨ááŁááľ áááá¨áľ áá ᣠáááľá áá¨áá á á ááááŽá˝ ááŤá¨á áááŤáŤáá˘
ááááá¨áą áŚáľáľ ááááŤáśá˝ á ááĄ-
- á¨ááá áááłá°áá ááá á¨ááá˝áá á¨á˛áľá áááľ áľáááľ ááá˘
- áĽááá ááá á¨áá˝á á¨á ááłá¨ áá¨áĽ áľá á°áśá˝ ááá á¨á ááłá¨ áá¨áĽ á¨áá á á áá ááŤáᣠááᥠá ááá áááľá¨áľ áá á¨ááá áĽá áĽáąá áĽáá°áá ááŁááľ á ááá˝áá áľ ááá˘
- áĽá ááŽá°á°á. ááŽá°á°á á áŁá áŤáá°ááá° ááłá ááᢠáĽá áŤáá áááľ ááá áśáľáľ áá á ááťáá, áá ፠á°áá áá¨á°áľ áá˝áá.
áĽá áľáłá˛áľá˛ááľá áĽááľáá áá á¨ááá
áąáá áŚáľáľ áĽáŤááá˝ áĽáá
á áᢠá áĽá á¨ááĽááľ áááἠááľáĽ áá áŤá
á áĽáá°á°áááá ááááľ áĽáá˝áááᢠáĽáá°áá
á áááľ á°ááŁá á á pg_xlog_location_diff
áĽá á¨ááŁááľ áááá¨áľá á áŁááľ áĽá á á°á¨ááśá˝ ááááľ áĽáá˝áááᢠááá
á°áá á¨áá
áĽááł (áĽááłáá˝) áĽá´áąá áĽáá ááááá˘
ááľáłááť: á¨pg_xlog_áŚáł ááá diff() á°ááŁáᣠá¨ááááľ áŚááŹá°áŠá áá áá áĽá á ááąá áŚáł á¨ááá ááááľ áá˝ááᢠáášá˘
á á°á¨ááśá˝ ááľáĽ áŁáá áááá¨áľ ᣠá ááľ á ááł á áᢠá ááłá áá ááá á áááľ áĽáá áľáá´ á¨áá ááĽáṠᨠ15 á°áá á ááľ áá á áĽá ááá á áááľ áĽáá áľáá´ á¨áá, áĽá áá áá áááŁá á á á á áá á¨á°ááá¨áľá, ᨠ15 á°áááá˝ áááá¨áľ áĽááŤáá. áá ááľáłááľ á°áᢠáá. áĽá áá á áááá¨áľ á˛ááá¨áą áá° áľááᤠáá፠áá˝ááá˘
pg_stat_all_tables ááá á áá áĽááł ááᢠá á á¨á´ááá˝ áá áľáłá˛áľá˛ááľá áŤáłáŤá. á áá¨á ááą ááľáĽ á á¨á´ááá˝ á˛ááŠá, á¨áĽáą áá á ááłááľ áĽáá áľáá´áá˝, á ááłááľ áľáááśá˝, áá áá áá¨á á¨áá áĽááł ááááľ áĽáá˝ááá.
select
relname,
pg_size_pretty(pg_relation_size(relname::regclass)) as size,
seq_scan, seq_tup_read,
seq_scan / seq_tup_read as seq_tup_avg
from pg_stat_user_tables
where seq_tup_read > 0 order by 3,4 desc limit 5;
ááááá¨á°á á¨ááá˝áá á¨ááááŞáŤá ááá á á á°á á°á¨á°á á¨á°áá á¨áĽ á ááľ áá. á¨áĽááá áááŁáŚá˝ á áá áŤáá ááĽá áŤáą á¨ááľ ááĽá á áá°áá áĽá á ááľ ááá ááľá¨á áĽááłááĽá á áŤááááľáá˘
áááᣠááá°á áááŞáŤ á á - seq_tup_readᢠáá á¨á°á¨áłáłá á ááľ á¨á°áááąáľ á¨á¨áľáá˝ áĽááľ ááᢠá ááŤá ááĽáŠ ᨠ1 ᣠ000 ᣠ10 ᣠ000 á áá á¨áá ᣠáá ááľááá á áááŤá˝ áá ᣠáá á ááľá¨áťááš á áá¨á á áá áĽáá˛áá á ááľ áŚáł ááááŁáľ ááŤáľáááááľ áá˝áá ᣠááá áĽáá°áá áŤá á°á¨áłáłá á ááśá˝á á¨áá áá áá ááá˝á áááťá¸áľ ááťáá ᢠáá á áá¨á°áľá áá á.
ááá ááłá - áľáá OFFSET áĽá LIMIT áŤáá áĽáŤá áá áŤáá áá áĽáá áᢠáááłá á á áá á¨áĽ ááľáĽ 100 á¨áľáá˝ áááá áĽá á¨á፠á áá 000 á áľááá á¨áľáá˝ ááá°áłá, áĽá áá°á á˛á á¨á°áá á¨áľáá˝ ááŁáá. áá á°áá ááĽá ááłá áá. áĽá áĽáá°áá á áááľ áĽáŤááá˝ áááťá¸áľ á ááŁá¸á. áĽá áĽááľá ááŤáŠáľ áĽá á¨á°áá ááľá ááĽáŽá˝ ááááá á¨áá˝áá áľ ááá ᨠSQL áĽáŤá áĽáá á áá˘
select
relname,
pg_size_pretty(pg_total_relation_size(relname::regclass)) as
full_size,
pg_size_pretty(pg_relation_size(relname::regclass)) as
table_size,
pg_size_pretty(pg_total_relation_size(relname::regclass) -
pg_relation_size(relname::regclass)) as index_size
from pg_stat_user_tables
order by pg_total_relation_size(relname::regclass) desc limit 10;
á¨á áá á¨áĽ áá áá˝á áá
áá á°áá á¨áĽ á áá áá áĽá á°á¨á᪠á°ááŁáŤáľá á áá áá ááá áá˝áá pg_total_relation_size()
, pg_relation_size()
.
á á á ááá, ááł áľáááá˝ á á dt
и di
, á PSQL ááľáĽ áá ááá áľ á¨áá˝ááľ áĽá áĽáá˛áá á¨á°áá á¨áĽ áĽá á¨áá¨á á áá áá áá˝á áááá¨áą.
ááá ᣠá¨á°ááŁáŽá˝ á á ááá á¨á áá á¨áŚášá áá áá˝ áĽááľáááá¨áľ áá¨áłáá ᣠá˘áá´ááśá˝á áĽááłá áááľ ááľáĽ á ááľááŁáľ ᣠááá á˘áá´ááśá˝á áłááľáᣠᣠáĽá ááľááá á áá¨á ááą áĽáľááľ áá á ááááŽá á ááłááľ áááśá˝á áááľá¨á ᣠáááľá á¨áĽá áá áĽáá´áľ áĽáá°ááŤáľá ᣠᨠáá áá áŤá á áĽááŤáŹ áĽá ááľááá áľá áá á áááťá¸áľ á ááłááľ áľááłááá˝á ááłáá˘
áĽáá
áľáá´á ááá. áááἠáááľá áá? áŚááŹá˝áá áĽáá UPDATE
- á á áá á¨áĄ ááľáĽ á¨áľáá˝á á¨áááá á á áŤá. áĽáá° áĽáááą á¨áá áááá áááľ áŚááŹá˝áá˝ (ááá áĽáá˛áŤáá á¨á áá ) ááᢠáá
á á˛áľ á¨á¨áľá áĽáŞáľ á ááľááŁáľ á¨áľáŽáá á¨á¨áľá áĽáŞáľ áá áŤááá áľ áááá áĽáŤáłá¨ ááᢠá ááᣠá ááśáŤááŠá ááĽáś áĽááá
á áá áŤáááŁá¸áá á¨ááľááŽáš áľáŞáśá˝ áŤá¸áłáᣠáá
áá áŚáł ááĽáá°áá áĽá
á áá ááá áĽáá°áá˝á ááááľ áŤáľááá áľá˘
á á°á¨ááŞá áááá á áá á¨áĽá áááá áĽáť á áá°ááᢠá ááá á¨áá¨á á áá ááťáťáŤ ááᢠá á á¨á´áá áá áĽá á˘áá´ááśá˝ áŤáááľáŁá¨ááá áááŁá áĽáŤáá ááľáĽ á¨á°ááááľ ááľáŽá˝ á¨ááłá°ááŁá¸á ááá á˘áá´ááśá˝á áááá á ááŁá¸áᢠáĽááá á˘áá´ááśá˝ áá˝áłáľ á¨ááŤáľáááá¸á áá áŤáááŁá¸á á¨á¨áľá áľáŞáśá˝á áááŤá¸ááá˘
select
s.relname,
pg_size_pretty(pg_relation_size(relid)),
coalesce(n_tup_ins,0) + 2 * coalesce(n_tup_upd,0) -
coalesce(n_tup_hot_upd,0) + coalesce(n_tup_del,0) AS total_writes,
(coalesce(n_tup_hot_upd,0)::float * 100 / (case when n_tup_upd > 0
then n_tup_upd else 1 end)::float)::numeric(10,2) AS hot_rate,
(select v[1] FROM regexp_matches(reloptions::text,E'fillfactor=(\d+)') as
r(v) limit 1) AS fillfactor
from pg_stat_all_tables s
join pg_class c ON c.oid=relid
order by total_writes desc limit 50;
áĽá á á˛ááá ááááŤáľáŁ UPDATE á¨áŁáľ ááĽá°áľ áŤáá áľáŤ ááᢠáá ááá áá°á¨á áá˝áá. áĽá hot updates
. á PostgreSQL áľáŞáľ 8.3 ááľáĽ áłáá°ááᢠáĽá áá áááľá áá? áá
á˘áá´ááśá˝ áĽáá°áá áĽáá˛ááᥠá¨ááŤá°áá ááá ááĽá°áľ áŤáá ááá ááᢠáááľá ááááĄá á áááááᣠááá áá á ááš ááľáĽ áŤáá áááἠáĽáť (á¨á áá á¨áĄ áŁáá¤áľ á¨ááá) á°ááááᣠáĽá á˘áá´ááśáš á ááá á ááš ááľáĽ áŤááá á°ááłáłá áááἠáŤááááłáᢠáľáá˝ áĽáá°áá
á áááľ á áľá°áłá˝ á¨áľáŤ á áááᎠá á, áŤááŠá á˛ááŁ, á¨ááŤá áĽááá
á°áá°ááśá˝ á ááľ hot
áĽáá°áá ááááŁá áĽá ááá ááá á˘áá´ááśá˝á áłáŤááá ááľáŤáąá áááĽáá, áĽá ááá ááá á á ááľá°á á¨ááĽáľ áĽáááľ áá¨á°áłá.
áĽá á˛ááááľ n_tup_hot_upd
áľáá
, á áŁá áĽáŠ áá. áá
áááľ ááá ááĽá°áľ áŤáá¸á ááááá˝ áŤá¸ááá áĽá áá
á ááĽáśá˝ á¨ááľ ááĽá ááŤá˝ áá áĽá ááá ááá áĽáŠ ááá˘
ALTER TABLE table_name SET (fillfactor = 70);
á¨áľáá
áá á áĽáá´áľ áĽáá°áá¨áá hot update
áŚá? áá áá áĽáá˝ááá fillfactor
. INSERTs á áá áá á á°áá á¨áĽ ááľáĽ á ááľ áá˝ á˛áá á¨á°áŤááá áá áŚáł áá á áááľááᢠááľáá˘áŤáá˝ áá° á á¨á´áá á˛ááą, áášá áá á áá áááá, á ááľáĄ áŁáś áŚáł á áá°áá. á¨á፠á á˛áľ áá˝ áá°áááᢠááᥠáĽáá°áá á°áááˇáᢠáĽá áá ááŁáŞ áŁá
᪠áá, fillfactor = 100%.
áááŤáá áá° 70% áááááľ áĽáá˝ááá. áááľáᣠá¨ááľááŁáśá˝ ááᣠá á˛áľ áá˝ á°ááľá§áᣠáá á¨ááš 70% áĽáť áá á¨á°áááᢠáĽá á áá áŁá á፠30% ááá°ááᢠááťáťáŤ ááľá¨á á˛áááᣠááááŁáľ á á°ááłáłá áá˝ áá áá¨á°áłáᣠáĽá á á˛áą á¨á¨áľá áľáŞáľ á á°ááłáłá áá˝ áá ááŁáŁááᢠáĽá áľáŠáľ_ááá áá¨ááááᢠáá á á á¨á´ááá˝ áá áááťá ááá áŤá°áááá.
select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));
á ááśáŤáŠá áá¨áᢠAutovacuum á PostgreSQL ááľáĽ á áŁá áĽááľ áľáłá˛áľá˛ááľ áŤáá áľ áááľ áľáááľ ááᢠá á°áá á¨áŚáš áá á pg_stat_activity ááľáĽ áá¨áľ á¨ááá˝áá á á áá áá áľááľ áŤááŠá áĽááłáá ááᢠááá áĽáá á áĽáá áľáá´ áá áá áŤá á á á¨á´ááá˝ á áá¨áá ááľáĽ áĽááłá ááá¨áłáľ á áŁá á áľá¸á᪠áá.
ááľáłááť: á¨áľá ᨠáá˝ 10 ááᎠá¨áŤáŠá áŤááŠá á¨áá¨áłá°á áááł á áŁá á°áťá˝áá - á¨pg_stat_progress áĽááł áłááˇááŤááŠá, áá á á¨áŤáľ-áŤáŠá ááľáľáá ááłá á áĽá á áŤáááá.
áá
á ááá áŤá áĽáŤá áá áá áĽáá˝áááᢠáĽá áŤááŠá ááź áá°á¨á áĽááłáá áľ áá¨áľ áĽáá˝ááá. áá áŤááŠá áĽáá´áľ áĽá ááź áááá á áá áľ? áĽááá
áá°á áĽáŹ á¨á°ááááłá¸á á¨ááĽá¨ááááá˝ á¨áľáŽ áľáŞáśá˝ áá¸áᢠááá á°á¨áľáˇáᣠá á˛áą á¨á¨áľá áľáŞáľ ááĽáˇáᢠááá áŤááá áľ á¨ááĽá¨áááá áľáŞáľ áłááˇáᢠá á¨á´á pg_stat_user_tables
áĽáá°áá
áŤá áááŞáŤ á á n_dead_tup
. ᨠ"ááłá" á¨áľáá˝á ááĽá áŤáłáŤá. áĽá á¨ááą á¨áľáá˝ ááĽá á¨á°áá°á áá°áĽ á áá áĽáá° ááᣠá ááśáŤááŠá áá° á á¨á´áá áááŁáá˘
áĽá áá
áá°áĽ áĽáá´áľ áá°áá? áá
á á áá á¨áĄ ááľáĽ áŤááľ á¨á¨áľáá˝ á á
áá ááĽá á áŁá á¨á°áá°á ááśá ááᢠáááŞáŤ á á autovacuum_vacuum_scale_factor
. ááśáá ááááťáᢠáĽáá á 10% + á°á¨á᪠ᨠ50 ááľááŽá˝ áááť áá°áĽ á áᢠáĽá áá áááá? á á áá á¨áĄ ááľáĽ áŤááľ ááá á¨áľáὠᨠ"10% + 50" á¨á áá á¨ááą á¨áľáá˝ á˛ááŠá, á á¨á´ááá á áŤáľ-á°á áá áĽááľááá ááá.
select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));
ááá áĽáá á ááľ ááĽáĽ á á. ááá¤áśá˝ áá°á¨áłá áá°áŚá˝ av_base_thresh
и av_scale_factor
á á°áá á ááá°áĽ áá˝áá. áĽá, á áá
áá á¨áľ, áŁáŤá ááá á ááá á áááá, áá áá á¨á´áá ááá°áĽ áá. áľááá
, áááľááľ, áĽá፠áá´áá˝á áĽá áá´áá˝á áá áá áŤáľáááááłá. áĽá ááááľ áŤááľ á¨á áŞáś áŁáá°á¨áŚáťá˝áá áááľ áá¨áľ áá˝áá (á áľáááľ áá áŤáá á ááá áá áŤááá áĽá á á˝áá ááľáĽ á°áááá)á˘
áĽáá á˝ááá
á áá ááłá áá áá áĽááľáá? á¨á á áá¨á áŤáá áĽá á ááśáŤááŠá áááá áŤááťá á¨áŤáŠá á°áŤá°áá˝á ááĽá áá¨áá ááá á ááá áŤááŠá á¨á áá á á á ááľá¨á áĽáá˝ááááá°á áĽá áĽáá˛áááá , á á¨á´ááá á áľááá˝ áááĽáŤáŽá˝ áŤáľáŹáłá. áĽá áľááá áá¨áá ááááłá. - áĽáá áŤáá ááá ááá á á˛áľáŽá˝ áá áŤááá áááľ áá¨áłá°á áá, ááááŤáąá. á¨áŤáŠá ááá áá á áá°ááᣠááá áĽááłá á¨á¤áľá¤áľá˛/á¤ááŞá¤áᤠááłáŞáŤáá˝ áááŁáľ áá á°áŤáá á˝áአáĽáá áľáŠá¨áľ á¨ááá°áĽ áááá˘
pg_stat_all_indexes á áá¨á á áááá˝ áá áŤá áľáłá˛áľá˛ááľ ááᢠáľáá á áá°áá˝áᢠáĽá áľá á˘áá´ááśá˝ á á ááá áá¨áá á¨áĽáą ááááľ áĽáá˝ááá. áĽá áááłá, á¨áľáááš á˘áá´ááśá˝ á°á¨á᪠áĽááłáá ááá°á áĽáá˝ááá.
á áľááľá áĽááłááŠáľ ᣠááá á áá á¨áŚá˝á áááá áĽáť áłááá á˘áá´ááśá˝áá áááá ááᢠá áá
áá á¨áľ, á á á¨á´áá áá áĽá á˘áá´ááśá˝ áŤáá, á á áá á¨áĄ ááľáĽ áŤááľá á¨áľáá˝ á˛áŤááá, á¨á°á áááľ ááľáŽá˝ á˘áá´ááśá˝á áááá á ááŁá¸á, áĽá ááá á˘áá´ááľ á¨áááŁá¸á áĽá
á áá áŤááá á˘áá´ááśá˝ áŤáá áĽáá° áŁááľáľ á¨áĽá áá áá°á
ááᢠáĽá áĽááąá ááľáááľ áŤáľáááááłá. ááá
ááľá áŤáľááááá idx_scan
. á¨áá¨á á áááá˝á ááĽá áĽáť áĽáááá¨áłáá. á˘áá´ááśá˝ á á ááťáŤá á¨á
á áá á¨áľáłá˛áľá˛ááľ áá¨ááť (á˘áŤááľ 2-3 áłáááłáľ) áá áᎠáľáŤá áŤáá¸á, á¨ááŤá á áŁá á áááá áĽááá
ááĽá á˘áá´ááśá˝ áá¸á, áĽááąá ááľáááľ ááááĽáá.
ááľáłááť: á áĽá¨áľ ááŁááľ ááááá˝ ááľáĽ áĽá á áá áŤááá á˘áá´ááśá˝á á ááááá áľ áá áááá á¨áááľá°á á áááá˝ ááá°á˝ áŤáľáááááłá ᣠááááŤáąá áľáłá˛áľá˛ááľ ááá á ááá á áá°áá, áĽá á ááá á ááłá áá áĽá á áá áŤááá, á¨ááŤá á á ááá˝ (áááľ áŤá) áĽá á áá ááá áá˝áá.
áááľ á áááá˝áĄ-
áĽá á áá áŤááá á˘áá´ááśá˝á áĽáá´áľ áááá áĽáá°ááťá áĽááá á¨áá á¨áĽáŤá ááłááá˝ áá¸áá˘
ááá°áá á ááá á áŁá á áľá°áłá˝ áĽáŤá ááᢠá ááľáĄ á áŁá ááá áŤááá á áááᎠá áᢠááááá áĽáááŤáá.
á áá¨á á áááá˝ áá áá áá ááá á áá áľ?
-
áĽá á áá áŤááá á˘áá´ááśá˝ ááĽá áá¸áá˘
-
áŚáł ááááá˘
-
á¨áááá áľáŤáá˝á áŤááá áá˘
-
ááŤáŠá á°á¨á᪠áľáŤ.
áĽá á áá áŤááá á˘áá´ááśá˝á áŤáľáááľá á¨ááἠááłáá áĽáť á¨á°áťá áĽáá°áááá.
ááŁáŠ áĽááł ááᢠpg_stat_activity
. áá
á¨áááááŤá á ááá ááᢠps
á PostgreSQL ááľáĽ áĽáťá˘ á¨áá ps
'áŚá
á á áľááá° áááá ááľáĽ áŤááľá áá°áśá˝ áľááá¨áłáá
ᣠá¨á፠pg_stat_activity
á PostgreSQL ááľáĽ áŤááá áĽáá
áľáá´ áŤáłá¨ááłáá˘
á¨á፠áá ááá°áľ áĽáá˝ááá?
select
count(*)*100/(select current_setting('max_connections')::int)
from pg_stat_activity;
á áá¨á ááą ááľáĽ áŤááá á á ááá áĽáá áľáá´ áá¨áľ áĽáá˝áááᢠá á˛áľ áá°ááŤáľ áĽáá˝áááᢠááá ááá áĽá፠áááł, á á˛áľ áááááśá˝ á°ááŁáááľ á¨áá¸áá, áľá á°áśá˝ á áá°áá áŞáŤá ááľáĽ áĽá¨áá°áą áá.
select
client_addr, usename, datname, count(*)
from pg_stat_activity group by 1,2,3 order by 4 desc;
áĽáá°áá
á áááľ áĽáŤáá áááľááľ áĽá á¨áááááśá˝á á á
áá ááśá á¨á¨áá°áá á¨áááááľ áá°áĽ á ááá áá¨áľ áĽá áá á¨á áá áááááľ áĽááłáá áá¨áľ áĽáá˝áááᢠáĽá á áá
ááłá áá á°á áááá áĽááŤáá cron_role
508 áááááśá˝á á¨ááˇá. áĽá á¨áá ááá áá áá. áĽáąá áááá áĽá áá¨áľ áŤáľáááááłáᢠáĽá áá
á ááłááľ ááááľ áŤáá°áááą á¨áááááśá˝ áĽááľ ááá áá˝ááá˘
á¨OLTP áááľ áŤááᣠáá ááá˝ ááŁáᣠá áŁá ááŁá áĽá á¨á á áá ááá˝ ááአá áááŁáᢠááá ᣠá¨á á áĽáŤááá˝ áŤá ᣠá¨á፠á á áá áá ááľáĽ ááá á¨ááŤáľá¨áá ááá á¨áá ᣠáá á á¨á á áá ááľáĽ, á¨á á áá ááá˝ á¨ááἠááłáá áááłá, á¨á á¨á´á áááŤá¨áĽ á áá¨á°áľá áľ áá á¨á á¨á´ááá˝ áĽáĽá áľá áá¨ááŤá. áááąá áĽáĽá áľ áĽá á¨á á áá ááá˝ ááááľ á ááŁá¸áá˘
select
client_addr, usename, datname,
clock_timestamp() - xact_start as xact_age,
clock_timestamp() - query_start as query_age,
query
from pg_stat_activity order by xact_start, query_start;
áĽáŁááá áŤáľá°ááᥠá áĽáá°áá
á áááľ áĽáŤá á¨á
á áĽáŤááá˝á áĽá ááĽááśá˝á áááá
áĽáá˝áááᢠá°ááŁáŠá áĽáá áááá clock_timestamp()
á¨áĽáŤáá áá áááá°á. áŤáááá¸á á¨á
á áĽáŤááá˝áŁ áááľáłááłá¸áᣠáááľáá˝áá¸á áĽáá˝ááá explain
ᣠáá
áśá˝á áááá¨áą áĽá á áá ááááľ áŤáťá˝áᢠá¨á ááá á¨á
á áĽáŤááá˝ á°áŠá°á áĽáááĽáááá˘
select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';
ááĽá ááĽááśá˝ á ááĽááľ áĽá á ááĽááľ (á á°áá¨áĄ) ááĽááśá˝ ááľáĽ áľáŤ ááľ áá¸áá˘
áá áááľ áá? ááĽááśá˝ á ááŤáł áááśá˝ á áá¸áᢠáĽá á¨ááá
áááśá˝ ááľáĽ á ááą á ááááá áá áááľáľ áá˝áá. áááá˝á áááá°á ááľá á áᢠstate
á áá
áĽááł. áĽá áááąá áááá°á áĽáá áááá.
select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';
áĽá á¨áá áĽááłááŠáľ áĽááá áááľ áááśá˝ á ááĽááľ ááľáĽ áľáŤ ááľ áĽá á ááĽááľ ááľáĽ áľáŤ ááľ (á¨á°áá¨á ) ááĽá áá¸áᢠáááľá áá? áá á áááŹá˝á ááĽááľ á¨áá°áŁ á ááłááľ áľáááśá˝á á˛áá˝á áĽá áľáŤáá á˛á°áŤ ááᢠááĽááą áááľ áĽáá°áá áááŤáᢠá°áá ááĽáá ᣠááá ááá á áá¨á°áľá ᣠáááááąá áááľáłá ᣠá á°áá¨áŠ á¨áľáá˝ áá ááááá áĽá á Porges á¨áááá áá°á áĽá ááá ááááŤáľ á ááá á¨ááá˝ á á¨á´ááá˝ áĽáĽá áľ áá¨áá áá˝ááᢠáĽá áĽáá°áá á áááľ ááĽááśá˝á áá°áŽáľ á ááŁá¸á, ááááŤáąá á á á ááá áá áá¸á, á ááááá áááł.
á ááἠááłá ááľáĽ á¨5-10-20 á áá áĽááłááľ áŤá¨á áá¨áá áĽá á¨áĽááą áá á¨áá ááá ááľá¨á áááá á ááĽá á˘
áĽáá
á°áá ááľááą áá áĽáá áááá clock_timestamp()
. ááĽááśá˝á áĽáá°áŠáłáá, á áááŹá˝áá áĽááťá˝ááá.
á¨áá áĽáá°á°ááááŠáľ áááááŤáá˝ áááľ ááá á¨á፠á áá ááĽááśá˝ áá ááľ ááá ááĄáľá ááĽáśá˝ á˛ááłá°áŠ áá. ááá
á ááł á ááᢠwaiting
á¨áŚááŤá áá áá true
ááá false
.
áĽáááľ áá - áá áááľ áá°áą áĽá¨á á á áá, á ááľ ááá áá°á¨á á áá áľ. á ááľ áá°áľ á˛á á á , á¨ááŤá áá°áąá á¨ááá¨á á°áá áá áĽá¨á á á áá. á á áłáš ááľáĽ áŤáá á°áá á á°ááጠáá áĽááá˘
ááľá ááá፠_á¨ááľáľááŹáľ 9.6 ááᎠááłá waiting
á°áááś á áááľ á°á¨á᪠áá¨á á°áŞ ááľáŽá˝ á°á°ááˇáᢠwait_event_type
и wait_event
._
áá ááľá¨á á ááĽá? áá¨á á áá áĽáááľ áŤáŠ, áĽáá°áá á áááľ áĽáŤááá˝á ááľáááľ á ááĽááľ. áĽáá°áá á áááľ ááĽááśá˝á áĽáá°áŠáłáá. áááĽáśá˝ ááľáľá áĽááłááá á áá ááááľ áááťá¸áľ áŤáá áľá áááá˘áá˝ áĽáá˝áááᢠáĽá á¨á፠áá áĽááłááá ááá˘ááš áá°áá áŞáŤáá áŤááťáťáá˘
áĽá á˝áááá ᣠáá á á°ááłáłá áá ááłá áááá áá˝ááᢠá¨áľáľ áááááŤáá˝ áá¨á°áľ. áááľ ááĽááśá˝ áááľ ááĽááśá˝á á áááááᣠá¨á፠áĽáá°áá áŤáááá¸áᣠááľááá áá° á°ááŤá ááĽáśá˝á˘ á áá ááłá áá PostgreSQL ááá ááľáŤáąá áĽáá˛ááĽá ááĽááąá áŤáą ááľáś áŤá ááᢠáá á¨áá° áá¨á¨áť áááł áá áĽá áĽáŤáˇá á áá°á¨áłá˝á. áľááá , PostgreSQL á¨áá°á áĽááááá˝á áááá°áľ ááá°áłá.
áĽá áááááŤáá˝á ááá¨áłá°á á¨ááŤáľá˝áááľ áááľ áĽáŤááá˝ áĽáá
á áᢠáĽááłáá áĽáá áááá pg_locks
, áá
á á¨áŁáľ áááááŤáá˝á ááá¨áłá°á áŤáľá˝áááłá.
áĽá á¨ááááŞáŤá á ááá á¨áĽáŤáá á˝áá áŤáą ááᢠá áŁá á¨á á ááá˘
áĽá ááá°áá áááá á áááááŤáá˝ áá áŤá á˝áá áá. áááá ἠá áá áá, á áŁá á áľá°áłá˝ áá.
áłá˛áŤ áá áĽááŤáá? áááľ áĽáŤááá˝á áĽááŤáá. áá á¨áá°á¨á ááĽááľ ALTER TABLE
áááľ ááĽááľ ááᢠá°áááŻáᣠáá á ááááᣠáĽá áá
á ááĽááľ á¨áá áá áá°áá áŞáŤ á¨áá áŚáł ááá˝ áááŽá˝á áĽáŤá°á¨á ááᢠáĽá ááá°áá áĽáŤá ááťáťáŤ áá. áĽáŤáá á¨ááá á á ááľ á°ááá á á¨á´áá áĽáľáŞá ááá
áľá¨áľ áá áĽáá.
áá ááá áĽáá°áááá áá áá áĽáá°áŤá ááá á¨ááá˝áá á áá ááááľ áá áĽá áá á á¨á áá ááľá°áááľ áĽáá˝áááá˘
á¨áááĽáá ááá ááᢠpg_stat_statements
. áĽááłááŠáľ ááá ááᢠáĽáąá ááá áá á¤á°-áá˝áááąá á áááአááľáĽ ááŤá áŤáľáááááłá ᣠPostgreSQL áĽáá°áá áŤáľááአᣠáááá ááŤá (á á ááľ áľááá) áĽá á¨á፠á á˛áľ áĽááł ááá¨ááá˘
CŃодноо вŃĐľĐźŃ ĐˇĐ°ĐżŃĐžŃĐ° в ПиНиŃокŃндаŃ
$ select (sum(total_time) / sum(calls))::numeric(6,3)
from pg_stat_statements;
ĐĄĐ°ĐźŃĐľ Đ°ĐşŃивнО пиŃŃŃио (в shared_buffers) СапŃĐžŃŃ
$ select query, shared_blks_dirtied
from pg_stat_statements
where shared_blks_dirtied > 0 order by 2 desc;
á¨á፠áá ááá°áľ áĽáá˝ááá? áľá ááá áááŽá˝ á¨á°ááááá, á ááŤá á¨áá ááá á¨ááľáá¸á፠áá ááááľáľ áĽáá˝ááá. ááá áĽáŤá°á áá, áá áááľ PostgreSQL ááľ á ááľ ááá˝ áĽá¨á°á áá áĽá á ááľ ááá áá°á¨á á áá áľ.
á á፠ááľ ááľáĽ áŤá áá¨ááá˝á á¨áááአá áŁá áá á¨á˝áá ááĽááśá˝á á áá¨á ááą ááľáĽ áá¨áľ áĽáá˝áááᢠáá áĽá፠ááἠáĽáá°ááŤááá ááá áĽáá°áá°áá áááá¨áąá˘
áĽá ááĽááá áĽáŤááá˝ á¨á°ááŤáŠ áľáłá˛áľá˛ááľá áĽáť áá¨áľ áĽáá˝áááá˘
áĽá áá pg_stat_statements
áŞáááśá˝á áááááŁáľ áŤááááá. á áá á ááľ áá áľáłá˛áľá˛ááľá áĽáá°áá áĽááľáááŤáá. áĽáá¨ááťáᢠá áááĽáá áá áľáłá˛áľá˛ááľá áłáá á¨ááľáááá á ááľáŁ áŞáááľ áĽááááŁááᢠá¨áŞáááą áááá áĽááᢠáááá¨áąáľ áá˝áá.
áá áĽá¨á°áŤá áá? á¨ááá áĽáŤááá˝ á á ááá áľáłá˛áľá˛ááľá áĽáá°áááᢠá¨ááŤáŁ ááĽáŤááłááą áĽáŤáᣠááá ââá á ááá áľáłá˛áľá˛ááľ ááá á áľá°ááž áĽáááĽáŤááá˘
áĽá áá áá¨áľ áĽáá˝ááá? á¨á ááľ á¨á°áá°á á áááľ á¨ááá áĽáŤááá˝ á á ááá á¨á áááá áá á¨ááá˝ áĽáŤááá˝ áłáŤ á ááťá áá¨áľ áĽáá˝áááᢠá¨á á ááá ááľá áá á á°ááá á¨á˛áአáĽá á¨á á/ጠá á áááá áááá¨áľ áĽáá˝áááᢠáĽá áĽááá á áĽáŤááá˝ ááááťá¸áľá˘ á áá áŞáááľ áá á°ááľáá°á á¨áá°á áá ááá˝á áĽá¨áááŁá áá áĽá áá áááťá¸áľ áĽááłááĽá á áľááľá ááá°áĽ ááἠáĽáŤááá ááá˘
á¨ááá¨á ááᣠáá á áá? á ááá áŤáá°áĽáłá¸á áĽááľ áá á¨á˘áŤáá˝ á áᣠááááŤáąá áá ááľá ááá˘
á á pgstattuple
á¨áá°á á ááᎠáĽá
á á°á¨á᪠ááá ááᢠáĽáá˛áááá áŤáľá˝áááłá bloat
á á¨á´ááá˝, á¨ááŁááľ. á¨á á¨á´á áááĽáŤá. áĽá áááŤá¨áĄ áľáá
á¨áá, ááľáááľ áŤáľáááááłá, á¨á°ááŤáŠ ááłáŞáŤáá˝á áá áá. áĽá á°ááŁá pgstattuple
áá¨á
á áá áá°áŤá. áĽá áĽá á á¨á´ááá˝, á¨áá áŤá áá áá°áŤá.
á¨áááĽáá á áľá°áá
á ááᢠpg_buffercache
. á¨á°áአááá¨áŤáá˝á áááá°á˝ ááá
áľáááłá-áá áŤá
á á¨á°á áá¨á¨ áĽá áá¨áľááš á¨á á¨á´ááá˝ ááľ áážá˝ áĽá
á áá ááááᢠáĽá áá° á¨á°áአááśá˝ áĽáá˛ááá¨áą áĽá áĽá፠áá áĽá¨á°áá ᨠáĽááłá áĽáá˛áááá ááá
áľáááłáá˘
á¨áááĽáá ááá ááᢠpgfincore
. á áľáááľ áĽáŞ á ááŤáááľ áá
á°á á°á¨á á¨á á¨á´á áľáŤáá˝á áĽáá˛áŤá¨ááá ááá
áľáááłá mincore()
, áááľá á°áá á¨áĄá áá° á¨á፠ááśá˝ áĽáá˛áááľ ááá áĽáá˛áááľ ááá
áľáááłá. áĽá á¨ááá˝ áááŽá˝ á á°á¨á᪠á¨áľááá° ááááá á¨áá˝ áá¸á፠áááá°á˝ áŤáľá˝áá, áááľá, á°áá á¨áĄ á ááš áá¸á፠ááľáĽ, á á፠ááŤáŁáá˝ ááľáĽ áá áŤá
á áĽáá°ááá áĽá á ááá á á á¨á´áá áá áŤááá áááľ áĽáá˛áááá áŤáľá˝áááłá.
á¨áááĽáá ááá ááᢠpg_stat_kcache
. á¨áľáááľ áĽáŞáá áá ááá getrusage()
. áĽá áĽáŤáá á¨ááá¸á á ááľ áĽá á áá áŤáľáá˝áá. áĽá á á°ááá áľáłá˛áľá˛ááľ ááľáĽ, áĽáŤááŤá˝á á á˛áľá I / O áá áá áŤá
á áĽáá°ááŤá á áááááľ áŤáľá˝ááá, áááľá, á¨ááá áľáááą áá á¨áá°áŠ áľáŤáá˝ áĽá á¨á áááŁáŁáŞáá á á ááá áĽáááá¨áłáá. ááá ááá ááŁáľ áá (khe-khe) áĽá ááľáŤá áá°á á˛á á¨á ááľáłá¸áá PostgreSQL 9.4 áĽá pg_stat_statements áŤáľáááááá˘
-
áľáłá˛áľá˛ááľá á¨áá áá á˝ááł á áá áá. á¨áśáľá°á ááá áśááľáá á áŤáľáááááľáᢠáá¨áľáŁ áá¨áľáŁ á¨áá ááá ááľá¨áᣠáá¨ááá áľá˝ááá á˘
-
áľáłá˛áľá˛ááľá áá áá ááá ááᣠááá˝ SQL ááᢠáĽáŤá á°áĽáľá á ᣠá á áá á¨á ᣠáá¨á ᣠá°ááá¨áľá¨áá˘
-
áľáłá˛áľá˛ááľ áĽáŤááá˝á áááááľ áá¨áłáᢠáĽáŤááá˝ áŤáááľ áá° áľáłá˛áľá˛ááľ ááááłá - áááá¨áą, áá°áá°á፠ááłá, áá¤áąá áá°ááľá.
-
áĽá áá¨áŤá˘ áĽá áĽáŤááá˝áŁ áĽá áááĽá˘ á ááłááľ ááŁá áĽáŤááá˝á áááá áááťá¸áľ áá˝ááᢠá¨ááá á¨á áá á¨ááľááááľá á¨áĽáŤááá á¨áĽáŤáľáá áĽáľá ááľáŤáľ áĽá áá áá áá˝ááá˘
ááŁááťáá˝
á á˝áá ááľáĽ á¨á°áá áľáááá á áááá˝áŁ á á¨áľááš áá á°ááľáá°á á áŞáááą ááľáĽ áá áŠá˘
á°áŤá˛ á¨á áá áťá
á¨áľáłá˛áľá˛ááľ á°áĽáłá˘á
á¨áľáááľ á áľá°áłá°á á°ááŁáŤáľ
á¨á áľá°áá˝áŚ áááá˝
ᨠSQL áááááŤáá˝ áĽá sql áŽáľ ááłááá˝
áľá áľáŠá¨áľá ááá˝ááá á áá°áááá!
ááá: hab.com