diff options
-rw-r--r-- | golang/cmd/fatcatd/reinit.go | 15 | ||||
-rw-r--r-- | golang/sql/dummy-data.sql | 42 | ||||
-rw-r--r-- | notes/postgres_tuning.txt | 8 |
3 files changed, 62 insertions, 3 deletions
diff --git a/golang/cmd/fatcatd/reinit.go b/golang/cmd/fatcatd/reinit.go index b7cfa468..60726df0 100644 --- a/golang/cmd/fatcatd/reinit.go +++ b/golang/cmd/fatcatd/reinit.go @@ -22,12 +22,12 @@ func main_reinit() { box := packr.NewBox("../../sql") sql_schema, err := box.MustString("fatcat-schema.sql") if err != nil { - log.Panicf("finding SQL file: {}", err) + log.Panicf("finding SQL file: %v", err) } db_options, err := pg.ParseURL(viper.GetString("db_url")) if err != nil { - log.Panicf("parsing DB string: {}", err) + log.Panicf("parsing DB string: %v", err) } db := pg.Connect(db_options) defer db.Close() @@ -35,7 +35,16 @@ func main_reinit() { log.Info("Starting load...") _, err = db.Exec(sql_schema) if err != nil { - log.Fatalf("Error loading SQL: {}", err) + log.Fatalf("Error loading SQL: %v", err) + } + log.Info("Loading dummy data...") + sql_dummy, err := box.MustString("dummy-data.sql") + if err != nil { + log.Panicf("finding SQL file: %v", err) + } + _, err = db.Exec(sql_dummy) + if err != nil { + log.Fatalf("Error loading SQL: %v", err) } log.Info("Success!") diff --git a/golang/sql/dummy-data.sql b/golang/sql/dummy-data.sql new file mode 100644 index 00000000..9e01fae8 --- /dev/null +++ b/golang/sql/dummy-data.sql @@ -0,0 +1,42 @@ + +-- Fake data at the raw SQL level, for early development and testing + +BEGIN; + +INSERT INTO editor (id, username, is_admin) VALUES + (1, 'admin', true), + (2, 'claire', true), + (3, 'doug', false); + +INSERT INTO editgroup (id, editor_id, description) VALUES + (1, 1, 'first edit ever!'), + (2, 1, 'another one!'), + (3, 3, 'user edit'), + (4, 2, 'uncommited edit'); + +INSERT INTO editor (id, username, is_admin, active_editgroup_id) VALUES + (4, 'bnewbold', true, 4); + +INSERT INTO changelog (id, editgroup_id) VALUES + (1, 1), + (2, 2), + (3, 3); + +INSERT INTO creator_rev (id, name, orcid) VALUES + (1, 'Grace Hopper', null), + (2, 'Emily Noethe', null), + (3, 'Christine Moran', '0000-0003-2088-7465'); + +INSERT INTO creator_ident (id, is_live, rev_id, redirect_id) VALUES + ('f1f046a3-45c9-4b99-adce-000000000001', true, 1, null), + ('f1f046a3-45c9-4b99-adce-000000000002', true, 2, null), + ('f1f046a3-45c9-4b99-adce-000000000003', true, 3, null), + ('f1f046a3-45c9-4b99-adce-000000000004', false, 2, null); + +INSERT INTO creator_edit (id, ident_id, rev_id, redirect_id, editgroup_id) VALUES + (1, 'f1f046a3-45c9-4b99-adce-000000000001', 1, null, 1), + (2, 'f1f046a3-45c9-4b99-adce-000000000002', 2, null, 2), + (3, 'f1f046a3-45c9-4b99-adce-000000000003', 3, null, 3), + (4, 'f1f046a3-45c9-4b99-adce-000000000004', 2, null, 4); + +COMMIT; diff --git a/notes/postgres_tuning.txt b/notes/postgres_tuning.txt new file mode 100644 index 00000000..d1e353da --- /dev/null +++ b/notes/postgres_tuning.txt @@ -0,0 +1,8 @@ + +For bulk inserts: + +- make write-ahead-log larger (eg, 16MB) +- transactions of ~1000+ inserts +- https://www.postgresql.org/docs/current/static/populate.html +- https://www.depesz.com/2007/07/05/how-to-insert-data-to-database-as-fast-as-possible/ +- https://stackoverflow.com/questions/12206600/how-to-speed-up-insertion-performance-in-postgresql |