nandi/gleanpublic⑂ Fork 0
⑂ 69cac9a
Commits
⬇ Clone ▾
git clone https://git.rickub.com/nandi/glean.git
git clone ssh://git@rickub.com/nandi/glean.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Optimize SQLite configurationUnverified

Julien Robert committed 2026-04-22T11:51:56+02:00 Browse files
69cac9a parent: 9e9adc8
modified internal/db/db.go +15 -1
@@ -18,6 +18,16 @@ func init() {
1818 if err := conn.RegisterFunc("log", func(x float64) float64 { return math.Log(x) }, true); err != nil {
1919 return err
2020 }
21+ pragmas := []string{
22+ `PRAGMA wal_autocheckpoint = 1000`,
23+ `PRAGMA temp_store = MEMORY`,
24+ `PRAGMA mmap_size = 268435456`,
25+ }
26+ for _, p := range pragmas {
27+ if _, err := conn.Exec(p, nil); err != nil {
28+ return err
29+ }
30+ }
2131 return nil
2232 },
2333 })
@@ -46,8 +56,12 @@ type DB struct {
4656 *sql.DB
4757 }
4858
59+func (d *DB) Close() error {
60+ return d.DB.Close()
61+}
62+
4963 func Open(path string) (*DB, error) {
50- db, err := sql.Open("sqlite3_glean", path+"?_journal_mode=WAL&_busy_timeout=5000")
64+ db, err := sql.Open("sqlite3_glean", path+"?_journal_mode=WAL&_busy_timeout=30000&_synchronous=NORMAL&_cache_size=-64000&_stmt_cache_size=64&_mutex=no")
5165 if err != nil {
5266 return nil, err
5367 }
@@ -18,6 +18,16 @@ func init() {
18 if err := conn.RegisterFunc("log", func(x float64) float64 { return math.Log(x) }, true); err != nil {18 if err := conn.RegisterFunc("log", func(x float64) float64 { return math.Log(x) }, true); err != nil {
19 return err19 return err
20 }20 }
21+ pragmas := []string{
22+ `PRAGMA wal_autocheckpoint = 1000`,
23+ `PRAGMA temp_store = MEMORY`,
24+ `PRAGMA mmap_size = 268435456`,
25+ }
26+ for _, p := range pragmas {
27+ if _, err := conn.Exec(p, nil); err != nil {
28+ return err
29+ }
30+ }
21 return nil31 return nil
22 },32 },
23 })33 })
@@ -46,8 +56,12 @@ type DB struct {
46 *sql.DB56 *sql.DB
47 }57 }
48 58
59+func (d *DB) Close() error {
60+ return d.DB.Close()
61+}
62+
49 func Open(path string) (*DB, error) {63 func Open(path string) (*DB, error) {
50- db, err := sql.Open("sqlite3_glean", path+"?_journal_mode=WAL&_busy_timeout=5000")64+ db, err := sql.Open("sqlite3_glean", path+"?_journal_mode=WAL&_busy_timeout=30000&_synchronous=NORMAL&_cache_size=-64000&_stmt_cache_size=64&_mutex=no")
51 if err != nil {65 if err != nil {
52 return nil, err66 return nil, err
53 }67 }
modified internal/feed/fetcher.go +1 -1
@@ -120,7 +120,7 @@ func (s *Scheduler) fetchAll(ctx context.Context) {
120120 return
121121 }
122122
123- sem := make(chan struct{}, 10)
123+ sem := make(chan struct{}, 3)
124124 var wg sync.WaitGroup
125125 for _, f := range feeds {
126126 wg.Add(1)
@@ -120,7 +120,7 @@ func (s *Scheduler) fetchAll(ctx context.Context) {
120 return120 return
121 }121 }
122 122
123- sem := make(chan struct{}, 10)123+ sem := make(chan struct{}, 3)
124 var wg sync.WaitGroup124 var wg sync.WaitGroup
125 for _, f := range feeds {125 for _, f := range feeds {
126 wg.Add(1)126 wg.Add(1)