{"id":6186,"date":"2026-08-06T07:00:00","date_gmt":"2026-08-06T04:00:00","guid":{"rendered":"https:\/\/www.dataplatform.gr\/?p=6186"},"modified":"2026-08-28T15:07:53","modified_gmt":"2026-08-28T12:07:53","slug":"ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2","status":"publish","type":"post","link":"https:\/\/www.dataplatform.gr\/en\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/","title":{"rendered":"What are WALs in PostgreSQL and how do we configure them?"},"content":{"rendered":"<p class=\"wp-block-paragraph\">In this article we will look at the mechanism that connects memory to disk and ensures that we will not lose data if the database goes down (e.g. due to a power outage): the <strong>Write-Ahead Logs (WAL)<\/strong> and <strong>Checkpoints<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When we perform a <code>INSERT<\/code>, <code>UPDATE<\/code> the <code>DELETE<\/code>, the change is initially made in memory (<code>shared_buffer<\/code>) and immediately afterwards <strong>recorded in the WAL file<\/strong> to disk, to confirm that the transaction was completed. If the server crashes, PostgreSQL reads the WAL files on restart and rerolls any changes that were not permanently written to the tables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For those coming from Oracle, WAL files are the equivalent of <strong>Redo Logs<\/strong>, while in SQL Server it is <strong>Transaction Log<\/strong>In PostgreSQL they are located in the \/etc\/postgresql\/src <code>pg_wal<\/code> as 16MB files.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Checkpoint?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We can&#039;t keep the changes in memory alone, because if the power went out, restarting would take hours reading days&#039; worth of WAL files. The <strong>Checkpoint<\/strong> is the process by which PostgreSQL takes all changes from memory and physically writes them to the tables on disk. Once it is finished, old WAL files that are no longer needed are deleted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If the checkpoint writes a large amount of data suddenly, the disk reaches 100% and the database crashes. That&#039;s why proper tuning is needed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How do we configure them in the PostgreSQL service?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The default settings of PostgreSQL are very low, in production databases we adjust the basic parameters to <code>postgresql.conf<\/code>, which are dynamic, the service does not need to be down, just reload via SQL (<code>SELECT pg_reload_conf();<\/code>):<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">max_wal_size<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Defines how much WAL is allowed to accumulate before the database is forced to checkpoint. 1GB (default) is too small and forces the database to constantly checkpoint. On production systems, we increase it to <strong>16GB<\/strong> which is the standard, in large databases with thousands of records we may need to go to 32GB or even 64GB.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">checkpoint_timeout<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sets the maximum time between two checkpoints. 5 minutes (default) is a very common interval, so we increase it to <strong>15m<\/strong> to thin out the recordings on the disk.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">checkpoint_completion_target<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Defines how much of the time <code>checkpoint_timeout<\/code> the data recording must be spread out. With a value of 0.9 and <code>checkpoint_timeout <\/code>15, PostgreSQL writes data incrementally over 13.5 minutes. This spreads out the write and eliminates deadlocks. In new versions it is already 0.9 and we leave it there.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\" data-no-translation=\"\" data-no-auto-translation=\"\">vi $PGDATA\/postgresql.conf<\/pre>\n\n\n\n<pre class=\"wp-block-code\" data-no-translation=\"\" data-no-auto-translation=\"\"><code>checkpoint_timeout = 15m \nmax_wal_size = 16GB \nmin_wal_size = 2GB \ncheckpoint_completion_target = 0.9<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How do we see if tuning is needed?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To see if the checkpoints are done on time or if they are forced because the system is full. <code>max_wal_size<\/code>, we run the following query:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\" data-no-translation=\"\" data-no-auto-translation=\"\">SELECT \n    checkpoints_timed,\n    checkpoints_req,\n    checkpoint_write_time,\n    checkpoint_sync_time,\n    ROUND(100.0 * checkpoints_req \/ NULLIF(checkpoints_timed + checkpoints_req, 0), 2) AS forced_checkpoint_pct\nFROM pg_stat_bgwriter;<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"401\" src=\"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2026\/07\/pgwa-01.png\" alt=\"\" class=\"wp-image-6060\" srcset=\"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2026\/07\/pgwa-01.png 758w, https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2026\/07\/pgwa-01-300x159.png 300w, https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2026\/07\/pgwa-01-18x10.png 18w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the results, the <code>checkpoints_timed<\/code> shows the checkpoints that were made normally based on time, while the <code>checkpoints_req<\/code> shows the necessary ones because we filled the <code>max_wal_size<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our goal is the percentage <strong><code>forced_checkpoint_pct<\/code> be below 10%<\/strong>If you see a higher percentage, it means the database is generating WAL too quickly and you need to increase the <code>max_wal_size<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sources:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.postgresql.org\/docs\/current\/\" data-type=\"link\" data-id=\"https:\/\/www.postgresql.org\/docs\/current\/\">PostgreSQL 18.4 Documentation<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>In this article we will look at the mechanism that connects memory to disk and ensures that we will not lose data if the database goes down (e.g. due to a power outage): Write-Ahead Logs (WAL) and Checkpoints. When we execute an INSERT, UPDATE or DELETE, the change is first made in memory (shared_buffer) and immediately afterwards it is recorded [\u2026]<\/p>","protected":false},"author":1,"featured_media":2376,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,123],"tags":[29,48,124,30],"class_list":["post-6186","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-databases","category-postgresql","tag-databases","tag-performance_tuning","tag-postgresql","tag-rdbms"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5 - DataPlatform.gr<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dataplatform.gr\/en\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5 - DataPlatform.gr\" \/>\n<meta property=\"og:description\" content=\"\u03a3\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03ac\u03c1\u03b8\u03c1\u03bf \u03b8\u03b1 \u03b4\u03bf\u03cd\u03bc\u03b5 \u03c4\u03bf\u03bd \u03bc\u03b7\u03c7\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc \u03c0\u03bf\u03c5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03b5\u03b9 \u03c4\u03b7 \u03bc\u03bd\u03ae\u03bc\u03b7 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03af\u03c3\u03ba\u03bf \u03ba\u03b1\u03b9 \u03b5\u03be\u03b1\u03c3\u03c6\u03b1\u03bb\u03af\u03b6\u03b5\u03b9 \u03cc\u03c4\u03b9 \u03b4\u03b5\u03bd \u03b8\u03b1 \u03c7\u03ac\u03c3\u03bf\u03c5\u03bc\u03b5 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b1\u03bd \u03c0\u03ad\u03c3\u03b5\u03b9 \u03b7 \u03b2\u03ac\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd (\u03c0.\u03c7. \u03b1\u03c0\u03bf \u03c1\u03b5\u03cd\u03bc\u03b1): \u03c4\u03b1 Write-Ahead Logs (WAL) \u03ba\u03b1\u03b9 \u03c4\u03b1 Checkpoints. \u038c\u03c4\u03b1\u03bd \u03b5\u03ba\u03c4\u03b5\u03bb\u03bf\u03cd\u03bc\u03b5 \u03ad\u03bd\u03b1 INSERT, UPDATE \u03ae DELETE, \u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03b3\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c1\u03c7\u03b9\u03ba\u03ac \u03c3\u03c4\u03b7 \u03bc\u03bd\u03ae\u03bc\u03b7 (shared_buffer) \u03ba\u03b1\u03b9 \u03b1\u03bc\u03ad\u03c3\u03c9\u03c2 \u03bc\u03b5\u03c4\u03ac \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03ac\u03c6\u03b5\u03c4\u03b1\u03b9 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dataplatform.gr\/en\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/\" \/>\n<meta property=\"og:site_name\" content=\"DataPlatform.gr\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dataplatform.gr\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-06T04:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-28T12:07:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2020\/10\/db_postgresql.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Stratos Matzouranis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Stratos Matzouranis\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/\"},\"author\":{\"name\":\"Stratos Matzouranis\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#\\\/schema\\\/person\\\/e87bf4fd02b65cb6aa0942f87245bbaf\"},\"headline\":\"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5\",\"datePublished\":\"2026-08-06T04:00:00+00:00\",\"dateModified\":\"2026-08-28T12:07:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/\"},\"wordCount\":66,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dataplatform.gr\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/db_postgresql.png\",\"keywords\":[\"Databases\",\"Performance Tuning\",\"PostgreSQL\",\"RDBMS\"],\"articleSection\":[\"Databases\",\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/\",\"url\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/\",\"name\":\"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5 - DataPlatform.gr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dataplatform.gr\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/db_postgresql.png\",\"datePublished\":\"2026-08-06T04:00:00+00:00\",\"dateModified\":\"2026-08-28T12:07:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dataplatform.gr\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/db_postgresql.png\",\"contentUrl\":\"https:\\\/\\\/www.dataplatform.gr\\\/wp-content\\\/uploads\\\/2020\\\/10\\\/db_postgresql.png\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0391\u03c1\u03c7\u03b9\u03ba\u03ae\",\"item\":\"https:\\\/\\\/www.dataplatform.gr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Databases\",\"item\":\"https:\\\/\\\/www.dataplatform.gr\\\/category\\\/databases\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"PostgreSQL\",\"item\":\"https:\\\/\\\/www.dataplatform.gr\\\/category\\\/databases\\\/postgresql\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#website\",\"url\":\"https:\\\/\\\/www.dataplatform.gr\\\/\",\"name\":\"dataplatform.gr - Sky is not the limit!\",\"description\":\"\u0398\u03b5\u03c9\u03c1\u03af\u03b1, \u03bf\u03b4\u03b7\u03b3\u03bf\u03af \u03ba\u03b1\u03b9 \u03c3\u03ba\u03ad\u03c8\u03b5\u03b9\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03bf\u03c5\u03bb\u03b5\u03b9\u03ac \u03c3\u03b1\u03c2 \u03c0\u03b9\u03bf \u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03c0\u03b9\u03bf \u03b5\u03cd\u03ba\u03bf\u03bb\u03b1 \u03c0\u03ac\u03bd\u03c9 \u03c3\u03c4\u03b9\u03c2 \u03b2\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd, \u03c3\u03c4\u03b7\u03bd SQL, \u03c3\u03c4\u03bf Business Intelligence \u03ba\u03b1\u03b9 \u03c3\u03c4\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b3\u03b5\u03bd\u03b9\u03ba\u03cc\u03c4\u03b5\u03c1\u03b1.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dataplatform.gr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#organization\",\"name\":\"dataplatform.gr\",\"url\":\"https:\\\/\\\/www.dataplatform.gr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dataplatform.gr\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/dp_logo_wbacki.png\",\"contentUrl\":\"https:\\\/\\\/www.dataplatform.gr\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/dp_logo_wbacki.png\",\"width\":322,\"height\":139,\"caption\":\"dataplatform.gr\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dataplatform.gr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/dataplatform-gr\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dataplatform.gr\\\/#\\\/schema\\\/person\\\/e87bf4fd02b65cb6aa0942f87245bbaf\",\"name\":\"Stratos Matzouranis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ab973bc4bd1673c43d45de5633a624d9ad13c06902dfdd5a6e3fd9885903865e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ab973bc4bd1673c43d45de5633a624d9ad13c06902dfdd5a6e3fd9885903865e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ab973bc4bd1673c43d45de5633a624d9ad13c06902dfdd5a6e3fd9885903865e?s=96&d=mm&r=g\",\"caption\":\"Stratos Matzouranis\"},\"sameAs\":[\"https:\\\/\\\/www.dataplatform.gr\"],\"url\":\"https:\\\/\\\/www.dataplatform.gr\\\/en\\\/author\\\/stratos-matzouranis\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5 - DataPlatform.gr","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dataplatform.gr\/en\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/","og_locale":"en_US","og_type":"article","og_title":"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5 - DataPlatform.gr","og_description":"\u03a3\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03ac\u03c1\u03b8\u03c1\u03bf \u03b8\u03b1 \u03b4\u03bf\u03cd\u03bc\u03b5 \u03c4\u03bf\u03bd \u03bc\u03b7\u03c7\u03b1\u03bd\u03b9\u03c3\u03bc\u03cc \u03c0\u03bf\u03c5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03b5\u03b9 \u03c4\u03b7 \u03bc\u03bd\u03ae\u03bc\u03b7 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03af\u03c3\u03ba\u03bf \u03ba\u03b1\u03b9 \u03b5\u03be\u03b1\u03c3\u03c6\u03b1\u03bb\u03af\u03b6\u03b5\u03b9 \u03cc\u03c4\u03b9 \u03b4\u03b5\u03bd \u03b8\u03b1 \u03c7\u03ac\u03c3\u03bf\u03c5\u03bc\u03b5 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b1\u03bd \u03c0\u03ad\u03c3\u03b5\u03b9 \u03b7 \u03b2\u03ac\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd (\u03c0.\u03c7. \u03b1\u03c0\u03bf \u03c1\u03b5\u03cd\u03bc\u03b1): \u03c4\u03b1 Write-Ahead Logs (WAL) \u03ba\u03b1\u03b9 \u03c4\u03b1 Checkpoints. \u038c\u03c4\u03b1\u03bd \u03b5\u03ba\u03c4\u03b5\u03bb\u03bf\u03cd\u03bc\u03b5 \u03ad\u03bd\u03b1 INSERT, UPDATE \u03ae DELETE, \u03b7 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ae \u03b3\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03b1\u03c1\u03c7\u03b9\u03ba\u03ac \u03c3\u03c4\u03b7 \u03bc\u03bd\u03ae\u03bc\u03b7 (shared_buffer) \u03ba\u03b1\u03b9 \u03b1\u03bc\u03ad\u03c3\u03c9\u03c2 \u03bc\u03b5\u03c4\u03ac \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03ac\u03c6\u03b5\u03c4\u03b1\u03b9 [&hellip;]","og_url":"https:\/\/www.dataplatform.gr\/en\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/","og_site_name":"DataPlatform.gr","article_publisher":"https:\/\/www.facebook.com\/dataplatform.gr\/","article_published_time":"2026-08-06T04:00:00+00:00","article_modified_time":"2026-08-28T12:07:53+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2020\/10\/db_postgresql.png","type":"image\/png"}],"author":"Stratos Matzouranis","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Stratos Matzouranis","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/#article","isPartOf":{"@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/"},"author":{"name":"Stratos Matzouranis","@id":"https:\/\/www.dataplatform.gr\/#\/schema\/person\/e87bf4fd02b65cb6aa0942f87245bbaf"},"headline":"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5","datePublished":"2026-08-06T04:00:00+00:00","dateModified":"2026-08-28T12:07:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/"},"wordCount":66,"commentCount":0,"publisher":{"@id":"https:\/\/www.dataplatform.gr\/#organization"},"image":{"@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2020\/10\/db_postgresql.png","keywords":["Databases","Performance Tuning","PostgreSQL","RDBMS"],"articleSection":["Databases","PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/","url":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/","name":"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5 - DataPlatform.gr","isPartOf":{"@id":"https:\/\/www.dataplatform.gr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/#primaryimage"},"image":{"@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2020\/10\/db_postgresql.png","datePublished":"2026-08-06T04:00:00+00:00","dateModified":"2026-08-28T12:07:53+00:00","breadcrumb":{"@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/#primaryimage","url":"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2020\/10\/db_postgresql.png","contentUrl":"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2020\/10\/db_postgresql.png","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/www.dataplatform.gr\/ti-ta-wal-sti-postgresql-pos-ta-rythmizoym-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0391\u03c1\u03c7\u03b9\u03ba\u03ae","item":"https:\/\/www.dataplatform.gr\/"},{"@type":"ListItem","position":2,"name":"Databases","item":"https:\/\/www.dataplatform.gr\/category\/databases\/"},{"@type":"ListItem","position":3,"name":"PostgreSQL","item":"https:\/\/www.dataplatform.gr\/category\/databases\/postgresql\/"},{"@type":"ListItem","position":4,"name":"\u03a4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b1 WAL \u03c3\u03c4\u03b7 PostgreSQL \u03ba\u03b1\u03b9 \u03c0\u03ce\u03c2 \u03c4\u03b1 \u03c1\u03c5\u03b8\u03bc\u03af\u03b6\u03bf\u03c5\u03bc\u03b5"}]},{"@type":"WebSite","@id":"https:\/\/www.dataplatform.gr\/#website","url":"https:\/\/www.dataplatform.gr\/","name":"dataplatform.gr - Sky is not the limit!","description":"\u0398\u03b5\u03c9\u03c1\u03af\u03b1, \u03bf\u03b4\u03b7\u03b3\u03bf\u03af \u03ba\u03b1\u03b9 \u03c3\u03ba\u03ad\u03c8\u03b5\u03b9\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03c4\u03b7 \u03b4\u03bf\u03c5\u03bb\u03b5\u03b9\u03ac \u03c3\u03b1\u03c2 \u03c0\u03b9\u03bf \u03c0\u03b1\u03c1\u03b1\u03b3\u03c9\u03b3\u03b9\u03ba\u03ac \u03ba\u03b1\u03b9 \u03c0\u03b9\u03bf \u03b5\u03cd\u03ba\u03bf\u03bb\u03b1 \u03c0\u03ac\u03bd\u03c9 \u03c3\u03c4\u03b9\u03c2 \u03b2\u03ac\u03c3\u03b5\u03b9\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd, \u03c3\u03c4\u03b7\u03bd SQL, \u03c3\u03c4\u03bf Business Intelligence \u03ba\u03b1\u03b9 \u03c3\u03c4\u03b1 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03b1 \u03b3\u03b5\u03bd\u03b9\u03ba\u03cc\u03c4\u03b5\u03c1\u03b1.","publisher":{"@id":"https:\/\/www.dataplatform.gr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dataplatform.gr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dataplatform.gr\/#organization","name":"dataplatform.gr","url":"https:\/\/www.dataplatform.gr\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dataplatform.gr\/#\/schema\/logo\/image\/","url":"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2020\/06\/dp_logo_wbacki.png","contentUrl":"https:\/\/www.dataplatform.gr\/wp-content\/uploads\/2020\/06\/dp_logo_wbacki.png","width":322,"height":139,"caption":"dataplatform.gr"},"image":{"@id":"https:\/\/www.dataplatform.gr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dataplatform.gr\/","https:\/\/www.linkedin.com\/company\/dataplatform-gr\/"]},{"@type":"Person","@id":"https:\/\/www.dataplatform.gr\/#\/schema\/person\/e87bf4fd02b65cb6aa0942f87245bbaf","name":"Stratos Matzouranis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ab973bc4bd1673c43d45de5633a624d9ad13c06902dfdd5a6e3fd9885903865e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ab973bc4bd1673c43d45de5633a624d9ad13c06902dfdd5a6e3fd9885903865e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ab973bc4bd1673c43d45de5633a624d9ad13c06902dfdd5a6e3fd9885903865e?s=96&d=mm&r=g","caption":"Stratos Matzouranis"},"sameAs":["https:\/\/www.dataplatform.gr"],"url":"https:\/\/www.dataplatform.gr\/en\/author\/stratos-matzouranis\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/posts\/6186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/comments?post=6186"}],"version-history":[{"count":1,"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/posts\/6186\/revisions"}],"predecessor-version":[{"id":6188,"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/posts\/6186\/revisions\/6188"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/media\/2376"}],"wp:attachment":[{"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/media?parent=6186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/categories?post=6186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dataplatform.gr\/en\/wp-json\/wp\/v2\/tags?post=6186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}