Ver Fonte

Небольшая оптимизация

Book Pauk há 6 anos atrás
pai
commit
89d9a90901
2 ficheiros alterados com 11 adições e 4 exclusões
  1. 10 3
      server/core/readerStorage.js
  2. 1 1
      server/db/connManager.js

+ 10 - 3
server/core/readerStorage.js

@@ -6,6 +6,7 @@ const connManager = require('../db/connManager');
 class ReaderStorage {
 class ReaderStorage {
     constructor() {
     constructor() {
         this.storagePool = connManager.pool.readerStorage;
         this.storagePool = connManager.pool.readerStorage;
+        this.cache = {};
     }
     }
 
 
     async doAction(act) {
     async doAction(act) {
@@ -33,9 +34,14 @@ class ReaderStorage {
         const dbh = await this.storagePool.get();
         const dbh = await this.storagePool.get();
         try {
         try {
             for (const id of Object.keys(items)) {
             for (const id of Object.keys(items)) {
-                const rows = await dbh.all(SQL`SELECT rev FROM storage WHERE id = ${id}`);
-                const rev = (rows.length && rows[0].rev ? rows[0].rev : 0);
-                result.items[id] = {rev};
+                if (this.cache[id]) {
+                    result.items[id] = this.cache[id];
+                } else {
+                    const rows = await dbh.all(SQL`SELECT rev FROM storage WHERE id = ${id}`);
+                    const rev = (rows.length && rows[0].rev ? rows[0].rev : 0);
+                    result.items[id] = {rev};
+                    this.cache[id] = result.items[id];
+                }
             }
             }
         } finally {
         } finally {
             dbh.ret();
             dbh.ret();
@@ -78,6 +84,7 @@ class ReaderStorage {
         try {
         try {
             for (const id of Object.keys(items)) {
             for (const id of Object.keys(items)) {
                 await dbh.run(SQL`INSERT OR REPLACE INTO storage (id, rev, data) VALUES (${id}, ${items[id].rev}, ${items[id].data})`);
                 await dbh.run(SQL`INSERT OR REPLACE INTO storage (id, rev, data) VALUES (${id}, ${items[id].rev}, ${items[id].data})`);
+                this.cache[id] = {rev: items[id].rev};
             }
             }
         } finally {
         } finally {
             dbh.ret();
             dbh.ret();

+ 1 - 1
server/db/connManager.js

@@ -14,7 +14,7 @@ class ConnManager {
     async init(config) {
     async init(config) {
         this.config = config;
         this.config = config;
 
 
-        const force = (config.branch == 'development' ? 'last' : null);
+        const force = null;//(config.branch == 'development' ? 'last' : null);
 
 
         for (const poolConfig of this.config.db) {
         for (const poolConfig of this.config.db) {
             const dbFileName = this.config.dataDir + '/' + poolConfig.fileName;
             const dbFileName = this.config.dataDir + '/' + poolConfig.fileName;