enhancementhelp wantedperformance issue
Repository metrics
- Stars
- (14,539 stars)
- PR merge metrics
- (Avg merge 2d) (53 merged PRs in 30d)
Description
Hello, listing file in backup versions took nearly two hours, I don't know if is bug, but in log you can see query running 1,5 hours.
Helo: My backup: Source 800GB Backup 540GB 104 versions Sqlite DB have 3GB size Duplicati 2.0.1.53 Windows FTP
Running command:
duplicati.commandline list --dbpath="C:\Programy\Duplicati2_home\LBOUAFEXVG.sqlite" "ftp connections striing" "path/to/file/in/backup.doc" --tempdir=D:\Duplicati2_TEMP\commandlinetemp --log-file="D:\Duplicati2_TEMP\commandlinetemp\log.log" --debug-output --log-level=Profiling ---debug-retry-errors
This query took nearly two hours:
2017-05-04 21:39:38Z - Profiling: ExecuteReader: SELECT "C"."Path", "D"."Length", "C"."FilesetID" FROM (SELECT "A"."Path", "B"."FilesetID" FROM "Filenames-713E76757068BD4F929AFF7D55559DC5" A, (SELECT "FilesetID", "Timestamp" FROM "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" ORDER BY "Timestamp" DESC) B ORDER BY "A"."Path" ASC, "B"."Timestamp" DESC) C LEFT OUTER JOIN (SELECT "Length", "FilesetEntry"."FilesetID", "File"."Path" FROM "Blockset", "FilesetEntry", "File" WHERE "File"."BlocksetID" = "Blockset"."ID" AND "FilesetEntry"."FileID" = "File"."ID" ) D ON "C"."FilesetID" = "D"."FilesetID" AND "C"."Path" = "D"."Path"
took 01:38:50.135
Full log:
2017-05-04 19:53:42Z - Profiling: Starting - Running List
2017-05-04 19:53:42Z - Profiling: Starting - ExecuteScalar: INSERT INTO "Operation" ("Description", "Timestamp") VALUES (?, ?); SELECT last_insert_rowid();
2017-05-04 19:53:42Z - Profiling: ExecuteScalar: INSERT INTO "Operation" ("Description", "Timestamp") VALUES (?, ?); SELECT last_insert_rowid(); took 00:00:00.031
2017-05-04 19:53:42Z - Profiling: Starting - ExecuteReader: SELECT "ID", "Timestamp" FROM "Fileset" ORDER BY "Timestamp" DESC
2017-05-04 19:53:42Z - Profiling: ExecuteReader: SELECT "ID", "Timestamp" FROM "Fileset" ORDER BY "Timestamp" DESC took 00:00:00.000
2017-05-04 19:53:42Z - Profiling: Starting - ExecuteNonQuery: CREATE TEMPORARY TABLE "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" AS SELECT DISTINCT "ID" AS "FilesetID", "Timestamp" AS "Timestamp" FROM "Fileset"
2017-05-04 19:53:42Z - Profiling: ExecuteNonQuery: CREATE TEMPORARY TABLE "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" AS SELECT DISTINCT "ID" AS "FilesetID", "Timestamp" AS "Timestamp" FROM "Fileset" took 00:00:00.031
2017-05-04 19:53:42Z - Profiling: Starting - ExecuteNonQuery: CREATE INDEX "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2_FilesetIDTimestampIndex" ON "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" ("FilesetID", "Timestamp" DESC)
2017-05-04 19:53:42Z - Profiling: ExecuteNonQuery: CREATE INDEX "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2_FilesetIDTimestampIndex" ON "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" ("FilesetID", "Timestamp" DESC) took 00:00:00.000
2017-05-04 19:53:42Z - Profiling: Starting - ExecuteReader: SELECT DISTINCT "A"."FilesetID", "B"."FileCount", "B"."FileSizes" FROM "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" A LEFT OUTER JOIN ( SELECT "A"."FilesetID" AS "FilesetID", COUNT(*) AS "FileCount", SUM("C"."Length") AS "FileSizes" FROM "FilesetEntry" A, "File" B, "Blockset" C WHERE "A"."FileID" = "B"."ID" AND "B"."BlocksetID" = "C"."ID" GROUP BY "A"."FilesetID" ) B ON "A"."FilesetID" = "B"."FilesetID" ORDER BY "A"."Timestamp" DESC
2017-05-04 19:56:48Z - Profiling: ExecuteReader: SELECT DISTINCT "A"."FilesetID", "B"."FileCount", "B"."FileSizes" FROM "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" A LEFT OUTER JOIN ( SELECT "A"."FilesetID" AS "FilesetID", COUNT(*) AS "FileCount", SUM("C"."Length") AS "FileSizes" FROM "FilesetEntry" A, "File" B, "Blockset" C WHERE "A"."FileID" = "B"."ID" AND "B"."BlocksetID" = "C"."ID" GROUP BY "A"."FilesetID" ) B ON "A"."FilesetID" = "B"."FilesetID" ORDER BY "A"."Timestamp" DESC took 00:03:05.657
2017-05-04 19:56:48Z - Profiling: Starting - ExecuteNonQuery: CREATE TEMPORARY TABLE "Filenames-713E76757068BD4F929AFF7D55559DC5" ("Path" TEXT NOT NULL)
2017-05-04 19:56:48Z - Profiling: ExecuteNonQuery: CREATE TEMPORARY TABLE "Filenames-713E76757068BD4F929AFF7D55559DC5" ("Path" TEXT NOT NULL) took 00:00:00.000
2017-05-04 19:56:48Z - Profiling: Starting - ExecuteReader: SELECT DISTINCT "Path" FROM "File"
2017-05-04 19:56:48Z - Profiling: ExecuteReader: SELECT DISTINCT "Path" FROM "File" took 00:00:00.000
2017-05-04 19:56:51Z - Profiling: Starting - ExecuteNonQuery: DELETE FROM "Filenames-713E76757068BD4F929AFF7D55559DC5" WHERE "Path" NOT IN (SELECT DISTINCT "Path" FROM "File", "FilesetEntry" WHERE "FilesetEntry"."FileID" = "File"."ID" AND "FilesetEntry"."FilesetID" IN (SELECT "FilesetID" FROM "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2") )
2017-05-04 20:00:47Z - Profiling: ExecuteNonQuery: DELETE FROM "Filenames-713E76757068BD4F929AFF7D55559DC5" WHERE "Path" NOT IN (SELECT DISTINCT "Path" FROM "File", "FilesetEntry" WHERE "FilesetEntry"."FileID" = "File"."ID" AND "FilesetEntry"."FilesetID" IN (SELECT "FilesetID" FROM "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2") ) took 00:03:56.821
2017-05-04 20:00:47Z - Profiling: Starting - ExecuteReader: SELECT "C"."Path", "D"."Length", "C"."FilesetID" FROM (SELECT "A"."Path", "B"."FilesetID" FROM "Filenames-713E76757068BD4F929AFF7D55559DC5" A, (SELECT "FilesetID", "Timestamp" FROM "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" ORDER BY "Timestamp" DESC) B ORDER BY "A"."Path" ASC, "B"."Timestamp" DESC) C LEFT OUTER JOIN (SELECT "Length", "FilesetEntry"."FilesetID", "File"."Path" FROM "Blockset", "FilesetEntry", "File" WHERE "File"."BlocksetID" = "Blockset"."ID" AND "FilesetEntry"."FileID" = "File"."ID" ) D ON "C"."FilesetID" = "D"."FilesetID" AND "C"."Path" = "D"."Path"
2017-05-04 21:39:38Z - Profiling: ExecuteReader: SELECT "C"."Path", "D"."Length", "C"."FilesetID" FROM (SELECT "A"."Path", "B"."FilesetID" FROM "Filenames-713E76757068BD4F929AFF7D55559DC5" A, (SELECT "FilesetID", "Timestamp" FROM "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" ORDER BY "Timestamp" DESC) B ORDER BY "A"."Path" ASC, "B"."Timestamp" DESC) C LEFT OUTER JOIN (SELECT "Length", "FilesetEntry"."FilesetID", "File"."Path" FROM "Blockset", "FilesetEntry", "File" WHERE "File"."BlocksetID" = "Blockset"."ID" AND "FilesetEntry"."FileID" = "File"."ID" ) D ON "C"."FilesetID" = "D"."FilesetID" AND "C"."Path" = "D"."Path" took 01:38:50.135
2017-05-04 21:39:38Z - Profiling: Starting - ExecuteNonQuery: DROP TABLE IF EXISTS "Filenames-713E76757068BD4F929AFF7D55559DC5"
2017-05-04 21:39:38Z - Profiling: ExecuteNonQuery: DROP TABLE IF EXISTS "Filenames-713E76757068BD4F929AFF7D55559DC5" took 00:00:00.000
2017-05-04 21:39:38Z - Profiling: Starting - ExecuteNonQuery: DROP TABLE IF EXISTS "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2"
2017-05-04 21:39:38Z - Profiling: ExecuteNonQuery: DROP TABLE IF EXISTS "Filesets-6EFDD08F79EE8546BA8B74889C9B10B2" took 00:00:00.000
2017-05-04 21:39:38Z - Profiling: Running List took 01:45:55.786