2014-01-03 3 views
1

Я хотел попробовать IndexedDB, чтобы убедиться, что он подходит для моей цели. Выполняя некоторые испытания, я заметил, что его скорость роста, по-видимому, экспоненциально зависит от каждой вставки.Предотвращение экспоненциального роста индексированных индексов в хроме

(тестировался только в Google Chrome версии 31.0.1650.63 (Offizieller Строить 238485) м/Windows теперь)

Мой код в полном объеме: http://pastebin.com/15WK96FY

В основном я сохранить строку с 2,6 млн символов. Проверка window.webkitStorageInfo.queryUsageAndQuota Я вижу, что он потребляет ~ 7.8MB, что означает ~ 3 байта на используемый символ.

Если я сохраняю строку 10 раз, я получаю использование ~ 167 МБ, что означает ~ 6,4 байт на используемый символ.

Сохраните его 50 раз. Я высоко в гигабайтах, и мой компьютер начинает замерзать.

Я делаю что-то неправильно или есть способ обойти это поведение?

+0

Квота такая же, как и использование? – dandavis

+0

https://developers.google.com/chrome/whitepapers/storage#query. Он дает количество, включая метаданные и т. Д. В байтах. – user2089648

ответ

1

Ваш тест неверен. Поле test2 не должно индексироваться.

+1

Спасибо! Потратил меня на то, чтобы понять, что вы имели в виду. Думаю, я бы определил, какие значения будут храниться при сохранении объекта, подобно столбцам в mysql. Оказывается, это все равно сохраняет. Еще одна вещь, которая помогает много, - дождаться завершения одной транзакции до начала следующего. (Сейчас я создаю все транзакции сразу, они выполняются только после цикла [в режиме ожидания]) – user2089648

+0

В порядке. Существует только одна запись tx для каждой области. Вы должны сделать несколько запросов в транзакции и посмотреть, насколько они быстры. –

Смежные вопросы