don't log known slow queries

This commit is contained in:
zadam
2023-10-20 09:36:57 +02:00
parent 5c10fc26be
commit 4773f9392b
4 changed files with 65 additions and 33 deletions

View File

@@ -48,6 +48,14 @@ function isEntityEventsDisabled() {
return !!namespace.get('disableEntityEvents');
}
function disableSlowQueryLogging(disable) {
namespace.set('disableSlowQueryLogging', disable);
}
function isSlowQueryLoggingDisabled() {
return !!namespace.get('disableSlowQueryLogging');
}
function getAndClearEntityChangeIds() {
const entityChangeIds = namespace.get('entityChangeIds') || [];
@@ -93,4 +101,6 @@ module.exports = {
getAndClearEntityChangeIds,
putEntityChange,
ignoreEntityChangeIds,
disableSlowQueryLogging,
isSlowQueryLoggingDisabled
};

View File

@@ -11,14 +11,17 @@ function getEntityHashes() {
const startTime = new Date();
const hashRows = sql.getRawRows(`
SELECT entityName,
entityId,
hash,
isErased
FROM entity_changes
WHERE isSynced = 1
AND entityName != 'note_reordering'`);
// we know this is slow and the total content hash calculation time is logged
const hashRows = sql.disableSlowQueryLogging(
() => sql.getRawRows(`
SELECT entityName,
entityId,
hash,
isErased
FROM entity_changes
WHERE isSynced = 1
AND entityName != 'note_reordering'`)
);
// sorting is faster in memory
// sorting by entityId is enough, hashes will be segmented by entityName later on anyway

View File

@@ -225,7 +225,7 @@ function wrap(query, func) {
const milliseconds = Date.now() - startTimestamp;
if (milliseconds >= 20) {
if (milliseconds >= 20 && !cls.isSlowQueryLoggingDisabled()) {
if (query.includes("WITH RECURSIVE")) {
log.info(`Slow recursive query took ${milliseconds}ms.`);
}
@@ -295,6 +295,19 @@ async function copyDatabase(targetFilePath) {
await dbConnection.backup(targetFilePath);
}
function disableSlowQueryLogging(cb) {
const orig = cls.isSlowQueryLoggingDisabled();
try {
cls.disableSlowQueryLogging(true);
return cb();
}
finally {
cls.disableSlowQueryLogging(orig);
}
}
module.exports = {
dbConnection,
insert,
@@ -367,5 +380,6 @@ module.exports = {
transactional,
upsert,
fillParamList,
copyDatabase
copyDatabase,
disableSlowQueryLogging
};