metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-12-16 09:43 am

Prepare запросов

Использование MySQL как NoSQL

Они там в начале профилируют выполнение поиска по первичному ключу в MySQL (в противовес летающему memcached) и у меня мозг споткнулся на следующей фразе:
MYSQLparse() и MYSQLlex() были вызваны в процессе разбора SQL запроса. make_join_statistics() и JOIN::optimize() были вызваны в фазе оптимизации запроса. Это и есть "SQL-оверхед".

Это, простите, как? Запрос для поиска по первичному ключу парсится и препарится каждый раз заново, использовать подготовленные заранее запросы невозможно или авторы этого не знают?

[identity profile] plumqqz.livejournal.com 2010-12-16 07:56 am (UTC)(link)
Это, простите, как? Запрос для поиска по первичному ключу парсится и препарится каждый раз заново, использовать подготовленные заранее запросы невозможно или авторы этого не знают?

Similis simili gaudet, не понимаю, что Вас удивляет.

[identity profile] molnij.livejournal.com 2010-12-16 08:41 am (UTC)(link)
Если запускается с параллельных потоков в разных сессиях, то не факт, что удастся использовать. Собственно они и сделали в результате промежуточный слой, который держал соединение и позволял использовать один и тот же разобранный запрос.

[identity profile] gds.livejournal.com 2010-12-16 09:27 am (UTC)(link)
раньше mysql не умел prepared statements. Клиент склеивал sql, слал на сервер, так всё и работало. Интересно, это уже поправили, или как раз это связано с обсуждаемой проблемой?