SlideShare a Scribd company logo
Êàê PostgreSQL ðàáîòàåò ñ äèñêîì 
Èëüÿ Êîñìîäåìüÿíñêèé 
ik@postgresql-consulting.com
Ïëàí 
 Çà÷åì áàçå äèñê? 
 ×òî îñîáåííîãî â ðàáîòå ñ äèñêîì ó PostgreSQL? 
 Ïîòåíöèàëüíûå óçêèå ìåñòà 
 Ìîíèòîðèíã äèñêîâîé íàãðóçêè 
 Âûáîð àïïàðàòíîãî îáåñïå÷åíèÿ äëÿ ñåðâåðà ñ PostgreSQL 
 Íàñòðîéêà
Çà÷åì áàçå äèñê? 
 ×èòàòü ñòðàíèöû ñ äèñêà 
 Ïèñàòü Write Ahead Log (WAL) 
 Ñèíõðîíèçèðîâàòü WAL ñ õðàíèëèùåì (CHECKPOINT)
Çà÷åì áàçå äèñê? 
 ×èòàòü ñòðàíèöû ñ äèñêà 
 Ïèñàòü Write Ahead Log (WAL) 
 Ñèíõðîíèçèðîâàòü WAL ñ õðàíèëèùåì (CHECKPOINT) 
Ñïåöèôèêà PostgreSQL 
 autovacuum 
 pg_clog 
 tmp, äèñêîâûå ñîðòèðîâêè, õýøèðîâàíèå
Çà÷åì áàçå äèñê? 
 ×èòàòü ñòðàíèöû ñ äèñêà 
 Ïèñàòü Write Ahead Log (WAL) 
 Ñèíõðîíèçèðîâàòü WAL ñ õðàíèëèùåì (CHECKPOINT) 
Ñïåöèôèêà PostgreSQL 
 autovacuum 
 pg_clog 
 tmp, äèñêîâûå ñîðòèðîâêè, õýøèðîâàíèå
Æèçíåííûé öèêë ñòðàíèöû â PostgreSQL 
shared_buers 
l 
êýø ÎÑ 
l 
äèñêè
Checkpoint 
Äëÿ ÷åãî íóæåí? 
 ×èñòûåñòðàíèöû ïîäíèìàþòñÿâ shared_buers, åñëè õîòü îäèí tuple 
èçìåíèëñÿ, ñòðàíèöà ïîìå÷àåòñÿ êàê ãðÿçíàÿ 
 COMMIT; íå âîçâðàùàåò óïðàâëåíèÿ, ïîêà ñòðàíèöà íå çàïèñàíà â WAL 
 Âðåìÿ îò âðåìåíè ïðîèñõîäèò CHECKPOINT: ãðÿçíûå ñòðàíèöû èç 
shared_buers ïèøóòñÿ íà äèñê (fsync) 
 Ïðè áîëüøèõ çíà÷åíèÿõ shared_buers âîçíèêàþò ïðîáëåìû
Checkpoint 
Äèàãíîñòèêà 
 Âñïëåñêè íà ìîíèòîðèíãå äèñêîâîé óòèëèçàöèè (iostat -d -x 1, ïîñëåäíÿÿ 
êîëîíêà, %util) 
 pg_stat_bgwriter
pg_stat_bgwriter 
pgbench=# select * from pg_stat_bgwriter ; 
-[ RECORD 1 ]---------+------------------------------ 
checkpoints_timed | 29 
checkpoints_req | 13 
checkpoint_write_time | 206345 
checkpoint_sync_time | 9989 
buffers_checkpoint | 67720 
buffers_clean | 1046 
maxwritten_clean | 0 
buffers_backend | 48142 
buffers_backend_fsync | 0 
buffers_alloc | 30137 
stats_reset | 2014-10-24 17:59:15.812002-04 
postgres=# select pg_stat_reset_shared(’bgwriter’); 
-[ RECORD 1 ]--------+- 
pg_stat_reset_shared |
×òî äåëàòü? 
Hardware: RAID 
 Äåøåâûé RAID êîíòðîëëåð - çëî, óæ ëó÷øå software RAID 
 RAID êîíòðîëëåð äîëæåí áûòü ñ áàòàðåéêîé 
 Ïðîèçâîäèòåëè: megaraid èëè perc - OK, à íàïðèìåð HP èëè ARECA - íå 
âñåãäà 
 Áàòàðåéêà - ïðèñóòñòâóåò è èñïðàâíà 
 cache mode ! write back 
 io mode ! direct 
 Disk Write Cache Mode ! disabled
×òî äåëàòü? 
Hardware: Äèñêè 
 2,5SAS (âïîëíå áûâàåò 15K) - seek â 2-3 ðàçà áûñòðåå ÷åì 3,5 
 Íå âñå SSD îäèíàêîâî ïîëåçíû: enterprise level Intel p3700 vs desktop-level 
Samsung 
 Èñïîëüçîâàòü òîëüêî SSD äëÿ PostgreSQL îçíà÷àåò áûòü ãîòîâûìè ê ðÿäó 
ïðîáëåì 
 RAID 1+0 
 Eñëè íåò õîðîøèõ äèñêîâ èëè êîíòðîëëåðà - synchronous_commit ! o
×òî äåëàòü? 
Ôàéëîâàÿ ñèñòåìà 
 xfs èëè ext4 - ÎÊ, zfs è ïðî÷èå lvm - íå ïðî ïðîèçâîäèòåëüíîñòü 
 barrier=0, noatime
×òî äåëàòü? 
Îïåðàöèîííàÿ ñèñòåìà 
 Ïî óìîë÷àíèþ vm:dirty_ratio = 20 vm:dirty_background_ratio = 10 - ïëîõî 
 Áîëåå ðàçóìíûå çíà÷åíèÿ vm:dirty_background_bytes = 67108864 
vm:dirty_bytes = 536870912 (512Mb êýø íà RAID) 
 Åñëè íåò êýøà íà RAID - ðàçäåëèòü íà 4
×òî äåëàòü? 
postgresql.conf 
 wal_buers (768kB ! 16Mb) 
 checkpoint_segments (3 - ÷åêïîéíò êàæäûå 48Mb ! 256 - 4Gb) 
 checkpoint_timeout = 60 (÷òî ïåðâîå íàñòóïèò) 
 checkpoint_completion_target = 0:9 (äëÿ ðàñïðåäåëåíèÿ ÷åêïîéíòîâ)
Êàê ñåáÿ ïðîâåðèòü? 
pgdev@pg-dev-deb:~$ tt_pg/bin/pg_test_fsync 
5 seconds per test 
O_DIRECT supported on this platform for open_datasync and open_sync. 
Compare file sync methods using one 8kB write: 
(in wal_sync_method preference order, except fdatasync 
is Linux’s default) 
open_datasync 11396.056 ops/sec 88 usecs/op 
fdatasync 11054.894 ops/sec 90 usecs/op 
fsync 10692.608 ops/sec 94 usecs/op 
fsync_writethrough n/a 
open_sync 67.045 ops/sec 14915 usecs/op 
Compare file sync methods using two 8kB writes: 
(in wal_sync_method preference order, except fdatasync
Íåáîëüøàÿ õèòðîñòü: ïóñòü bgwriter ðàáîòàåò 
postgres=# select name, setting, context, max_val, min_val from pg_settings where name ~ ’bgwr’; 
name | setting | context | max_val | min_val 
-------------------------+---------+---------+---------+--------- 
bgwriter_delay | 200 | sighup | 10000 | 10 
bgwriter_lru_maxpages | 100 | sighup | 1000 | 0 
bgwriter_lru_multiplier | 2 | sighup | 10 | 0 
(3 rows)
Ïðî ÷òî íå çàáûòü: autovacuum 
postgres=# select name, setting, context from pg_settings where category ~ ’Autovacuum’; 
name | setting | context 
-------------------------------------+-----------+------------ 
autovacuum | on | sighup 
autovacuum_analyze_scale_factor | 0.02 | sighup 
autovacuum_analyze_threshold | 50 | sighup 
autovacuum_freeze_max_age | 200000000 | postmaster 
autovacuum_max_workers | 3 | postmaster 
autovacuum_multixact_freeze_max_age | 400000000 | postmaster 
autovacuum_naptime | 60 | sighup 
autovacuum_vacuum_cost_delay | 20 | sighup 
autovacuum_vacuum_cost_limit | -1 | sighup 
autovacuum_vacuum_scale_factor | 0.001 | sighup 
autovacuum_vacuum_threshold | 50 | sighup 
(11 rows)
Âîïðîñû? 
ik@postgresql-consulting.com

More Related Content

PDF
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
PostgreSQL-Consulting
 
PDF
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 Vienna
PostgreSQL-Consulting
 
PDF
Tuning Linux for Databases.
Alexey Lesovsky
 
PDF
GitLab PostgresMortem: Lessons Learned
Alexey Lesovsky
 
PDF
Streaming replication in practice
Alexey Lesovsky
 
PDF
PostgreSQL Streaming Replication Cheatsheet
Alexey Lesovsky
 
PDF
Out of the box replication in postgres 9.4
Denish Patel
 
PDF
PostgreSQL and RAM usage
Alexey Bashtanov
 
How does PostgreSQL work with disks: a DBA's checklist in detail. PGConf.US 2015
PostgreSQL-Consulting
 
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 Vienna
PostgreSQL-Consulting
 
Tuning Linux for Databases.
Alexey Lesovsky
 
GitLab PostgresMortem: Lessons Learned
Alexey Lesovsky
 
Streaming replication in practice
Alexey Lesovsky
 
PostgreSQL Streaming Replication Cheatsheet
Alexey Lesovsky
 
Out of the box replication in postgres 9.4
Denish Patel
 
PostgreSQL and RAM usage
Alexey Bashtanov
 

What's hot (20)

PDF
PostgreSQL Replication Tutorial
Hans-Jürgen Schönig
 
PDF
PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016
Tomas Vondra
 
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
ODP
Shootout at the PAAS Corral
PostgreSQL Experts, Inc.
 
PDF
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
Alexey Lesovsky
 
PDF
PostgreSQL WAL for DBAs
PGConf APAC
 
PDF
Pgbr 2013 postgres on aws
Emanuel Calvo
 
PDF
In-core compression: how to shrink your database size in several times
Aleksander Alekseev
 
ODP
GUC Tutorial Package (9.0)
PostgreSQL Experts, Inc.
 
ODP
PostgreSQL Replication in 10 Minutes - SCALE
PostgreSQL Experts, Inc.
 
PDF
Troubleshooting PostgreSQL with pgCenter
Alexey Lesovsky
 
PDF
Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...
PostgreSQL-Consulting
 
ODP
Logical replication with pglogical
Umair Shahid
 
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
ODP
Shootout at the AWS Corral
PostgreSQL Experts, Inc.
 
PDF
Deep dive into PostgreSQL statistics.
Alexey Lesovsky
 
PDF
Out of the box replication in postgres 9.4(pg confus)
Denish Patel
 
PDF
Troubleshooting PostgreSQL Streaming Replication
Alexey Lesovsky
 
KEY
PostgreSQL
Reuven Lerner
 
PDF
Patroni - HA PostgreSQL made easy
Alexander Kukushkin
 
PostgreSQL Replication Tutorial
Hans-Jürgen Schönig
 
PostgreSQL na EXT4, XFS, BTRFS a ZFS / FOSDEM PgDay 2016
Tomas Vondra
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico
 
Shootout at the PAAS Corral
PostgreSQL Experts, Inc.
 
PostgreSQL Troubleshoot On-line, (RITfest 2015 meetup at Moscow, Russia).
Alexey Lesovsky
 
PostgreSQL WAL for DBAs
PGConf APAC
 
Pgbr 2013 postgres on aws
Emanuel Calvo
 
In-core compression: how to shrink your database size in several times
Aleksander Alekseev
 
GUC Tutorial Package (9.0)
PostgreSQL Experts, Inc.
 
PostgreSQL Replication in 10 Minutes - SCALE
PostgreSQL Experts, Inc.
 
Troubleshooting PostgreSQL with pgCenter
Alexey Lesovsky
 
Ilya Kosmodemiansky - An ultimate guide to upgrading your PostgreSQL installa...
PostgreSQL-Consulting
 
Logical replication with pglogical
Umair Shahid
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico
 
Shootout at the AWS Corral
PostgreSQL Experts, Inc.
 
Deep dive into PostgreSQL statistics.
Alexey Lesovsky
 
Out of the box replication in postgres 9.4(pg confus)
Denish Patel
 
Troubleshooting PostgreSQL Streaming Replication
Alexey Lesovsky
 
PostgreSQL
Reuven Lerner
 
Patroni - HA PostgreSQL made easy
Alexander Kukushkin
 
Ad

Viewers also liked (19)

PDF
Linux internals for Database administrators at Linux Piter 2016
PostgreSQL-Consulting
 
PDF
Как PostgreSQL работает с диском, Илья Космодемьянский (PostgreSQL-Consulting)
Ontico
 
PDF
Максим Богук. Postgres-XC
PostgreSQL-Consulting
 
PDF
Kosmodemiansky wr 2013
PostgreSQL-Consulting
 
PDF
Иван Фролков. Tricky SQL
PostgreSQL-Consulting
 
PDF
Илья Космодемьянский. Использование очередей асинхронных сообщений с PostgreSQL
PostgreSQL-Consulting
 
PDF
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Nikolay Samokhvalov
 
PDF
Infrastructure Monitoring with Postgres
Steven Simpson
 
PDF
PostgreSQL Meetup Berlin at Zalando HQ
PostgreSQL-Consulting
 
PDF
Pgconfru 2015 kosmodemiansky
PostgreSQL-Consulting
 
PDF
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Badoo Development
 
PDF
"Выбраться из спама - как повысить CTR рассылки без потери активности". Андре...
Badoo Development
 
PDF
10 things, an Oracle DBA should care about when moving to PostgreSQL
PostgreSQL-Consulting
 
PDF
Приём платежей в Badoo - взгляд изнутри, Анатолий Панов (Badoo)
Badoo Development
 
PPTX
"Sharding - patterns & antipatterns". Доклад Алексея Рыбака (Badoo) и Констан...
Badoo Development
 
PDF
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Badoo Development
 
PDF
Docker & Puppet - как их скрестить и надо ли вам это, Антон Турецкий (Badoo)
Badoo Development
 
PDF
Linux tuning to improve PostgreSQL performance
PostgreSQL-Consulting
 
PDF
PostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya Kosmodemiansky
PostgreSQL-Consulting
 
Linux internals for Database administrators at Linux Piter 2016
PostgreSQL-Consulting
 
Как PostgreSQL работает с диском, Илья Космодемьянский (PostgreSQL-Consulting)
Ontico
 
Максим Богук. Postgres-XC
PostgreSQL-Consulting
 
Kosmodemiansky wr 2013
PostgreSQL-Consulting
 
Иван Фролков. Tricky SQL
PostgreSQL-Consulting
 
Илья Космодемьянский. Использование очередей асинхронных сообщений с PostgreSQL
PostgreSQL-Consulting
 
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6
Nikolay Samokhvalov
 
Infrastructure Monitoring with Postgres
Steven Simpson
 
PostgreSQL Meetup Berlin at Zalando HQ
PostgreSQL-Consulting
 
Pgconfru 2015 kosmodemiansky
PostgreSQL-Consulting
 
Облако в Badoo год спустя - работа над ошибками, Юрий Насретдинов (Badoo)
Badoo Development
 
"Выбраться из спама - как повысить CTR рассылки без потери активности". Андре...
Badoo Development
 
10 things, an Oracle DBA should care about when moving to PostgreSQL
PostgreSQL-Consulting
 
Приём платежей в Badoo - взгляд изнутри, Анатолий Панов (Badoo)
Badoo Development
 
"Sharding - patterns & antipatterns". Доклад Алексея Рыбака (Badoo) и Констан...
Badoo Development
 
Использование Hadoop в Badoo, Валерий Старынин (Badoo)
Badoo Development
 
Docker & Puppet - как их скрестить и надо ли вам это, Антон Турецкий (Badoo)
Badoo Development
 
Linux tuning to improve PostgreSQL performance
PostgreSQL-Consulting
 
PostgreSQL worst practices, version FOSDEM PGDay 2017 by Ilya Kosmodemiansky
PostgreSQL-Consulting
 
Ad

Similar to Как PostgreSQL работает с диском (20)

PDF
Filesystem Performance from a Database Perspective
Mark Wong
 
PDF
20150918 klug el performance tuning-v1.4
Jinkoo Han
 
PDF
제2회난공불락 오픈소스 세미나 커널튜닝
Tommy Lee
 
PDF
[CONFidence 2016] Dmitry Chastuhin, Dmitry Yudin - SAP, dos, dos, race condi...
PROIDEA
 
PDF
Best Practices with PostgreSQL on Solaris
Jignesh Shah
 
ODP
Nagios Conference 2011 - Daniel Wittenberg - Scaling Nagios At A Giant Insur...
Nagios
 
PDF
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
Aleksander Alekseev
 
KEY
Grabbing the PostgreSQL Elephant by the Trunk
Harold Giménez
 
ODP
Ceph Day Melbourne - Troubleshooting Ceph
Ceph Community
 
PDF
Optimizing, profiling and deploying high performance Spark ML and TensorFlow ...
DataWorks Summit
 
ODP
Pro PostgreSQL, OSCon 2008
Robert Treat
 
PPTX
Deep dive into the Rds PostgreSQL Universe Austin 2017
Grant McAlister
 
PDF
Optimize + Deploy Distributed Tensorflow, Spark, and Scikit-Learn Models on GPUs
Chris Fregly
 
PDF
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam
 
PPTX
Эксплуатируем неэксплуатируемые уязвимости SAP
Positive Hack Days
 
PPTX
Getting access to the SAP server via SAP Management Console
Dmitry Iudin
 
PDF
2015.07.16 Способы диагностики PostgreSQL
dev1ant
 
ODP
Caching and tuning fun for high scalability
Wim Godden
 
PDF
High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...
Chris Fregly
 
PDF
Useful PostgreSQL Extensions
EDB
 
Filesystem Performance from a Database Perspective
Mark Wong
 
20150918 klug el performance tuning-v1.4
Jinkoo Han
 
제2회난공불락 오픈소스 세미나 커널튜닝
Tommy Lee
 
[CONFidence 2016] Dmitry Chastuhin, Dmitry Yudin - SAP, dos, dos, race condi...
PROIDEA
 
Best Practices with PostgreSQL on Solaris
Jignesh Shah
 
Nagios Conference 2011 - Daniel Wittenberg - Scaling Nagios At A Giant Insur...
Nagios
 
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
Aleksander Alekseev
 
Grabbing the PostgreSQL Elephant by the Trunk
Harold Giménez
 
Ceph Day Melbourne - Troubleshooting Ceph
Ceph Community
 
Optimizing, profiling and deploying high performance Spark ML and TensorFlow ...
DataWorks Summit
 
Pro PostgreSQL, OSCon 2008
Robert Treat
 
Deep dive into the Rds PostgreSQL Universe Austin 2017
Grant McAlister
 
Optimize + Deploy Distributed Tensorflow, Spark, and Scikit-Learn Models on GPUs
Chris Fregly
 
PGDay.Amsterdam 2018 - Stefan Fercot - Save your data with pgBackRest
PGDay.Amsterdam
 
Эксплуатируем неэксплуатируемые уязвимости SAP
Positive Hack Days
 
Getting access to the SAP server via SAP Management Console
Dmitry Iudin
 
2015.07.16 Способы диагностики PostgreSQL
dev1ant
 
Caching and tuning fun for high scalability
Wim Godden
 
High Performance Distributed TensorFlow with GPUs - TensorFlow Chicago Meetup...
Chris Fregly
 
Useful PostgreSQL Extensions
EDB
 

Recently uploaded (20)

PDF
49785682629390197565_LRN3014_Migrating_the_Beast.pdf
Abilash868456
 
PDF
New Download FL Studio Crack Full Version [Latest 2025]
imang66g
 
PPTX
Presentation about Database and Database Administrator
abhishekchauhan86963
 
PDF
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
PDF
Protecting the Digital World Cyber Securit
dnthakkar16
 
PPTX
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
PDF
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
DOCX
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
PDF
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
PDF
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
PDF
Salesforce Implementation Services Provider.pdf
VALiNTRY360
 
PPTX
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
PDF
An Experience-Based Look at AI Lead Generation Pricing, Features & B2B Results
Thomas albart
 
PPTX
Maximizing Revenue with Marketo Measure: A Deep Dive into Multi-Touch Attribu...
bbedford2
 
PDF
On Software Engineers' Productivity - Beyond Misleading Metrics
Romén Rodríguez-Gil
 
PDF
Exploring AI Agents in Process Industries
amoreira6
 
PPTX
The-Dawn-of-AI-Reshaping-Our-World.pptxx
parthbhanushali307
 
PDF
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
PDF
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
ESUG
 
49785682629390197565_LRN3014_Migrating_the_Beast.pdf
Abilash868456
 
New Download FL Studio Crack Full Version [Latest 2025]
imang66g
 
Presentation about Database and Database Administrator
abhishekchauhan86963
 
Applitools Platform Pulse: What's New and What's Coming - July 2025
Applitools
 
Protecting the Digital World Cyber Securit
dnthakkar16
 
Web Testing.pptx528278vshbuqffqhhqiwnwuq
studylike474
 
49784907924775488180_LRN2959_Data_Pump_23ai.pdf
Abilash868456
 
Can You Build Dashboards Using Open Source Visualization Tool.docx
Varsha Nayak
 
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
Generating Union types w/ Static Analysis
K. Matthew Dupree
 
Salesforce Implementation Services Provider.pdf
VALiNTRY360
 
GALILEO CRS SYSTEM | GALILEO TRAVEL SOFTWARE
philipnathen82
 
An Experience-Based Look at AI Lead Generation Pricing, Features & B2B Results
Thomas albart
 
Maximizing Revenue with Marketo Measure: A Deep Dive into Multi-Touch Attribu...
bbedford2
 
On Software Engineers' Productivity - Beyond Misleading Metrics
Romén Rodríguez-Gil
 
Exploring AI Agents in Process Industries
amoreira6
 
The-Dawn-of-AI-Reshaping-Our-World.pptxx
parthbhanushali307
 
WatchTraderHub - Watch Dealer software with inventory management and multi-ch...
WatchDealer Pavel
 
vAdobe Premiere Pro 2025 (v25.2.3.004) Crack Pre-Activated Latest
imang66g
 
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
ESUG
 

Как PostgreSQL работает с диском

  • 1. Êàê PostgreSQL ðàáîòàåò ñ äèñêîì Èëüÿ Êîñìîäåìüÿíñêèé [email protected]
  • 2. Ïëàí Çà÷åì áàçå äèñê? ×òî îñîáåííîãî â ðàáîòå ñ äèñêîì ó PostgreSQL? Ïîòåíöèàëüíûå óçêèå ìåñòà Ìîíèòîðèíã äèñêîâîé íàãðóçêè Âûáîð àïïàðàòíîãî îáåñïå÷åíèÿ äëÿ ñåðâåðà ñ PostgreSQL Íàñòðîéêà
  • 3. Çà÷åì áàçå äèñê? ×èòàòü ñòðàíèöû ñ äèñêà Ïèñàòü Write Ahead Log (WAL) Ñèíõðîíèçèðîâàòü WAL ñ õðàíèëèùåì (CHECKPOINT)
  • 4. Çà÷åì áàçå äèñê? ×èòàòü ñòðàíèöû ñ äèñêà Ïèñàòü Write Ahead Log (WAL) Ñèíõðîíèçèðîâàòü WAL ñ õðàíèëèùåì (CHECKPOINT) Ñïåöèôèêà PostgreSQL autovacuum pg_clog tmp, äèñêîâûå ñîðòèðîâêè, õýøèðîâàíèå
  • 5. Çà÷åì áàçå äèñê? ×èòàòü ñòðàíèöû ñ äèñêà Ïèñàòü Write Ahead Log (WAL) Ñèíõðîíèçèðîâàòü WAL ñ õðàíèëèùåì (CHECKPOINT) Ñïåöèôèêà PostgreSQL autovacuum pg_clog tmp, äèñêîâûå ñîðòèðîâêè, õýøèðîâàíèå
  • 6. Æèçíåííûé öèêë ñòðàíèöû â PostgreSQL shared_buers l êýø ÎÑ l äèñêè
  • 7. Checkpoint Äëÿ ÷åãî íóæåí? ×èñòûåñòðàíèöû ïîäíèìàþòñÿâ shared_buers, åñëè õîòü îäèí tuple èçìåíèëñÿ, ñòðàíèöà ïîìå÷àåòñÿ êàê ãðÿçíàÿ COMMIT; íå âîçâðàùàåò óïðàâëåíèÿ, ïîêà ñòðàíèöà íå çàïèñàíà â WAL Âðåìÿ îò âðåìåíè ïðîèñõîäèò CHECKPOINT: ãðÿçíûå ñòðàíèöû èç shared_buers ïèøóòñÿ íà äèñê (fsync) Ïðè áîëüøèõ çíà÷åíèÿõ shared_buers âîçíèêàþò ïðîáëåìû
  • 8. Checkpoint Äèàãíîñòèêà Âñïëåñêè íà ìîíèòîðèíãå äèñêîâîé óòèëèçàöèè (iostat -d -x 1, ïîñëåäíÿÿ êîëîíêà, %util) pg_stat_bgwriter
  • 9. pg_stat_bgwriter pgbench=# select * from pg_stat_bgwriter ; -[ RECORD 1 ]---------+------------------------------ checkpoints_timed | 29 checkpoints_req | 13 checkpoint_write_time | 206345 checkpoint_sync_time | 9989 buffers_checkpoint | 67720 buffers_clean | 1046 maxwritten_clean | 0 buffers_backend | 48142 buffers_backend_fsync | 0 buffers_alloc | 30137 stats_reset | 2014-10-24 17:59:15.812002-04 postgres=# select pg_stat_reset_shared(’bgwriter’); -[ RECORD 1 ]--------+- pg_stat_reset_shared |
  • 10. ×òî äåëàòü? Hardware: RAID Äåøåâûé RAID êîíòðîëëåð - çëî, óæ ëó÷øå software RAID RAID êîíòðîëëåð äîëæåí áûòü ñ áàòàðåéêîé Ïðîèçâîäèòåëè: megaraid èëè perc - OK, à íàïðèìåð HP èëè ARECA - íå âñåãäà Áàòàðåéêà - ïðèñóòñòâóåò è èñïðàâíà cache mode ! write back io mode ! direct Disk Write Cache Mode ! disabled
  • 11. ×òî äåëàòü? Hardware: Äèñêè 2,5SAS (âïîëíå áûâàåò 15K) - seek â 2-3 ðàçà áûñòðåå ÷åì 3,5 Íå âñå SSD îäèíàêîâî ïîëåçíû: enterprise level Intel p3700 vs desktop-level Samsung Èñïîëüçîâàòü òîëüêî SSD äëÿ PostgreSQL îçíà÷àåò áûòü ãîòîâûìè ê ðÿäó ïðîáëåì RAID 1+0 Eñëè íåò õîðîøèõ äèñêîâ èëè êîíòðîëëåðà - synchronous_commit ! o
  • 12. ×òî äåëàòü? Ôàéëîâàÿ ñèñòåìà xfs èëè ext4 - ÎÊ, zfs è ïðî÷èå lvm - íå ïðî ïðîèçâîäèòåëüíîñòü barrier=0, noatime
  • 13. ×òî äåëàòü? Îïåðàöèîííàÿ ñèñòåìà Ïî óìîë÷àíèþ vm:dirty_ratio = 20 vm:dirty_background_ratio = 10 - ïëîõî Áîëåå ðàçóìíûå çíà÷åíèÿ vm:dirty_background_bytes = 67108864 vm:dirty_bytes = 536870912 (512Mb êýø íà RAID) Åñëè íåò êýøà íà RAID - ðàçäåëèòü íà 4
  • 14. ×òî äåëàòü? postgresql.conf wal_buers (768kB ! 16Mb) checkpoint_segments (3 - ÷åêïîéíò êàæäûå 48Mb ! 256 - 4Gb) checkpoint_timeout = 60 (÷òî ïåðâîå íàñòóïèò) checkpoint_completion_target = 0:9 (äëÿ ðàñïðåäåëåíèÿ ÷åêïîéíòîâ)
  • 15. Êàê ñåáÿ ïðîâåðèòü? pgdev@pg-dev-deb:~$ tt_pg/bin/pg_test_fsync 5 seconds per test O_DIRECT supported on this platform for open_datasync and open_sync. Compare file sync methods using one 8kB write: (in wal_sync_method preference order, except fdatasync is Linux’s default) open_datasync 11396.056 ops/sec 88 usecs/op fdatasync 11054.894 ops/sec 90 usecs/op fsync 10692.608 ops/sec 94 usecs/op fsync_writethrough n/a open_sync 67.045 ops/sec 14915 usecs/op Compare file sync methods using two 8kB writes: (in wal_sync_method preference order, except fdatasync
  • 16. Íåáîëüøàÿ õèòðîñòü: ïóñòü bgwriter ðàáîòàåò postgres=# select name, setting, context, max_val, min_val from pg_settings where name ~ ’bgwr’; name | setting | context | max_val | min_val -------------------------+---------+---------+---------+--------- bgwriter_delay | 200 | sighup | 10000 | 10 bgwriter_lru_maxpages | 100 | sighup | 1000 | 0 bgwriter_lru_multiplier | 2 | sighup | 10 | 0 (3 rows)
  • 17. Ïðî ÷òî íå çàáûòü: autovacuum postgres=# select name, setting, context from pg_settings where category ~ ’Autovacuum’; name | setting | context -------------------------------------+-----------+------------ autovacuum | on | sighup autovacuum_analyze_scale_factor | 0.02 | sighup autovacuum_analyze_threshold | 50 | sighup autovacuum_freeze_max_age | 200000000 | postmaster autovacuum_max_workers | 3 | postmaster autovacuum_multixact_freeze_max_age | 400000000 | postmaster autovacuum_naptime | 60 | sighup autovacuum_vacuum_cost_delay | 20 | sighup autovacuum_vacuum_cost_limit | -1 | sighup autovacuum_vacuum_scale_factor | 0.001 | sighup autovacuum_vacuum_threshold | 50 | sighup (11 rows)