[Webkit-unassigned] [Bug 207377] New: IndexedDB object store with a lot of data makes openCursor slower to the rest of the object stores when using their indices

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Feb 7 01:51:22 PST 2020


https://bugs.webkit.org/show_bug.cgi?id=207377

            Bug ID: 207377
           Summary: IndexedDB object store with a lot of data makes
                    openCursor slower to the rest of the object stores
                    when using their indices
           Product: WebKit
           Version: Safari Technology Preview
          Hardware: All
                OS: All
            Status: NEW
          Severity: Major
          Priority: P2
         Component: WebCore Misc.
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: carlos.aristu at openbravo.com

Created attachment 390067

  --> https://bugs.webkit.org/attachment.cgi?id=390067&action=review

Bug Reproducer

The fact of having an object store with a lot of data is impacting in the performance of the rest of object stores, making the openCursor operation much slower when using an index (even if the object store that we want to read is almost empty).

Note that when not using an index (IDBIndex), the performance seems to be not affected.

Tested with Safari Technology preview release 100 (Safari 13.2, WebKit 15610.1.2.1) on Mac, and with Safari 13 on iOS.

Steps to reproduce: 

1- Open the attached reproducer, performance.html. An IndexedDB database with two objectStores (testStore and testStore2) is created.
2- Click in “Read data (object store)”, it reads the contents of the object store “testStore2” using the openCursor operation directly with the objectStore. The testStore2 is empty and the read finishes in a few milliseconds.
3- Click in “Read data (index)”, it reads the contents of the object store “testStore2” using the openCursor operation by an index of testStore2. The testStore2 is empty and the read finishes in a few milliseconds.
4- Click in “Populate database” and wait until it finishes. It will populate “testStore” with 250000 records and testStore2 with 10 records.
5- Click in “Read data (object store)”. Reading again testStore2 (which is almost empty, 10 records). It finishes in a few milliseconds.
6- Click in “Read data (index)”. Reading again objectStestStore2tore2 (which is almost empty, 10 records). It takes at least 200 ms

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20200207/b533716c/attachment.htm>


More information about the webkit-unassigned mailing list