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]
|
batchVals := insertBatchIfs[tbl]
|
||||||
for len(batchVals) > 0 {
|
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 := ""
|
stmt := ""
|
||||||
vals := make([]interface{}, 0)
|
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.
|
if len(stmt) == 0 { // The first set will be covered by insertString.
|
||||||
stmt = insertString[tbl]
|
stmt = insertString[tbl]
|
||||||
} else {
|
} else {
|
||||||
stmt += ", (" + strings.Join(strings.Split(strings.Repeat("?", len(batchVals[0])), ""), ",") + ")"
|
stmt += ", (" + strings.Join(strings.Split(strings.Repeat("?", len(batchVals[0])), ""), ",") + ")"
|
||||||
}
|
}
|
||||||
|
for _, val := range batchVals[0] {
|
||||||
|
querySize += len(string(val))
|
||||||
|
}
|
||||||
vals = append(vals, batchVals[0]...)
|
vals = append(vals, batchVals[0]...)
|
||||||
batchVals = batchVals[1:]
|
batchVals = batchVals[1:]
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
|
querySize += len(stmt)
|
||||||
|
log.Printf("inserting. querySize=%d\n", querySize)
|
||||||
res, err = db.Exec(stmt, vals...)
|
res, err = db.Exec(stmt, vals...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
@ -382,6 +388,15 @@ func dataLog() {
|
||||||
}
|
}
|
||||||
defer db.Close()
|
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)
|
go dataLogWriter(db)
|
||||||
|
|
||||||
// Do we need to create the database?
|
// Do we need to create the database?
|
||||||
|
|
|
@ -3,5 +3,4 @@
|
||||||
rm -rf /root/stratux-update
|
rm -rf /root/stratux-update
|
||||||
mkdir -p /root/stratux-update
|
mkdir -p /root/stratux-update
|
||||||
cd /root/stratux-update
|
cd /root/stratux-update
|
||||||
service stratux stop
|
|
||||||
mv -f /var/log/stratux.sqlite /var/log/stratux.sqlite.`date +%s`
|
mv -f /var/log/stratux.sqlite /var/log/stratux.sqlite.`date +%s`
|
||||||
|
|
Ładowanie…
Reference in New Issue