I found 15GB large file in ~/Library/Safari called ContentBlockerStatistics.db-wal. What is that and what to do with it?
TL;DR

~/Library/Safari/ContentBlockerStatistics.db-wal is the log file for ~/Library/Safari/ContentBlockerStatistics.db
It can't be read directly and gets emptied once you quit Safari.
~/Library/Safari/ContentBlockerStatistics.db can be read with sq3lite
If ~/Library/Safari/ContentBlockerStatistics.db grows too big it can safely be removed while Safari is not running


Using the standard tools of macOS
$ file ContentBlockerStatistics.db*
ContentBlockerStatistics.db:     SQLite 3.x database, user version 1, last written using SQLite version 3032003
ContentBlockerStatistics.db-shm: data
ContentBlockerStatistics.db-wal: SQLite Write-Ahead Log, version 3007000

So ContentBlockerStatistics.db is a database and the -wal file is the write-ahead log where all DB changes are written to while Safari is running. You can't browse the write-ahead log and the DB is locked while Safari is running. If you close Safari the write-ahead log content gets emptied.
$ file ContentBlockerStatistics.db*
ContentBlockerStatistics.db:     SQLite 3.x database, user version 1, last written using SQLite version 3032003
ContentBlockerStatistics.db-shm: data
ContentBlockerStatistics.db-wal: empty

To see what's inside ContentBlockerStatistics.db use sqlite3 (or any third-party MySql browser).
$ sqlite3 ContentBlockerStatistics.db
SQLite version 3.32.3 2020-06-18 14:16:19
Enter &quot;.help&quot; for usage hints.
sqlite&gt; .schema
CREATE TABLE FirstPartyDomains (firstPartyDomainID INTEGER PRIMARY KEY AUTOINCREMENT,domain TEXT NOT NULL UNIQUE ON CONFLICT FAIL);
CREATE TABLE sqlite_sequence(name,seq);
CREATE TABLE ThirdPartyDomains (thirdPartyDomainID INTEGER PRIMARY KEY AUTOINCREMENT,domain TEXT NOT NULL UNIQUE ON CONFLICT FAIL);
CREATE TABLE BlockedResources (firstPartyDomainID INTEGER NOT NULL,thirdPartyDomainID INTEGER NOT NULL,lastSeen REAL NOT NULL,FOREIGN KEY (firstPartyDomainID) REFERENCES FirstPartyDomains(firstPartyDomainID) ON DELETE CASCADE,FOREIGN KEY (thirdPartyDomainID) REFERENCES ThirdPartyDomains(thirdPartyDomainID) ON DELETE CASCADE,PRIMARY KEY (firstPartyDomainID, thirdPartyDomainID));


FirstPartyDomains seems to contain the domains you visited
ThirdPartyDomains seems to contain any domains referenced from the first party domains