mysqld и HandlerSocket работают в одинаковых процессах, с очень маленьким временем доступа к общим данным. Как дополнительное следствие этого доступен мониторинг через Nagios и т.д. Работа HS также видна через обычные команды MySQL: SHOW GLOBAL STATUS, SHOW ENGINE INNODB STATUS, SHOW PROCESSLIST
Рекордное среди решений для MySQL быстродействие;
Обработка почти неограниченного количества конкурентных подключений;
Поддержка сразу нескольких шаблонов запросов (например, поиск по первичному и уникальному ключу, поиск по неуникальному ключу, поддерживается указание диапазона и пределов выборки), поддержка CRUD;
Теперь давайте перейдем к более конкретному .
Особенности HandlerSocket
Самостоятельный анализ узких мест работы MySQL привел к тому, что этот исследователь фактически «вычленил» SQL из работы БД, NoSQL-протокол доступа. Основная причина, по которой выбор сделан именно в пользу NoSQL — очень быстрый поиск по первичному ключу и возможность избавиться от наиболее «тормознутого участка» во всем MySQL — его SQL-подсистемы.
Яшинори Мацунобу,автор HandlerSocket NoSQL plugin for MySQL
Яшинори , что работая в (крупнейшая японская социальная сеть с игровой составляющей), он имеет дело с частотой запросов к MySQL колеблющихся в диапазоне от 200 000 до 500 000 запросов в секунду, что, конечно же, классический MySQL выдержать даже теоретически неспособен.
В связи с этим, возвращаясь к истории и причинам разработки HandlerSocket, его создатель с сожалением пишет, что даже после выхода версии MySQL 5.5, где быстродействие сервера было существенно улучшено (для чего решены многие хронические проблемы с мьютексами), необходимый ему уровень производительности так и не был достигнут.
Конечно, SQL позволяет отчасти нивелировать эту ситуацию. Например, можно использовать постоянное соединение ( ) и подготавливать запросы ( ), в этом случае, план запроса, план оптимизации и некоторые другие мероприятия выполняются всего 1 раз среди серии подобных монотонных запросов, то есть все последующие запросы после первого отработают почти мгновенно. Но, даже при такой «удачной раскладке» производительность MySQL оставляет желать лучшего — забегая чуть вперед, — HS позволяет получать эти же данные в среднем в 5-6 раз быстрее!
Особенно эти накладные расходы становятся заметны при интенсивной работе с однотипными запросами характерными для движков CMS на более-менее популярных сайтах, которые выполняются, условно говоря, «много сотен раз в секунду».
Судите сами: каждый раз при поступлении любого запроса выполняется его лексический анализ, парсинг, обращение к схеме (чтобы узнать поля и индексы), блок работы с query cache, запускается оптимизатор, анализ связанных индексов, выборка стратегии запроса, открытие и блокировка таблиц, потом следует сам запрос к движку и его обслуживание, форматирование полученных данных, закрытие и разблокировка таблиц (на самом деле этот список слишком неполный, детали здесь я просто опускаю).
Давайте поясним последнее ключевое утверждение. При традиционной работе через SQL-интерфейс, со стороны логики работы сервера часто наблюдается очень заметный оверхед (sql overhead).
Для чего нужен HandlerSocket (HS)?
Итак, в конце 2010 года японский разработчик (Yoshinori Matsunobu) запустил свой, теперь уже чрезвычайно известный проект по созданию NoSQL-плагина для MySQL, который назвал . Этот интерфейсный плагин позволяет клиентскому приложению подключаться напрямую к движку данных MySQL для устранения избыточной нагрузки, характерной для традиционных запросов через интерфейс SQL и неприемлемой для высоконагруженных БД.
Это продолжение, начало этого материала .
Просмотров: 2387MySQL: SQL или NoSQL - вот в чем вопрос. Введение в HandlerSocket
Эксклюзивные ИТ-новости, обзоры и интервью
MySQL: SQL или NoSQL - вот в чем вопрос. Введение в HandlerSocket
Комментариев нет:
Отправить комментарий