INSERT speed fixes.

pull/363/head
Christopher Young 2016-04-02 15:33:19 -04:00
rodzic 980977146e
commit 1b093ef1bb
2 zmienionych plików z 17 dodań i 3 usunięć

Wyświetl plik

@ -216,19 +216,25 @@ func bulkInsert(tbl string, db *sql.DB) (res sql.Result, err error) {
batchVals := insertBatchIfs[tbl]
for len(batchVals) > 0 {
i := int(0) // Maximum of 10 rows per INSERT statement.
i := int(0) // Maximum of 25 rows per INSERT statement.
stmt := ""
vals := make([]interface{}, 0)
for len(batchVals) > 0 && i < 10 {
querySize := uint64(0) // Size of the query in bytes.
for len(batchVals) > 0 && i < 25 {
if len(stmt) == 0 { // The first set will be covered by insertString.
stmt = insertString[tbl]
} else {
stmt += ", (" + strings.Join(strings.Split(strings.Repeat("?", len(batchVals[0])), ""), ",") + ")"
}
for _, val := range batchVals[0] {
querySize += len(string(val))
}
vals = append(vals, batchVals[0]...)
batchVals = batchVals[1:]
i++
}
querySize += len(stmt)
log.Printf("inserting. querySize=%d\n", querySize)
res, err = db.Exec(stmt, vals...)
if err != nil {
return
@ -382,6 +388,15 @@ func dataLog() {
}
defer db.Close()
_, err = db.Exec("PRAGMA journal_mode=WAL")
if err != nil {
log.Printf("db.Exec('PRAGMA journal_mode=WAL') err: %s\n", err.Error())
}
_, err = db.Exec("PRAGMA synchronous=OFF")
if err != nil {
log.Printf("db.Exec('PRAGMA journal_mode=WAL') err: %s\n", err.Error())
}
go dataLogWriter(db)
// Do we need to create the database?

Wyświetl plik

@ -3,5 +3,4 @@
rm -rf /root/stratux-update
mkdir -p /root/stratux-update
cd /root/stratux-update
service stratux stop
mv -f /var/log/stratux.sqlite /var/log/stratux.sqlite.`date +%s`