Pull to refresh
  • by relevance
  • by date
  • by rating

Онлайн митап от ВсеИнструменты.Ру о PHP, MySQL, нагрузках и асинхронности

ВсеИнструменты.ру corporate blog High performance *PHP *MySQL *

Онлайн митап, посвященный опыту внедрения микросервисов и выбору между PHP и Go для этого, про эксплуатацию MySql на постоянно растущих нагрузках, а также про асинхронный PHP, его настоящее и будущее.

Читать далее
Total votes 18: ↑17 and ↓1 +16
Views 4.8K
Comments 6

MySQL Performance real life Tips and Tricks

MySQL *
Пообещал вчера написать статью о реальных случаях оптимизации БД MySQL.
Пришлось сегодня вставать утром пораньше чтобы воплотить обещанное в жизнь.
Централизованное управление мыслями поддерживать еще сложно, поэтому не судите строго за казусы и ляпсусы в моей статье.

В последнее время приходится достаточно часто заниматься оптимизацией производительности сайтов. И как правило «бутылочным горлышком» в производительности работы этих сайтов является именно БД, ошибки как в архитектуре так и в выполнении запросов. Начиная от неправильной расстановки индексов, либо совершенным их отсутствием, неправильным (неэкономным) выбором типов данных под определенное поле, заканчивая абсолютно нелогичной архитектурой БД и такими же нелогичными запросами.

В данной статье опишу несколько приемов, которые были использованы для приложения с 4млн+ пользователей и которое имея порядка 100млн+ хитов в сутки, а в конце опишу задачу, которая решалась недавно и может быть многоуважаемое сообщество предложит мне решения этой задачи более эффективное нежели то, к которому пришел я.

Читать дальше →
Total votes 147: ↑141 and ↓6 +135
Views 35K
Comments 93

MySQL Performance real life Tips and Tricks. To be continued.

MySQL *
По заявкам трудящихся решил написать еще одну статью, посвященную оптимизации запросов в MySQL.

В прошлой статье habrahabr.ru/blogs/mysql/38907 рассматривались вопросы оптимизации LIMIT, GROUP BY, COUNT.

В данной статье я немного вернусь к вышеописанному и опишу пару примеров, с которыми столкнулся на проекте недавно, после этого приведу еще пару небольших примеров относительно того что такое хорошо и что такое плохо в MySQL.
Читать дальше →
Total votes 86: ↑81 and ↓5 +76
Views 7.6K
Comments 65

MySQL Performance real life Tips and Tricks. Part 3-rd.

MySQL *
Решил продолжить цикл заметок по данной тематике. В данной статье особое место хотел уделить профайлингу MySQL запросов. Описать средства, которые предоставляются MySQL для профайлинга, и что нужно делать для определения узких мест запроса.

Также, после опубликования первых двух статей я получил пару отзывов и вопросов, связанных с проектированием БД / расстановкой индексов / составлением запросов. На многие вопросы старался отвечать. С некоторыми из них поделюсь и в этой статье.

Читать дальше →
Total votes 58: ↑55 and ↓3 +52
Views 21K
Comments 40

«Производительность MySQL» в Киеве, 22.09.2009

Lumber room
Сегодня был на конференции "Производительность MySQL". Докладчик был Дмитрий Кравчук. Спасибо maghamed, 60% конференции я уже знал.
Сама конференция была интересной, в хронографическом порядке зарождения MySQL. Начиная от 1995 года, когда собрались Монти и Дэвид, до сегодняшнего дня, MySQL Perf версии.
Что не понравилось:
  • Sun имеет инсайдерскую версию MySQL Perf (производительность чуть выше чем в 5.4), которую не спешит выкатывать.
  • Почти всю конференцию было слышно «Sun это, Sun то».
  • Обделили maatkit вниманием (может потому что вражеская разработка?)
  • Порадовал слушатель, в компании которого была «масштабируемая система» — 1500 запросов на 1 страницу. При этом их техлид считает memcache костылями.
  • Не было бутербродов :(

Что понравилось:
  • Докладчик :). Дмитрий отвечал на все вопросы, было живое обсуждение. В конце выступления пошли хинты, про которые я до этого не слышал и нигде не видел.
  • Принцип «Доверяй, но проверяй». Дмитрий не верил никому, поэтому полностью сам тестил MySQL в производительности.
  • В зале был человек от Percona, который иногда помогал Дмитрию с ответами.
  • MySQL развивается! Не смотря на покупку Sun в последние годы много внимания было уделено производительности, что привело к появлению версии 5.4.

Пару хинтов для себя, чтобы не забыть:
  • Каждая аппликация уникальная и сервер надо настраивать под конкретные нужды (ваш КО)
  • Сейчас есть баг с innodb_max_dirty_pages_pct. Это значение просто игнорируется. Патч есть, в основную ветку еще вроде не внесли (могу ошибаться)
  • Пока существует баг с innodb_max_dirty_pages_pct влиять на флаш «грязных страниц» можно через innodb_log_file (не спрашивайте почему, спросите у Димы)
  • Интересная опция, про которую раньше не слышал — innodb_flush_log_trx_commit. Принимает значения 0, 1, 2. 0 — флаш каждую секунду (0 коммитов в сек = 1 флаш), 1 — флаш каждый коммит (10тыс коммитов в сек = 10тыс флашей), 2 — флаш каждую секунду, если был коммит (10 тыс коммитов в сек = 1 флаш). Оптимальный вариант для быстродействия естессно 2
  • innodb_io_capacity — стоит выставить в зависимости от возможностей винчестера. Дмитрий предлагал 2000
  • Query cache больше 20мб — зло
  • С включенным double write buffer в некоторых случаях можно потерять до 30% производительности
  • Redo log, bin log, Double Write buffer стоит хранить на разных винчестерах из-за random read для самой базы
  • Иногда стоит поиграться с max_purge_log
  • Блог Дмитрия dimitrik.free.fr
Total votes 7: ↑7 and ↓0 +7
Views 248
Comments 10

MySQL песочница

MySQL *
Sandbox
Периодически( а иногда и достаточно часто) возникает необходимость в тестовых, или иных других целях, поднять пару mysql серверов, а можно и с реплицированием, для откатки или отладки того или иного процесса.
Автоматизировать самому данное телодвижение зачастую нет смысла, поскольку это не так часто необходимо, как хочется.
Читать дальше →
Total votes 43: ↑39 and ↓4 +35
Views 3.5K
Comments 11

MySQL песочница #2

MySQL *
Продолжение. Начало тут.

Множественные песочницы.
Вы можете создавать множественные песочницы командой
$ make_multiple_sandbox /path/to/tarball
Будут созданы 3 песочницы, одной версии, без репликации.
При необходимости, также есть возможность создания множественной (3 шт) пeсочницы с использованием разных версий mysql
Читать дальше →
Total votes 18: ↑17 and ↓1 +16
Views 1K
Comments 1

read_buffer_size может разрывать репликацию данных

MySQL *
Sandbox
Перевод свежей статьи Miguel Angel Nieto «read_buffer_size can break your replication».

Существуют некоторые переменные, которые могут влиять на проведение репликации и иногда причинять большие неприятности. В этом посте я собираюсь поговорить о переменной read_buffer_size, и о том, как эта переменная вместе с max_allowed_packet может разорвать вашу репликацию.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Views 4.1K
Comments 2

Tips & tricks for MySQL Developers. Работа с SQL

MySQL *
Tutorial

Эта статья задумана мной как сборник некоторых интересных моментов по использованию и оптимизации SQL запросов в БД MySQL, на мой взгляд, плохо освещенных в интернете. Так, из статьи вы узнаете о конструкции with rollup, и о том, как переписать подзапросы in и not in на join'ы, а так же обновление и удаление данных в нескольких таблицах — одним запросом, и многое другое. Начнем по порядку.
Читать дальше →
Total votes 71: ↑67 and ↓4 +63
Views 46K
Comments 28

Поиск различных вариантов транслитерации русских текстов (ФИО) латиницей для выборок в MySQL

PHP *MySQL *Regular expressions *
Собственно, столкнулся с банальной задачей — есть база, в которой есть масса данных ФИО, написанных латиницей. Зачастую достаточно безграмотно и непредсказуемо транслитерировано. Вроде бы и есть ГОСТ 7.79 (ISO 9), но на практике его далеко не всегда соблюдают.
Задача — есть БД с записями (как правило, ФИО) латиницей. Плохой латиницей. Требуется по русской подстроке поиска в вэб-приложении выбрать из БД (MySQL) записи, похоже транслитерированные на латиницу.

Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Views 10K
Comments 6

Сервис от компании Percona для создания оптимальной конфигурации MySQL серверов и анализа SQL-запросов

Website development *MySQL *
Предлагаю ознакомиться с сервисом от компании Percona, который позволяет правильно настроить конфигурацию MySQL сервера на основе конкретных условий использования и проанализировать используемые SQL-запросы на наличие ошибок и недочетов.



Анализ запросов в данном сервисе — не является заменой команде EXPLAIN, которая ориентирована на анализ производительности запроса, а является скорее дополнением, которое анализирует запрос с точки зрения его синтаксиса.

Читать дальше →
Total votes 22: ↑17 and ↓5 +12
Views 16K
Comments 8

MySQL – это лучшая NoSQL-система

Wix.com corporate blog MySQL *NoSQL *
При рассмотрении сценариев использования NoSQL, таких как хранение пар ключ-значение, оказывается, что MySQL более предпочтительна с точки зрения производительности, легкости использования и стабильности. MySQL – это основательная система с обилием онлайн-материалов, которые охватывают все темы от основных операций и разбора ошибок до репликации и различных паттернов использования. Это дает MySQL преимущество перед более молодыми NoSQL-системами, у которых нет такого опыта.

За последние годы NoSQL-системы стали господствующим направлением. Многие разработчики видят в NoSQL-системах, таких как MongoDB, Cassandra, Redis или Hadoop, оптимальный вариант для построения своих приложений, считая их единой семьей продуктов, которая обесценивает старые SQL-системы.

Зачастую, в основе решения об использовании базы данных NoSQL лежит рекламная шумиха или ошибочное убеждение, что реляционные базы данных не могут обеспечить такую же производительность, как базы данных NoSQL. Когда доходит до выбора базы данных, инженеры часто упускают из виду эксплуатационные расходы, а также соображения стабильности и зрелости технологии. Чтобы узнать больше об ограничениях и изъянах различных NoSQL (а также SQL) систем, обратите внимание на серию статей проекта Jepsen, опубликованную на Aphyr.com.

В этой статье мы объясним, почему, по нашему мнению, использовать MySQL для хранения пар ключ-значение лучше, чем большинство специализированных NoSQL-систем, а также предоставим инструкции для использования MySQL.
Читать дальше →
Total votes 39: ↑21 and ↓18 +3
Views 17K
Comments 20

Чередование выборки в MySQL

MySQL *
Всем привет! Сегодня встала интересная задача по выборке данных, решением которой я решил поделиться.

Итак, дано:

Две таблицы — shops и products

Грубо говоря — площадка, где разные магазины размещают свои товары.
И вот, встала необходимость сделать на главной странице выдачу товаров, но так, чтоб пользователь не видел кучу товаров одного магазина. Магазины надо чередовать.
Читать дальше →
Total votes 17: ↑12 and ↓5 +7
Views 9.1K
Comments 37