Примерно с 6-ой версии стал замечать что работа с закладками стала медленной.
Выглядит это примерно так: беру вкладку и перетаскиваю её в некоторую папку закладок (т.е. добавляю в закладки), страница добавилась. После этого в интерфейсе наблюдается некоторая "задумчивость" (выделяемая папка в закладках не подсвечивается, иногда бывает что недоступно контекстное меню для какой то закладки или для папки если хочется произвести сортировку).
Вот сейчас например, в одну папку накидал 10 закладок, после этого удаляю одну закладку, она удалилась, но перемещая курсор по оставшимся 9-ю закладка не происходит их "подчёркивание" и такое может длиться 5-10 сек, и подобное происходит при любой работе с закладками, любое изменение приводит к подобным паузам.
Не то что бы это сейчас очень критично, но в целом неприятно, посему вопрос: это нормальное или аномальное поведение?
- - - - -
Firefox 7.0.1 из PPA Mozilla
Кол-во закладкок: 2900
Размер places.sqlite: ~63Мб
"Причёсывание" всех *.sqlite файлов происходит средствами sqlite3
Отсутствует
Размер places.sqlite: ~63Мб
У меня примерно 4000 закладок, places.sqlite весит ~12 Мб. Попробуйте сделать чистку истории и вакуумизацию базы: PlacesCleaner :: Add-ons for Firefox.
Отсутствует
hydrolizer спасибо за плагин, воспользовался им, но файл похудел не сильно, стал весить 52Мб.
После этого решил покапаться в базе и выяснить какая из таблиц самая большая.
Оказалось, что самая тяжёлая (в экспортированном виде) moz_places ~16Мб (более 170 тыс. записей), я так понял что там и закладки и история хранится.
Короче, грохнул всю историю все заполненные поля ииии после загрузки браузера получаю ~10Мб places.sqlite
Кстати говоря, выяснилось что скрипт достаточно долго не сжимал файл потому что: places.sqlite - Error: file is encrypted or is not a database, вон оно как.
Посмотрю насколько всё изменилось.
Отсутствует
joker_ru пишет: Размер places.sqlite: ~63МбУ меня примерно 4000 закладок, places.sqlite весит ~12 Мб. Попробуйте сделать чистку истории и вакуумизацию базы: PlacesCleaner :: Add-ons for Firefox.
10 056 закладок places.sqlite 7.2 Мб.
чяднт?
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
чяднт?
Может, у меня хранится больше фавиконок. Может, больше аннотаций. Может, еще что-то.
Если в консоли прогнать вот такой код:
Components.utils.import("resource://gre/modules/Services.jsm"); var mDBConn = Components.classes["@mozilla.org/browser/nav-history-service;1"] .getService(Components.interfaces.nsPIPlacesDatabase).DBConnection; var stmt=mDBConn.createStatement("select name from sqlite_master where type='table' and name like 'moz%'"); var tables=[]; while(stmt.step()) tables.push(stmt.row.name); stmt.finalize(); Services.console.logStringMessage(tables.map(function(t) { try { stmt=mDBConn.createStatement("select count(*) cnt from "+t); stmt.executeStep(); return t+": "+stmt.row.cnt; } finally { stmt.finalize(); } }).join("\n")); Services.console.logStringMessage("done");
то на моем текущем профиле он показывает такие результаты:
moz_bookmarks: 3860
moz_bookmarks_roots: 5
moz_keywords: 0
moz_favicons: 1375
moz_annos: 2430
moz_anno_attributes: 13
moz_items_annos: 3489
moz_places: 8137
moz_historyvisits: 32705
moz_inputhistory: 124
Отсутствует
hydrolizer
moz_historyvisits: 32705
вот оно
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
вот оно
Совсем не оно. Случайно заметил, сколько весит places.sqlite в свежесозданном профиле - 10 Мб. Отличие по размеру от моего достаточно старого и совсем не свежего places.sqlite в действующем профиле небольшое.
Отредактировано hydrolizer (17-10-2011 07:41:27)
Отсутствует
Отличие по размеру от моего достаточно старого и совсем не свежего places.sqlite в действующем профиле небольшое.
С некоторых пор (с 4.0, вроде бы) размер places.sqlite стал кратным 10 мегабайтам. Оптимизация какая-то, надо полагать.
Отредактировано Infocatcher (17-10-2011 08:57:12)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Совсем не оно. Случайно заметил, сколько весит places.sqlite в свежесозданном профиле - 10 Мб. Отличие по размеру от моего достаточно старого и совсем не свежего places.sqlite в действующем профиле небольшое.
только что проверил мдяяяя
короче свежесозданный профиль без ничего
создал-вышел-удалил places.sqlite,bookmarks.html,и содержимое bookmarkbackups
запустил фф снова - вышел смотрю
7ка places.sqlite 10 мб
3.6 places.sqlite 140 кб
фейспалм.
вот что они туда пихают???? этож [пииип] стыд!
Добавлено 17-10-2011 09:07:02
С некоторых пор (с 4.0, вроде бы) размер places.sqlite стал кратным 10 мегабайтам. Оптимизация какая-то, надо полагать.
за такую "оптимизацию" бить надо палками!
Отредактировано okkamas_knife (17-10-2011 09:07:02)
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
okkamas_knife
Да ничего туда не пихают, можно сделать БД vacuum и сильно уменьшить размер... до первого перезапуска.
Я думаю, это может быть от фрагментации жесткого диска – размер как раз округляется до 10 Мбайт.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Я думаю, это может быть от фрагментации жесткого диска – размер как раз округляется до 10 Мбайт.
не точно не это.
размер кластера в нтфс обычно 4кб,а 10мб кластеры мне чтото не встречались.
зачем они такое извращение сделали непонятно.
Отредактировано okkamas_knife (17-10-2011 09:37:05)
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Нашелся некий баг на тему: https://bugzilla.mozilla.org/show_bug.cgi?id=616019
Добавлено 17-10-2011 10:19:52
И Avoid sqlite fragmentation via SQLITE_FCNTL_CHUNK_SIZE – там в патче
+ // Grow places in 10MB increments + mDBConn->SetGrowthIncrement(10 * 1024 * 1024, EmptyCString());
Отредактировано Infocatcher (17-10-2011 10:19:52)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Не то что бы это сейчас очень критично, но в целом неприятно, посему вопрос: это нормальное или аномальное поведение?
Любое явление в разных условиях и у разных юзеров может быть как нормальным так и ненормальным, смотря что было нормой раньше в тех же условиях и у того же юзера.
Отредактировано slbgz (17-10-2011 10:56:09)
Отсутствует
фейспалм.
Ввиду чего? Эти 10 Мб так критичны для размера ваших носителей?
Отсутствует
скрытый текстимхо Мозилле надо создавать своё НКВД(и проводить массовые чистки и расстрелы)
Отсутствует
Ввиду чего? Эти 10 Мб так критичны для размера ваших носителей?
у меня каждый мегабайт свободного места на счету. плюс не забываем про передачу данных по сети у тех у кого трафик платный,плюс у десяти мегабайтного файла больше шансов оказаться фрагментированным плю изза большего объёма винту надо сделать больше движений головкой при чтении а если он хранится в памяти то просто так жрать оперативу тоже не есть правильно.
sarcasm on
почему бы если уж они с этим так сделали им все картинки не перевести в бмп или тифф? ну будет весить инсталлятор на сотню мег больше,вам это критично?
sarcasm off
почему раньше люди писали компактный и быстрый код а сейчас пишут большой и тормозной?деградация?
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
плюс не забываем про передачу данных по сети у тех у кого трафик платный
Вы кому-то куда-то по сети передаете этот файл places.sqlite? Или вы о том, что этот файл передается, будучи запакованным в инсталлятор? Уверяю вас: не передается. Он создается самим FF - файл при первом открытии коннекта к places, таблицы - DDL-инструкциями. Если не верите - распакуйте дистрибутив, и попробуйте там найти хоть один файл .sqlite.
,плюс у десяти мегабайтного файла больше шансов оказаться фрагментированным плю изза большего объёма винту надо сделать больше движений головкой при чтении
Вам доводилось сталкиваться с большими БД? Не задумывались, почему они при файлах данных в сотни гигабайт размером выдерживают транзакционную нагрузку в миллионы транзакций в секунду? В том числе потому, что их внутренее устройство учитывает неизбежную фрагментацию. И SQLite здесь не исключение. У меня, кстати, нет абсолютно никаких нареканий на скорость работы базы.
а если он хранится в памяти то просто так жрать оперативу тоже не есть правильно
А если такие вещи хранятся в памяти, то они хранятся не в виде raw data, считанных из файла как есть, а в десериализованном в объекты/структуры виде. И сам размер файла здесь уже дело достаточно пятое.
почему раньше люди писали компактный и быстрый код а сейчас пишут большой и тормозной?деградация?
Ну известно почему - потому же, почему раньше небо было голубее, люди добрее, и т.д и т.п.
Отредактировано hydrolizer (17-10-2011 17:32:50)
Отсутствует
Вы кому-то куда-то по сети передаете этот файл places.sqlite?
а что насчет сервисов синхронизации и всяких дропбоксов?опять же работа в локальной сети с сетевого диска лишние 10 мег трафика это время.
вот у вас сотня пользователей у всех профили лежат на серваке, при старте сервак должен отдать целый гиг при объёме в 10мег а при 1 мегабайте всего сотню мег так что будет работать быстрее?
Вам доводилось сталкиваться с большими БД? Не задумывались, почему они при файлах данных в сотни гигабайт размером выдерживают транзакционную нагрузку в миллионы транзакций в секунду? В том числе потому, что их внутренее устройство учитывает неизбежную фрагментацию. И SQLite здесь не исключение. У меня, кстати, нет абсолютно никаких нареканий на скорость работы базы.
ага только винты тоже изнашиваются дергаясь лишний раз для считывания -передачи абсолютно бесполезных данных.
а то что выдерживают нагрузку это не оправдание плохому коду
на нынешних машинках можно и уравнения решать методом тупого перебора не изучая математику и формулы и что это правильно?
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Любое явление в разных условиях и у разных юзеров может быть как нормальным так и ненормальным, смотря что было нормой раньше в тех же условиях и у того же юзера.
как я написал в своём первом сообщении, у меня браузер после добавления закладки возвращался в полностью функциональное состояние через 5-10 сек, я считаю это не нормально, с такими задержками работать не комфортно, но возможно
кстати говоря, после всех описанных манипуляций, получил маленький и компактный places.sqlite, работа с закладками стала шустрей, но всё-таки проявляется некоторая "тупка" при добавлении новых закладок. у всех так?
Отсутствует
но всё-таки проявляется некоторая "тупка" при добавлении новых закладок. у всех так?
у меня - не так, у тебя тоже будет не так если проследуешь по ссылкам в моей подписи...
Отсутствует
кстати говоря, после всех описанных манипуляций, получил маленький и компактный places.sqlite, работа с закладками стала шустрей
Вы бы изложили детально по пунктам, что сделали, и какого результата в количественных показателях (хотя бы относительно общего размера базы) добились. Наверняка ведь у кого-то возникнет проблема, аналогичная вашей.
Отредактировано hydrolizer (18-10-2011 15:59:03)
Отсутствует
Вы бы изложили детально по пунктам, что сделали, и какого результата в количественных показателях (хотя бы относительно общего размера базы) добились. Наверняка ведь у кого-то возникнет проблема, аналогичная вашей.
Оказалось, что самая тяжёлая (в экспортированном виде) moz_places ~16Мб (более 170 тыс. записей), я так понял что там и закладки и история хранится.
Короче, грохнул всю историю все заполненные поля ииии после загрузки браузера получаю ~10Мб places.sqlite
то есть, создал минимально возможный (как выяснилось) places.sqlite, более ни чего не делал, к тюнингу от slbgz не приступал.
И после нескольких дней эксплуатации заметил что работа с закладками стала шустрей но все-равно некоторые задержки проявляются.
Отсутствует
slbgz пишеткстати говоря, после всех описанных манипуляций, получил маленький и компактный places.sqlite, работа с закладками стала шустрей
Вы бы изложили детально по пунктам, что сделали, и какого результата в количественных показателях (хотя бы относительно общего размера базы) добились. Наверняка ведь у кого-то возникнет проблема, аналогичная вашей.
hydrolizer, цитата не моя, поправь, пожалуйста
Добавлено 18-10-2011 14:16:53
к тюнингу от slbgz не приступал.
И после нескольких дней эксплуатации заметил что работа с закладками стала шустрей но все-равно некоторые задержки проявляются.
задержки будут так как они не только от компактирования базы зависимы.
Отредактировано slbgz (18-10-2011 14:16:53)
Отсутствует
Я вижу здесь собрались люди, которые ни хрена не смыслят в базах данных и пытаются ругать мозилловцев за то, что они в них немного таки смыслят.
Гениально, просто гениально.
Давайте с вами поговорю я и мой воображаемый друг. Он будет задавать мне глупые вопросы, а я буду давать не менее глупые ответы.
— Почему размер файла кратен 10 Мб?
— Для избежания или, как минимум, уменьшения фрагментации при записи.
— Но он же имеет больше шансов фрагментироваться!
— Да, если писать его по кускам. Если отрезать кусок в 10 Мб сразу, то ОС постарается найти на жестком диске свободный кусок размером в эти 10 Мб. Так что этот кусок в 10 Мб как-раз имеет самые минимальные шансы оказаться фрагментированным. Разве что ты забил винт фотками до отказа, а потому удалил несколько случайных фотографий в разных местах и после этого запустил фокс первый раз и он создал на этом винте этот файл. Да, в таком случае у системы просто не будет выхода кроме как разделить эти 10 Мб на фрагменты.
— Но он же жрёт место на винте!
— 10 Мб это меньше 1% от 1 Гб, у тебя винт как минимум на 60 таких Гб. Всё ещё жрёт? Снеси один фильм или почисти свою коллекцию музыки наконец. Вот уж что точно жрёт место.
— Но он будет долго грузиться!
— Кто тебе ляпнул, что он сразу грузится целиком? Кто тебе сказал, что грузятся пустые блоки?! Более того, даже при необходимости выполнить выборку из базы подгружаются только необходимые таблицы. Причём опять же не факт, что целиком.
— Синхронизация!
— И?
— Дофига же!
— При синхронизации передаются только изменения.
— А если профили на сервере?
— А если вы извращенец? Кэш лежит в профиле, обновляется куда чаще и занимает в разы больше. Всё ещё храните профили на сервере? Ах да, его можно выключить, но это увеличит расход траффика на перекачку того, что могло бы лежать в кэше. Локально. У пользователя. Да, у вас может быть свой кэширующий прокси, но это всё равно медленнее, чем считать файл с винта.
— …
— А вот иногда делать бэкапы на сервер ни кто не мешает если это вообще нужно. Как вариант — можно поднять локальный сервер синхронизации и вся важная для пользователей информация будет бэкапиться на сервер в полностью автоматическом режиме. Причём передаваться будут только изменения, что сильно сократит объём передаваемой информации.
slbgz
Твоя двойка вообще про базы данных ни сном, ни духом. У тебя все твои закладки лежит в XML-подобном чудовищном файле, который действительно читается целиком при загрузке и парсится тогда же. Естественно его _нужно_ держать в памяти до загрузки фокса если хочешь, чтоб фокс быстро запустился и быстро с ним работал. А если учесть, что для обновления его на винте его необходимо перезаписать целиком, то тут просто выхода нет. Вынос же профиля с places.sqlite в память существенно в работе с закладками ни чего не изменит.
Отредактировано Lain_13 (18-10-2011 17:38:06)
Отсутствует