How often does Postgres or Mysql make the fsync call?
I can only answer for PostgreSQL:
About sync on the WAL:
The transaction log (WAL) is synced to disk on every commit (unless you set synchronous_commit = off.
In addition, the WAL writer regularly syncs the WAL; this is governed by wal_writer_delay (this will only take effect if WAL hasn't been synced for a while). Also, if more than wal_writer_flush_after bytes have been written without a sync, data will be synced to disk.
About sync on the data files:
Data files are normally synced during checkpoints.
Since PostgreSQL uses buffered I/O, there is the danger that too many dirty blocks in the file system cache cause write spikes. Since version 9.6, PostgreSQL has various *_flush_after parameters that avoid that by regulary syncing data when a lot is written:

bgwriter_flush_after (default 512K) makes the background writer flush data to disk after it has written that amount of data
backend_flush_after (default 0 = disabled) makes the client session flush data to disk after it has written that amount of data
checkpoint_flush_after (default 256KB) makes the checkpointer flush out data after writing this much, rather than flushing all at the end