Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Percona Blog

    percona.com · Company blog · on HN since 2008

    Percona's company blog on open source database operations, covering MySQL and PostgreSQL performance, schema changes, indexing and tooling.

    Visit blogHN submissions
    DatabasesOpen Source & Linux
    What HN says

    Commenters mention Percona mainly as a company offering commercial support for MySQL forks and other open source databases, and it also appears in job posts.

    Stats for nerds
    327HN people shared it
    296linked in comments
    4.3Kstory points
    Jan 2026last shared
    2017people per year2026

    Top posts on HN

    1. 1
      UUIDs are popular, but bad for performance (2019)
      7 people · 270 points · first shared 2020 · 232 comments on HN
    2. 2
      PostgreSQL on ARM-Based AWS EC2 Instances
      1 person · 208 points · first shared 2021 · 62 comments on HN
    3. 3
      MySQL Challenge: 100k Connections
      2 people · 200 points · first shared 2019 · 43 comments on HN
    4. 4
      Parallelism in PostgreSQL
      2 people · 178 points · first shared 2019 · 26 comments on HN
    5. 5
      About ZFS Performance
      2 people · 165 points · first shared 2018 · 40 comments on HN
    6. 6
      MySQL vs. MariaDB: Reality Check
      3 people · 161 points · first shared 2017 · 64 comments on HN
    7. 7
      ZFS from a MySQL perspective
      1 person · 161 points · first shared 2017 · 71 comments on HN
    8. 8
      PostgreSQL 15: Stats Collector Gone? What’s New?
      1 person · 153 points · first shared 2022 · 39 comments on HN
    9. 9
      Linux Fsync Issue for Buffered IO and Its Preliminary Fix for PostgreSQL
      3 people · 140 points · first shared 2019 · 37 comments on HN
    10. 10
      A Look at MyRocks Performance
      2 people · 134 points · first shared 2018 · 38 comments on HN

    What HN people wrote when they linked it

    • amaccuishAug 2019

      False.

      > But it does not seperate table data into one file per table

      That's because if you didn't have it set when creating the database, it won't move data to the new fs layout when you set the setting on, without an OPTIMIZE. If you had it on from the beginning, table data is per file. I literally just did an ls on my /va/lib/mysql and there's a folder per database, in which there are 2 files per table (.frm and .ibd).

      When innodb_file_per_table is on, and the database has been OPTIMIZEd, only the following is stored in ibdata1 [0]:

      - data dictionary aka metadata of InnoDB tables

      - change buffer

      - doublewrite buffer

      - undo logs

      [0] https://www.percona.com/blog/2013/08/20/why-is-the-ibdata1-file-continuously-growing-in-mysql/

    • kostja_osipovJan 2017

      We provide multiple solutions for sharding, ranging from https://github.com/tarantool/twemproxy-docker twemproxy port to https://github.com/tarantool/shard.
      Tarantool is close to a data grid in its architecture and features from the database world do not apply 1:1.

      We have been working on a general-purpose resharding for over 3 years, but have yet to release it to the open source community: it's very hard to do it well.

      But our customers get a sharding scheme that best suits their business needs, including fully automatic shard management and data re-balancing. I submitted a talk about the technology and know-how behind this to Percona Live 2017: https://www.percona.com/live/17/sessions/best-practices-application-level-sharding

    • smueller1234Feb 2025

      Was about to say that we managed upwards of 4k servers worth of MySQL databases (as in 4k baremetal servers worth, not 4k small VMs each having a small MySQL) using "Orchestrator" at Booking.com ten years ago. I checked if it was still kicking before writing this and found that the GitHub repo was archived last year. The next Google hit I find is this article from three days ago:

      https://www.percona.com/blog/orchestrator-for-managing-mysql-high-availability-using-raft/

      Please do some additional research into the state of maintenance of that piece of tech before jumping on it. But it certainly did a lot of powerful things for us back in the day. The automatic promotion of followers was key to our deployment.

    • nine_kJul 2020

      Unfortunately every index takes time to access; it's like dereferencing a pointer. You also usually want the hottest indexes to reside in RAM. Making more indexes compete for RAM pages may and will have implications for other queries, possibly more important.

      I agree that often machine resources are plentiful, and human resources are scarce, so managing indexes automatically makes sense. It's even implemented, e.g. in Oracle as a complete management tool [1], or in Postgres as a discovery and recommendation tool [2].

      [1]: https://oracle-base.com/articles/19c/automatic-indexing-19c

      [2]: https://www.percona.com/blog/2019/07/22/automatic-index-recommendations-in-postgresql-using-pg_qualstats-and-hypopg/

    • addisonjMar 2023

      This is a great resource.

      The PG docs are generally quite good, but logical replication is one of those things where experience and this sort of resource is invaluable.

      That said, I also feel like logical replication is still pretty hard to use. One example, not covered here, is that the status of slots is not replicated to any secondaries. There are solutions for this now (see https://www.percona.com/blog/how-patroni-addresses-the-problem-of-the-logical-replication-slot-failover-in-a-postgresql-cluster/) but generally the domain of dealing with logical changes is still one where I feel like MySQL binlog has a leg up (though still some sharp edges) in making it a bit easier to work with.

    • otterleyNov 2018

      The flip side is that GUIDs take up a ton of space and are full of entropy, which makes them very inefficient to work with, are not cache-friendly, and not sortable. Certain database engines (e.g., InnoDB on MySQL) also limit the length of primary keys for performance reasons, which disqualifies GUIDs from being used. With clustering, short keys are better as they reduce IOPS required to fetch data.

      See https://www.percona.com/blog/2006/10/03/long-primary-key-for-innodb-tables/ for an interesting discussion of the topic.

      In general, it's unwise to make recommendations about what data types to use, especially for primary keys, without thorough research on their implications.

    Related

    MySQL Performance Blogmysqlperformanceblog.com110 people

    Disaster: MySQL 5.5 Flushing

    MySQL Performance Blog
    Company · last shared 2014
    ProxySQL Blogproxysql.com15 people

    Scaling MySQL with ProxySQL

    ProxySQL Blog
    Company · last shared 2026
    MariaDB Blogmariadb.org74 people

    MySQL man pages silently relicensed away from GPL

    MariaDB Blog
    Company · last shared 2026
    PingCAP Blogpingcap.com123 people

    Generics and Compile-Time in Rust

    PingCAP Blog
    Company · last shared 2026
    CYBERTEC Blogcybertec-postgresql.com94 people

    Postgres scaling advice

    CYBERTEC Blog
    Company · last shared 2026
    Timescale Blogblog.timescale.com95 people

    How percentile approximation works and why it's more useful than averages

    Timescale Blog
    Company · last shared 2022
    Citus Data Blogcitusdata.com224 people

    Citus Unforks from PostgreSQL, Goes Open Source

    Citus Data Blog
    Company · last shared 2026
    Ubicloud Blogubicloud.com53 people

    Show HN: Open-source x64 and Arm GitHub runners

    Ubicloud Blog
    Company · last shared 2026