kopia lustrzana https://github.com/cyoung/stratux
INSERT speed fixes.
rodzic
980977146e
commit
1b093ef1bb
|
@ -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?
|
||||
|
|
|
@ -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`
|
||||
|
|
Ładowanie…
Reference in New Issue