http://blog.boxedice.com/2010/02/28/notes-from-a-production-mongodb-deployment/.
Узнал здесь
оригинал; полная цитата:
Сегодня был неожиданно удивлен, какие удобные штуки таит в себе MySQL.
Хочу представить вашему вниманию фичу MySQL — профайлинг.
Появилась она начиная с версии 5.0.37.
Всего парой запросов можно узнать, какими запросами формируется страница (для веб-девелоперов)
и почему она тормозит.
И раньше подобный функционал был доступен, но пользоваться журналом запросов не в пример сложнее.
Итак, как пользоваться:
mysql> set profiling=1;
mysql> select count(*) from comment;
mysql> select count(*) from message;
mysql> show profiles;
+———-+————+——————————+
| Query_ID | Duration | Query |
+———-+————+——————————+
| 1 | 0.00012700 | select count(*) from comment |
| 2 | 0.00014200 | select count(*) from message |
+———-+————+——————————+
2 rows in set (0.00 sec)
Вуаля! Все выполненные запросы за сессию с временем выполнения.
На мой взгляд очень просто и сверх-удобно.
Можно пойти дальше, и узнать подробно на что тратилось время по каждому запросу:
mysql> show profile for query 1;
+——————————–+———-+
| Status | Duration |
+——————————–+———-+
| starting | 0.000015 |
| checking query cache for query | 0.000021 |
| checking permissions | 0.000003 |
| Opening tables | 0.000007 |
| System lock | 0.000004 |
| Table lock | 0.000023 |
| init | 0.000005 |
| optimizing | 0.000005 |
| executing | 0.000025 |
| end | 0.000003 |
| end | 0.000001 |
| query end | 0.000002 |
| storing result in query cache | 0.000003 |
| freeing items | 0.000003 |
| closing tables | 0.000004 |
| logging slow query | 0.000002 |
| cleaning up | 0.000001 |
+——————————–+———-+
17 rows in set (0.00 sec)
Подробнее о профайлинге в статье: Using the New MySQL Query Profiler
Upd: как точно подметил zayceslavshow profiles по умолчанию показывает профили для 15 запросов. Кол-во запрсов можно увеличить с помощью параметра profiling_history_size, но не более чем до 100.
mysql> set profiling=1;
mysql> set profiling_history_size=100;
Случайно наткнулся на комментарий, что привело меня к инструменту MySQL Performance Tuning (ещё ссылка, tuning-primer – сам скрипт) для оптимизации mySQL путём советов по изменению конфига на основе логов.
Вот заинтересовало;).
Решил почитать.
Статья в Википедии (англ.)
Архитектура Google (оригинал).
видео про BigTable
Здесь пишут, что не надо полагаться на ревизии, т.к. они стираются при репликации и при сжатии (compaction) базы.
Тем не менее посмотрим пример (работаем с данными, приведёнными в предыдущем посте):
Continue reading »
Вместо индексов в CouchDB используется map/reduce.
Часто хватает создания одной только map-функции вида
Continue reading »
Установка CouchDB под Windows
Честно пытался поставить всё сам в соответствии с официальной Wiki.
Почти получилось.
Но так и не смог забороть эксепшн
** exception exit: "I?eei?aiea ia auei caiouaii,
iineieueo iii iaei??aeoii iano?iaii.
Iiaoi?iay onoaiiaea i?eei?aiey ii?ao ?aoeou aaiio? i?iaeaio."
in function couch_util:start_driver/1
in call from couch_server_sup:start_server/1
Пришлось воспользоваться ссылкой на бинарники CouchDB под Windows (полный «пак») и вроде заработало.
Но правда надо, чтоб был установлен Erlang (какие-то библиотеки видимо ставит).
После этого осаталось только запустить werl и набрать
couch_server:start().
Проверить работоспособность можно по ссылке.
Ссылки:
установка CouchDB под Windows
(англ.)
и ещё про установку CouchDB под Windows
(англ.)
в этом письме
есть
ссылка на бинарники CouchDB под Windows
(с эрлангом и всем прочим)
CouchDb – это документоориентированная база данных.
Само хранилище — это набор документов, неструктурированных. Точнее, индексированных только по ключу.
Плюс к документам есть набор view, то есть срезов, отображающих с помощью функций map/reduce множество документов в список {key, value}, отсортированный, естественно, по ключу (map, как водится, создаёт «срезы», reduce – выбирает по ключу).
То есть view это индекс такой по сути (ключ тут, кстати, может быть довольно сложный, не просто цифра или строчка).
При этом и построение этих срезов, и выборка из них легко масштабируются и распределяются по кластеру.
Официальная книга (англ.)
http://en.wikipedia.org/wiki/CouchDB (англ.) – очень коротенько
http://habrahabr.ru/blogs/webdev/25841/ – «тизер»
http://www.cmlenz.net/archives/2007/10/couchdb-joins (англ.) – примеры http://labs.mudynamics.com/2009/04/03/interactive-couchdb/ (англ.) – показывает, какие map/reduce к какой выборке приводят (примеры)
http://wiki.apache.org/couchdb/ (англ.) – официальная wiki для CouchDB
установка CouchDB под Windows (англ.)
и ещё про установку CouchDB под Windows (англ.)
в этом письме есть ссылка на бинарники CouchDB под Windows (с эрлангом и всем прочим)