Блог Олега Сердюкова

Ускорение работы Mail.app и пара приёмов работы с SQLite

Если Mail.app у вас стал гораздо медленнее работать, то стоит сделать Vacuum на базу данных SQLite. Предварительно нужно выйти из Mail.app. Для наглядности можно вывести размер базы до операции и после (к сожалению, я этого не сделал).

$ ls -alh ~/Library/Mail/Envelope\ Index
$ sqlite3 ~/Library/Mail/Envelope\ Index vacuum;
$ sqlite3 ~/Library/Mail/Envelope\ Index vacuum index;
$ sqlite3 ~/Library/Mail/Envelope\ Index vacuum subjects;
$ sqlite3 ~/Library/Mail/Envelope\ Index vacuum recipients;
$ sqlite3 ~/Library/Mail/Envelope\ Index vacuum messages;
$ sqlite3 ~/Library/Mail/Envelope\ Index vacuum threads;
$ ls -alh ~/Library/Mail/Envelope\ Index

Скорее всего достаточно просто команды “vacuum”, но я дополнительно прошёлся по всем таблицам с большим количеством записей и прихватил индексы.

Если интересно, то посмотреть схему базы данных можно командой:

$ sqlite3 ~/Library/Mail/Envelope\ Index
sqlite> .schema
CREATE TABLE addresses (ROWID INTEGER PRIMARY KEY, address COLLATE NOCASE, comment, UNIQUE(address, comment));
...

Перечень таблиц:

sqlite> .tables
addresses              ews_folders            subjects
alarms                 feeds                  threads
associations           mailboxes              todo_notes
attachments            messages               todos
calendars              properties             todos_deleted_log
events                 recipients             todos_server_snapshot

Количество записей в таблицах:

sqlite> select count(*) from messages;
sqlite> select count(*) from subjects;
...

Помощь:

sqlite> .help

Описание работы с SQLite можно посмотреть в статьях ”Command Line Shell For SQLite” и ”SQLite Tutorial”.

Comments